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

Commit 10fc8990 authored by Sally Qi's avatar Sally Qi
Browse files

[Lut screenshot] backend implementation v2

Relnote: real implementation to call getLuts() binder in screenshot.
1. screenshot compositionengine doesn't have valid hwc composer object,
   we modify `setHwComposer` function to allow hwcomposer object to be
   used in multiple places. and set hwcomposer to screenshot
   compositionengine.
2. extend compositionengine::LayerFE::LayerSettings to include layer
   sequence number, and we use this unique value to identify which Luts
   should be used for which layer.

Bug: 352585077
Test: libcompositionengine_test; libsurfaceflinger_unittest
Flag: android.hardware.flags.luts_api

Change-Id: I4ef43bfd515541d23a8de8785f04e3a21c46b410
parent edc71465
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -53,7 +53,7 @@ public:
    createLayerFECompositionState() = 0;
    createLayerFECompositionState() = 0;


    virtual HWComposer& getHwComposer() const = 0;
    virtual HWComposer& getHwComposer() const = 0;
    virtual void setHwComposer(std::unique_ptr<HWComposer>) = 0;
    virtual void setHwComposer(HWComposer*) = 0;


    virtual renderengine::RenderEngine& getRenderEngine() const = 0;
    virtual renderengine::RenderEngine& getRenderEngine() const = 0;
    virtual void setRenderEngine(renderengine::RenderEngine*) = 0;
    virtual void setRenderEngine(renderengine::RenderEngine*) = 0;
+3 −0
Original line number Original line Diff line number Diff line
@@ -131,6 +131,9 @@ public:


        // Currently latched frame number, 0 if invalid.
        // Currently latched frame number, 0 if invalid.
        uint64_t frameNumber = 0;
        uint64_t frameNumber = 0;

        // layer serial number, -1 if invalid.
        int32_t sequence = -1;
    };
    };


    // Describes the states of the release fence. Checking the states allows checks
    // Describes the states of the release fence. Checking the states allows checks
+2 −2
Original line number Original line Diff line number Diff line
@@ -31,7 +31,7 @@ public:
            override;
            override;


    HWComposer& getHwComposer() const override;
    HWComposer& getHwComposer() const override;
    void setHwComposer(std::unique_ptr<HWComposer>) override;
    void setHwComposer(HWComposer*) override;


    renderengine::RenderEngine& getRenderEngine() const override;
    renderengine::RenderEngine& getRenderEngine() const override;
    void setRenderEngine(renderengine::RenderEngine*) override;
    void setRenderEngine(renderengine::RenderEngine*) override;
@@ -59,7 +59,7 @@ public:
    void setNeedsAnotherUpdateForTest(bool);
    void setNeedsAnotherUpdateForTest(bool);


private:
private:
    std::unique_ptr<HWComposer> mHwComposer;
    HWComposer* mHwComposer;
    renderengine::RenderEngine* mRenderEngine;
    renderengine::RenderEngine* mRenderEngine;
    std::shared_ptr<TimeStats> mTimeStats;
    std::shared_ptr<TimeStats> mTimeStats;
    bool mNeedsAnotherUpdate = false;
    bool mNeedsAnotherUpdate = false;
+1 −1
Original line number Original line Diff line number Diff line
@@ -37,7 +37,7 @@ public:
                 std::unique_ptr<compositionengine::LayerFECompositionState>());
                 std::unique_ptr<compositionengine::LayerFECompositionState>());


    MOCK_CONST_METHOD0(getHwComposer, HWComposer&());
    MOCK_CONST_METHOD0(getHwComposer, HWComposer&());
    MOCK_METHOD1(setHwComposer, void(std::unique_ptr<HWComposer>));
    MOCK_METHOD1(setHwComposer, void(HWComposer*));


    MOCK_CONST_METHOD0(getRenderEngine, renderengine::RenderEngine&());
    MOCK_CONST_METHOD0(getRenderEngine, renderengine::RenderEngine&());
    MOCK_METHOD1(setRenderEngine, void(renderengine::RenderEngine*));
    MOCK_METHOD1(setRenderEngine, void(renderengine::RenderEngine*));
+3 −3
Original line number Original line Diff line number Diff line
@@ -58,11 +58,11 @@ CompositionEngine::createLayerFECompositionState() {
}
}


HWComposer& CompositionEngine::getHwComposer() const {
HWComposer& CompositionEngine::getHwComposer() const {
    return *mHwComposer.get();
    return *mHwComposer;
}
}


void CompositionEngine::setHwComposer(std::unique_ptr<HWComposer> hwComposer) {
void CompositionEngine::setHwComposer(HWComposer* hwComposer) {
    mHwComposer = std::move(hwComposer);
    mHwComposer = hwComposer;
}
}


renderengine::RenderEngine& CompositionEngine::getRenderEngine() const {
renderengine::RenderEngine& CompositionEngine::getRenderEngine() const {
Loading