From c7e8ce8f8dc3f6b9546b7dc1fa6a9965225259c1 Mon Sep 17 00:00:00 2001 From: Alec Mouri Date: Tue, 2 Apr 2019 12:28:05 -0700 Subject: Actually apply color transform for GPU comp. Bug: 129573282 Test: boots Change-Id: I0a2f9c87fd2eb09ea9c343d5ec9b309644aaeb8b --- .../include/compositionengine/impl/OutputCompositionState.h | 4 ++++ services/surfaceflinger/CompositionEngine/src/Output.cpp | 1 + services/surfaceflinger/SurfaceFlinger.cpp | 3 +-- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/services/surfaceflinger/CompositionEngine/include/compositionengine/impl/OutputCompositionState.h b/services/surfaceflinger/CompositionEngine/include/compositionengine/impl/OutputCompositionState.h index 024ed45906..0c47eb5a01 100644 --- a/services/surfaceflinger/CompositionEngine/include/compositionengine/impl/OutputCompositionState.h +++ b/services/surfaceflinger/CompositionEngine/include/compositionengine/impl/OutputCompositionState.h @@ -18,6 +18,7 @@ #include +#include #include #include #include @@ -78,6 +79,9 @@ struct OutputCompositionState { // 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 d22bdaf625..2893031ad9 100644 --- a/services/surfaceflinger/CompositionEngine/src/Output.cpp +++ b/services/surfaceflinger/CompositionEngine/src/Output.cpp @@ -98,6 +98,7 @@ void Output::setColorTransform(const mat4& transform) { } mState.colorTransform = newColorTransform; + mState.colorTransformMat = transform; dirtyEntireOutput(); } diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp index 0345bafee6..787f12c49a 100644 --- a/services/surfaceflinger/SurfaceFlinger.cpp +++ b/services/surfaceflinger/SurfaceFlinger.cpp @@ -3288,7 +3288,6 @@ bool SurfaceFlinger::doComposeSurfaces(const sp& displayDevice, const bool hasClientComposition = getHwComposer().hasClientComposition(displayId); ATRACE_INT("hasClientComposition", hasClientComposition); - mat4 colorMatrix; bool applyColorMatrix = false; renderengine::DisplaySettings clientCompositionDisplay; @@ -3346,7 +3345,7 @@ bool SurfaceFlinger::doComposeSurfaces(const sp& displayDevice, // Compute the global color transform matrix. applyColorMatrix = !hasDeviceComposition && !skipClientColorTransform; if (applyColorMatrix) { - clientCompositionDisplay.colorTransform = colorMatrix; + clientCompositionDisplay.colorTransform = displayState.colorTransformMat; } } -- cgit v1.2.3-59-g8ed1b