summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Sally Qi <sallyqi@google.com> 2025-01-13 06:26:57 -0800
committer Android (Google) Code Review <android-gerrit@google.com> 2025-01-13 06:26:57 -0800
commitf9fc9e74167954f1e6d10c45bb65552a684bc207 (patch)
tree9360012aeece70d5ea389f03f99e9c9b726b84f3
parenta29a2d1431f5b3b2c18cd10e7fedfe01f75d5999 (diff)
parent1ed7dec9b3a047e6d4c61a019ba7934f737cf900 (diff)
Merge "[Lut] in client composition, we should pass hwc.luts into lutShader to render the layer" into main
-rw-r--r--services/surfaceflinger/CompositionEngine/include/compositionengine/LayerFE.h2
-rw-r--r--services/surfaceflinger/CompositionEngine/src/Output.cpp4
-rw-r--r--services/surfaceflinger/LayerFE.cpp2
3 files changed, 6 insertions, 2 deletions
diff --git a/services/surfaceflinger/CompositionEngine/include/compositionengine/LayerFE.h b/services/surfaceflinger/CompositionEngine/include/compositionengine/LayerFE.h
index a982d3e868..e876693498 100644
--- a/services/surfaceflinger/CompositionEngine/include/compositionengine/LayerFE.h
+++ b/services/surfaceflinger/CompositionEngine/include/compositionengine/LayerFE.h
@@ -125,6 +125,8 @@ public:
// True if layers with 170M dataspace should be overridden to sRGB.
const bool treat170mAsSrgb;
+
+ std::shared_ptr<gui::DisplayLuts> luts;
};
// A superset of LayerSettings required by RenderEngine to compose a layer
diff --git a/services/surfaceflinger/CompositionEngine/src/Output.cpp b/services/surfaceflinger/CompositionEngine/src/Output.cpp
index 734d76404e..de1d13a8d1 100644
--- a/services/surfaceflinger/CompositionEngine/src/Output.cpp
+++ b/services/surfaceflinger/CompositionEngine/src/Output.cpp
@@ -1564,7 +1564,9 @@ std::vector<LayerFE::LayerSettings> Output::generateClientCompositionRequests(
.clearContent = !clientComposition,
.blurSetting = blurSetting,
.whitePointNits = layerState.whitePointNits,
- .treat170mAsSrgb = outputState.treat170mAsSrgb};
+ .treat170mAsSrgb = outputState.treat170mAsSrgb,
+ .luts = layer->getState().hwc ? layer->getState().hwc->luts
+ : nullptr};
if (auto clientCompositionSettings =
layerFE.prepareClientComposition(targetSettings)) {
clientCompositionLayers.push_back(std::move(*clientCompositionSettings));
diff --git a/services/surfaceflinger/LayerFE.cpp b/services/surfaceflinger/LayerFE.cpp
index 617dfbe9c0..725a782177 100644
--- a/services/surfaceflinger/LayerFE.cpp
+++ b/services/surfaceflinger/LayerFE.cpp
@@ -173,7 +173,7 @@ std::optional<compositionengine::LayerFE::LayerSettings> LayerFE::prepareClientC
layerSettings.edgeExtensionEffect = mSnapshot->edgeExtensionEffect;
// Record the name of the layer for debugging further down the stack.
layerSettings.name = mSnapshot->name;
- layerSettings.luts = mSnapshot->luts;
+ layerSettings.luts = mSnapshot->luts ? mSnapshot->luts : targetSettings.luts;
if (hasEffect() && !hasBufferOrSidebandStream()) {
prepareEffectsClientComposition(layerSettings, targetSettings);