Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3a4f401b authored by Chia-I Wu's avatar Chia-I Wu
Browse files

renderengine: clamp XYZ to [0.0, 1.0] in shaders

texture2D can return strange negative values for some YUV textures.
That should be a driver bug.  But with scRGB and floating-point
formats, we cannot be sure that colors will always stay non-negative
after conversion to XYZ.  We need to clamp XYZ to [0.0, 1.0] such
that the following color processing behaves as expected.

Bug: 116864006
Test: manual
Change-Id: I8f432c63b800edc11ce3d86536192a5547144ca5
parent 9bdd64de
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -574,7 +574,7 @@ String8 ProgramCache::generateFragmentShader(const Key& needs) {
            fs << "uniform mat4 inputTransformMatrix;";
            fs << R"__SHADER__(
                highp vec3 InputTransform(const highp vec3 color) {
                    return vec3(inputTransformMatrix * vec4(color, 1.0));
                    return clamp(vec3(inputTransformMatrix * vec4(color, 1.0)), 0.0, 1.0);
                }
            )__SHADER__";
        } else {