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

Commit 8b60f625 authored by Lynn Yeh's avatar Lynn Yeh Committed by Android (Google) Code Review
Browse files

Merge "Output::presentFrameAndReleaseLayers: flush pending commands for OFF displays" into 24D1-dev

parents c444764a c099400b
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -306,7 +306,7 @@ protected:
    virtual void finishFrame(GpuCompositionResult&&) = 0;
    virtual std::optional<base::unique_fd> composeSurfaces(
            const Region&, std::shared_ptr<renderengine::ExternalTexture>, base::unique_fd&) = 0;
    virtual void presentFrameAndReleaseLayers() = 0;
    virtual void presentFrameAndReleaseLayers(bool flushEvenWhenDisabled) = 0;
    virtual void renderCachedSets(const CompositionRefreshArgs&) = 0;
    virtual bool chooseCompositionStrategy(
            std::optional<android::HWComposer::DeviceRequestedChanges>*) = 0;
@@ -314,6 +314,7 @@ protected:
            const std::optional<android::HWComposer::DeviceRequestedChanges>& changes) = 0;
    virtual bool getSkipColorTransform() const = 0;
    virtual FrameFences presentFrame() = 0;
    virtual void executeCommands() = 0;
    virtual std::vector<LayerFE::LayerSettings> generateClientCompositionRequests(
            bool supportsProtectedContent, ui::Dataspace outputDataspace,
            std::vector<LayerFE*> &outLayerRef) = 0;
+1 −0
Original line number Diff line number Diff line
@@ -60,6 +60,7 @@ public:
    void applyCompositionStrategy(const std::optional<DeviceRequestedChanges>&) override;
    bool getSkipColorTransform() const override;
    compositionengine::Output::FrameFences presentFrame() override;
    void executeCommands() override;
    void setExpensiveRenderingExpected(bool) override;
    void finishFrame(GpuCompositionResult&&) override;
    bool supportsOffloadPresent() const override;
+4 −2
Original line number Diff line number Diff line
@@ -104,7 +104,7 @@ public:
    std::optional<base::unique_fd> composeSurfaces(const Region&,
                                                   std::shared_ptr<renderengine::ExternalTexture>,
                                                   base::unique_fd&) override;
    void presentFrameAndReleaseLayers() override;
    void presentFrameAndReleaseLayers(bool flushEvenWhenDisabled) override;
    void renderCachedSets(const CompositionRefreshArgs&) override;
    void cacheClientCompositionRequests(uint32_t) override;
    bool canPredictCompositionStrategy(const CompositionRefreshArgs&) override;
@@ -123,7 +123,8 @@ public:
    virtual std::future<bool> chooseCompositionStrategyAsync(
            std::optional<android::HWComposer::DeviceRequestedChanges>*);
    virtual void resetCompositionStrategy();
    virtual ftl::Future<std::monostate> presentFrameAndReleaseLayersAsync();
    virtual ftl::Future<std::monostate> presentFrameAndReleaseLayersAsync(
            bool flushEvenWhenDisabled);

protected:
    std::unique_ptr<compositionengine::OutputLayer> createOutputLayer(const sp<LayerFE>&) const;
@@ -137,6 +138,7 @@ protected:
    void applyCompositionStrategy(const std::optional<DeviceRequestedChanges>&) override{};
    bool getSkipColorTransform() const override;
    compositionengine::Output::FrameFences presentFrame() override;
    void executeCommands() override {}
    virtual renderengine::DisplaySettings generateClientCompositionDisplaySettings(
            const std::shared_ptr<renderengine::ExternalTexture>& buffer) const;
    std::vector<LayerFE::LayerSettings> generateClientCompositionRequests(
+2 −1
Original line number Diff line number Diff line
@@ -121,9 +121,10 @@ public:
                                                base::unique_fd&));
    MOCK_CONST_METHOD0(getSkipColorTransform, bool());

    MOCK_METHOD0(presentFrameAndReleaseLayers, void());
    MOCK_METHOD(void, presentFrameAndReleaseLayers, (bool flushEvenWhenDisabled));
    MOCK_METHOD1(renderCachedSets, void(const CompositionRefreshArgs&));
    MOCK_METHOD0(presentFrame, compositionengine::Output::FrameFences());
    MOCK_METHOD(void, executeCommands, ());

    MOCK_METHOD3(generateClientCompositionRequests,
                 std::vector<LayerFE::LayerSettings>(bool, ui::Dataspace, std::vector<compositionengine::LayerFE*>&));
+9 −0
Original line number Diff line number Diff line
@@ -365,6 +365,15 @@ void Display::applyClientTargetRequests(const ClientTargetProperty& clientTarget
            static_cast<ui::PixelFormat>(clientTargetProperty.clientTargetProperty.pixelFormat));
}

void Display::executeCommands() {
    const auto halDisplayIdOpt = HalDisplayId::tryCast(mId);
    if (mIsDisconnected || !halDisplayIdOpt) {
        return;
    }

    getCompositionEngine().getHwComposer().executeCommands(*halDisplayIdOpt);
}

compositionengine::Output::FrameFences Display::presentFrame() {
    auto fences = impl::Output::presentFrame();

Loading