diff options
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); |