diff options
| author | 2019-04-03 21:15:43 +0000 | |
|---|---|---|
| committer | 2019-04-03 21:15:43 +0000 | |
| commit | ee0227ed8449d16f661bb0529082929408e4ec09 (patch) | |
| tree | 3281f33c3f84ebbc3755b884e7decb6f8cb9296e | |
| parent | e6312c8d7742345655524bd9242e8ff7abde19d9 (diff) | |
| parent | c7e8ce8f8dc3f6b9546b7dc1fa6a9965225259c1 (diff) | |
Merge "Actually apply color transform for GPU comp."
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 <cstdint> +#include <math/mat4.h> #include <ui/GraphicTypes.h> #include <ui/Rect.h> #include <ui/Region.h> @@ -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 0698e2c550..1536601274 100644 --- a/services/surfaceflinger/SurfaceFlinger.cpp +++ b/services/surfaceflinger/SurfaceFlinger.cpp @@ -3255,7 +3255,6 @@ bool SurfaceFlinger::doComposeSurfaces(const sp<DisplayDevice>& displayDevice, const bool hasClientComposition = getHwComposer().hasClientComposition(displayId); ATRACE_INT("hasClientComposition", hasClientComposition); - mat4 colorMatrix; bool applyColorMatrix = false; renderengine::DisplaySettings clientCompositionDisplay; @@ -3314,7 +3313,7 @@ bool SurfaceFlinger::doComposeSurfaces(const sp<DisplayDevice>& displayDevice, // Compute the global color transform matrix. applyColorMatrix = !hasDeviceComposition && !skipClientColorTransform; if (applyColorMatrix) { - clientCompositionDisplay.colorTransform = colorMatrix; + clientCompositionDisplay.colorTransform = displayState.colorTransformMat; } } |