summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Alec Mouri <alecmouri@google.com> 2019-04-03 21:15:43 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2019-04-03 21:15:43 +0000
commitee0227ed8449d16f661bb0529082929408e4ec09 (patch)
tree3281f33c3f84ebbc3755b884e7decb6f8cb9296e
parente6312c8d7742345655524bd9242e8ff7abde19d9 (diff)
parentc7e8ce8f8dc3f6b9546b7dc1fa6a9965225259c1 (diff)
Merge "Actually apply color transform for GPU comp."
-rw-r--r--services/surfaceflinger/CompositionEngine/include/compositionengine/impl/OutputCompositionState.h4
-rw-r--r--services/surfaceflinger/CompositionEngine/src/Output.cpp1
-rw-r--r--services/surfaceflinger/SurfaceFlinger.cpp3
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;
}
}