Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1ed7dec9 authored by Sally Qi's avatar Sally Qi
Browse files

[Lut] in client composition, we should pass hwc.luts into lutShader to

render the layer

Bug: 380894872
Test: libcompositionengine_test
Flag: EXEMPT the lut is protected under the pointer

Change-Id: I3c326ba4dd3e4c42dcdd776a229495d446f97562
parent a17adea5
Loading
Loading
Loading
Loading
+2 −0
Original line number Original line Diff line number Diff line
@@ -121,6 +121,8 @@ public:


        // True if layers with 170M dataspace should be overridden to sRGB.
        // True if layers with 170M dataspace should be overridden to sRGB.
        const bool treat170mAsSrgb;
        const bool treat170mAsSrgb;

        std::shared_ptr<gui::DisplayLuts> luts;
    };
    };


    // A superset of LayerSettings required by RenderEngine to compose a layer
    // A superset of LayerSettings required by RenderEngine to compose a layer
+3 −1
Original line number Original line Diff line number Diff line
@@ -1564,7 +1564,9 @@ std::vector<LayerFE::LayerSettings> Output::generateClientCompositionRequests(
                                       .clearContent = !clientComposition,
                                       .clearContent = !clientComposition,
                                       .blurSetting = blurSetting,
                                       .blurSetting = blurSetting,
                                       .whitePointNits = layerState.whitePointNits,
                                       .whitePointNits = layerState.whitePointNits,
                                       .treat170mAsSrgb = outputState.treat170mAsSrgb};
                                       .treat170mAsSrgb = outputState.treat170mAsSrgb,
                                       .luts = layer->getState().hwc ? layer->getState().hwc->luts
                                                                     : nullptr};
                if (auto clientCompositionSettings =
                if (auto clientCompositionSettings =
                            layerFE.prepareClientComposition(targetSettings)) {
                            layerFE.prepareClientComposition(targetSettings)) {
                    clientCompositionLayers.push_back(std::move(*clientCompositionSettings));
                    clientCompositionLayers.push_back(std::move(*clientCompositionSettings));
+1 −1
Original line number Original line Diff line number Diff line
@@ -173,7 +173,7 @@ std::optional<compositionengine::LayerFE::LayerSettings> LayerFE::prepareClientC
    layerSettings.edgeExtensionEffect = mSnapshot->edgeExtensionEffect;
    layerSettings.edgeExtensionEffect = mSnapshot->edgeExtensionEffect;
    // Record the name of the layer for debugging further down the stack.
    // Record the name of the layer for debugging further down the stack.
    layerSettings.name = mSnapshot->name;
    layerSettings.name = mSnapshot->name;
    layerSettings.luts = mSnapshot->luts;
    layerSettings.luts = mSnapshot->luts ? mSnapshot->luts : targetSettings.luts;


    if (hasEffect() && !hasBufferOrSidebandStream()) {
    if (hasEffect() && !hasBufferOrSidebandStream()) {
        prepareEffectsClientComposition(layerSettings, targetSettings);
        prepareEffectsClientComposition(layerSettings, targetSettings);