From cd371d8618bafe83b90a73b1e782b70704576e68 Mon Sep 17 00:00:00 2001 From: Xaver Hugl Date: Tue, 13 Aug 2024 17:10:22 +0200 Subject: [PATCH] opengl/glshader: set all color management uniforms, even if some calls fail A driver might optimize out a uniform, in which case setting it will fail. That does not however mean that the rest can be ignored too or that the shader won't work because of that --- src/opengl/glshader.cpp | 20 ++++++++++---------- src/opengl/glshader.h | 2 +- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/opengl/glshader.cpp b/src/opengl/glshader.cpp index f1c3572aef..e4234e6baa 100644 --- a/src/opengl/glshader.cpp +++ b/src/opengl/glshader.cpp @@ -469,15 +469,15 @@ QMatrix4x4 GLShader::getUniformMatrix4x4(const char *name) } } -bool GLShader::setColorspaceUniforms(const ColorDescription &src, const ColorDescription &dst, RenderingIntent intent) -{ - return setUniform(Mat4Uniform::ColorimetryTransformation, src.toOther(dst, intent)) - && setUniform(IntUniform::SourceNamedTransferFunction, src.transferFunction().type) - && setUniform(Vec2Uniform::SourceTransferFunctionParams, QVector2D(src.transferFunction().minLuminance, src.transferFunction().maxLuminance - src.transferFunction().minLuminance)) - && setUniform(FloatUniform::SourceReferenceLuminance, src.referenceLuminance()) - && setUniform(IntUniform::DestinationNamedTransferFunction, dst.transferFunction().type) - && setUniform(Vec2Uniform::DestinationTransferFunctionParams, QVector2D(dst.transferFunction().minLuminance, dst.transferFunction().maxLuminance - dst.transferFunction().minLuminance)) - && setUniform(FloatUniform::DestinationReferenceLuminance, dst.referenceLuminance()) - && setUniform(FloatUniform::MaxDestinationLuminance, dst.maxHdrLuminance().value_or(10'000)); +void GLShader::setColorspaceUniforms(const ColorDescription &src, const ColorDescription &dst, RenderingIntent intent) +{ + setUniform(Mat4Uniform::ColorimetryTransformation, src.toOther(dst, intent)); + setUniform(IntUniform::SourceNamedTransferFunction, src.transferFunction().type); + setUniform(Vec2Uniform::SourceTransferFunctionParams, QVector2D(src.transferFunction().minLuminance, src.transferFunction().maxLuminance - src.transferFunction().minLuminance)); + setUniform(FloatUniform::SourceReferenceLuminance, src.referenceLuminance()); + setUniform(IntUniform::DestinationNamedTransferFunction, dst.transferFunction().type); + setUniform(Vec2Uniform::DestinationTransferFunctionParams, QVector2D(dst.transferFunction().minLuminance, dst.transferFunction().maxLuminance - dst.transferFunction().minLuminance)); + setUniform(FloatUniform::DestinationReferenceLuminance, dst.referenceLuminance()); + setUniform(FloatUniform::MaxDestinationLuminance, dst.maxHdrLuminance().value_or(10'000)); } } diff --git a/src/opengl/glshader.h b/src/opengl/glshader.h index 2bd6599775..8e35087448 100644 --- a/src/opengl/glshader.h +++ b/src/opengl/glshader.h @@ -138,7 +138,7 @@ public: bool setUniform(ColorUniform uniform, const QVector4D &value); bool setUniform(ColorUniform uniform, const QColor &value); - bool setColorspaceUniforms(const ColorDescription &src, const ColorDescription &dst, RenderingIntent intent); + void setColorspaceUniforms(const ColorDescription &src, const ColorDescription &dst, RenderingIntent intent); protected: GLShader(unsigned int flags = NoFlags);