diff options
author | 2025-01-13 06:26:57 -0800 | |
---|---|---|
committer | 2025-01-13 06:26:57 -0800 | |
commit | f9fc9e74167954f1e6d10c45bb65552a684bc207 (patch) | |
tree | 9360012aeece70d5ea389f03f99e9c9b726b84f3 | |
parent | a29a2d1431f5b3b2c18cd10e7fedfe01f75d5999 (diff) | |
parent | 1ed7dec9b3a047e6d4c61a019ba7934f737cf900 (diff) |
Merge "[Lut] in client composition, we should pass hwc.luts into lutShader to render the layer" into main
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); |