From 9370f7d19e4a047c72981d5b8f46a24eefd7cc83 Mon Sep 17 00:00:00 2001 From: Xaver Hugl Date: Wed, 16 Oct 2024 16:34:23 +0000 Subject: [PATCH] scene/itemrenderer_opengl: use the color pipeline to check if color transformations are needed Comparing the color descriptions can yield in false negatives, when the luminance levels between two gamma 2.2 encoded images don't match. BUG: 493295 (cherry picked from commit 260cf817b88635aaeb405b6c1d93a6268e606d62) Co-authored-by: Xaver Hugl --- src/scene/itemrenderer_opengl.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/scene/itemrenderer_opengl.cpp b/src/scene/itemrenderer_opengl.cpp index cc02851e49..54d49bbeaa 100644 --- a/src/scene/itemrenderer_opengl.cpp +++ b/src/scene/itemrenderer_opengl.cpp @@ -5,6 +5,7 @@ */ #include "scene/itemrenderer_opengl.h" +#include "core/colorpipeline.h" #include "core/pixelgrid.h" #include "core/rendertarget.h" #include "core/renderviewport.h" @@ -344,7 +345,8 @@ void ItemRendererOpenGL::renderItem(const RenderTarget &renderTarget, const Rend if (renderNode.opacity != 1.0) { traits |= ShaderTrait::Modulate; } - if (renderNode.colorDescription != renderTarget.colorDescription()) { + const auto colorTransformation = ColorPipeline::create(renderNode.colorDescription, renderTarget.colorDescription(), item->renderingIntent()); + if (!colorTransformation.isIdentity()) { traits |= ShaderTrait::TransformColorspace; } if (!shader || traits != lastTraits) {