Actually apply color transform for GPU comp.
Bug: 129573282
Test: boots
Change-Id: I0a2f9c87fd2eb09ea9c343d5ec9b309644aaeb8b
diff --git a/services/surfaceflinger/CompositionEngine/include/compositionengine/impl/OutputCompositionState.h b/services/surfaceflinger/CompositionEngine/include/compositionengine/impl/OutputCompositionState.h
index 024ed45..0c47eb5 100644
--- a/services/surfaceflinger/CompositionEngine/include/compositionengine/impl/OutputCompositionState.h
+++ b/services/surfaceflinger/CompositionEngine/include/compositionengine/impl/OutputCompositionState.h
@@ -18,6 +18,7 @@
#include <cstdint>
+#include <math/mat4.h>
#include <ui/GraphicTypes.h>
#include <ui/Rect.h>
#include <ui/Region.h>
@@ -78,6 +79,9 @@
// The color transform to apply
android_color_transform_t colorTransform{HAL_COLOR_TRANSFORM_IDENTITY};
+ // The color transform matrix to apply, corresponding with colorTransform.
+ mat4 colorTransformMat;
+
// Current active color mode
ui::ColorMode colorMode{ui::ColorMode::NATIVE};
diff --git a/services/surfaceflinger/CompositionEngine/src/Output.cpp b/services/surfaceflinger/CompositionEngine/src/Output.cpp
index d22bdaf..2893031 100644
--- a/services/surfaceflinger/CompositionEngine/src/Output.cpp
+++ b/services/surfaceflinger/CompositionEngine/src/Output.cpp
@@ -98,6 +98,7 @@
}
mState.colorTransform = newColorTransform;
+ mState.colorTransformMat = transform;
dirtyEntireOutput();
}
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp
index 0345baf..787f12c 100644
--- a/services/surfaceflinger/SurfaceFlinger.cpp
+++ b/services/surfaceflinger/SurfaceFlinger.cpp
@@ -3288,7 +3288,6 @@
const bool hasClientComposition = getHwComposer().hasClientComposition(displayId);
ATRACE_INT("hasClientComposition", hasClientComposition);
- mat4 colorMatrix;
bool applyColorMatrix = false;
renderengine::DisplaySettings clientCompositionDisplay;
@@ -3346,7 +3345,7 @@
// Compute the global color transform matrix.
applyColorMatrix = !hasDeviceComposition && !skipClientColorTransform;
if (applyColorMatrix) {
- clientCompositionDisplay.colorTransform = colorMatrix;
+ clientCompositionDisplay.colorTransform = displayState.colorTransformMat;
}
}