diff options
Diffstat (limited to 'libs/shaders/shaders.cpp')
| -rw-r--r-- | libs/shaders/shaders.cpp | 9 | 
1 files changed, 7 insertions, 2 deletions
diff --git a/libs/shaders/shaders.cpp b/libs/shaders/shaders.cpp index 62745dc8d5..f80e93f6f8 100644 --- a/libs/shaders/shaders.cpp +++ b/libs/shaders/shaders.cpp @@ -469,12 +469,17 @@ std::vector<tonemap::ShaderUniform> buildLinearEffectUniforms(          float currentDisplayLuminanceNits, float maxLuminance, AHardwareBuffer* buffer,          aidl::android::hardware::graphics::composer3::RenderIntent renderIntent) {      std::vector<tonemap::ShaderUniform> uniforms; -    if (linearEffect.inputDataspace == linearEffect.outputDataspace) { + +    const ui::Dataspace inputDataspace = linearEffect.fakeInputDataspace == ui::Dataspace::UNKNOWN +            ? linearEffect.inputDataspace +            : linearEffect.fakeInputDataspace; + +    if (inputDataspace == linearEffect.outputDataspace) {          uniforms.push_back({.name = "in_rgbToXyz", .value = buildUniformValue<mat4>(mat4())});          uniforms.push_back(                  {.name = "in_xyzToRgb", .value = buildUniformValue<mat4>(colorTransform)});      } else { -        ColorSpace inputColorSpace = toColorSpace(linearEffect.inputDataspace); +        ColorSpace inputColorSpace = toColorSpace(inputDataspace);          ColorSpace outputColorSpace = toColorSpace(linearEffect.outputDataspace);          uniforms.push_back({.name = "in_rgbToXyz",                              .value = buildUniformValue<mat4>(mat4(inputColorSpace.getRGBtoXYZ()))});  |