Loading services/surfaceflinger/CompositionEngine/include/compositionengine/Output.h +2 −1 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading services/surfaceflinger/CompositionEngine/include/compositionengine/impl/Display.h +1 −0 Original line number Diff line number Diff line Loading @@ -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; Loading services/surfaceflinger/CompositionEngine/include/compositionengine/impl/Output.h +4 −2 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading @@ -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( Loading services/surfaceflinger/CompositionEngine/include/compositionengine/mock/Output.h +2 −1 Original line number Diff line number Diff line Loading @@ -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*>&)); Loading services/surfaceflinger/CompositionEngine/src/Display.cpp +9 −0 Original line number Diff line number Diff line Loading @@ -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 Loading
services/surfaceflinger/CompositionEngine/include/compositionengine/Output.h +2 −1 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading
services/surfaceflinger/CompositionEngine/include/compositionengine/impl/Display.h +1 −0 Original line number Diff line number Diff line Loading @@ -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; Loading
services/surfaceflinger/CompositionEngine/include/compositionengine/impl/Output.h +4 −2 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading @@ -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( Loading
services/surfaceflinger/CompositionEngine/include/compositionengine/mock/Output.h +2 −1 Original line number Diff line number Diff line Loading @@ -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*>&)); Loading
services/surfaceflinger/CompositionEngine/src/Display.cpp +9 −0 Original line number Diff line number Diff line Loading @@ -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