Loading services/surfaceflinger/CompositionEngine/include/compositionengine/CompositionRefreshArgs.h +11 −0 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ #include <compositionengine/Display.h> #include <compositionengine/Layer.h> #include <compositionengine/OutputColorSetting.h> #include <math/mat4.h> namespace android::compositionengine { Loading Loading @@ -52,6 +53,16 @@ struct CompositionRefreshArgs { // Forces a color mode on the outputs being refreshed ui::ColorMode forceOutputColorMode{ui::ColorMode::NATIVE}; // If true, there was a geometry update this frame bool updatingGeometryThisFrame{false}; // The color matrix to use for this // frame. Only set if the color transform is changing this frame. std::optional<mat4> colorTransformMatrix; // If true, client composition is always used. bool devOptForceClientComposition{false}; // If set, causes the dirty regions to flash with the delay std::optional<std::chrono::microseconds> devOptFlashDirtyRegionsDelay; }; Loading services/surfaceflinger/CompositionEngine/include/compositionengine/Output.h +13 −9 Original line number Diff line number Diff line Loading @@ -21,7 +21,6 @@ #include <string> #include <unordered_map> #include <math/mat4.h> #include <renderengine/LayerSettings.h> #include <ui/Fence.h> #include <ui/GraphicTypes.h> Loading @@ -44,6 +43,7 @@ class RenderSurface; class OutputLayer; struct CompositionRefreshArgs; struct LayerFECompositionState; namespace impl { struct OutputCompositionState; Loading @@ -56,6 +56,7 @@ class Output { public: using OutputLayers = std::vector<std::unique_ptr<compositionengine::OutputLayer>>; using ReleasedLayers = std::vector<wp<LayerFE>>; using UniqueFELayerStateMap = std::unordered_map<LayerFE*, LayerFECompositionState*>; struct FrameFences { sp<Fence> presentFence{Fence::NO_FENCE}; Loading Loading @@ -90,9 +91,6 @@ public: // belongsInOutput for full details. virtual void setLayerStackFilter(uint32_t layerStackId, bool isInternal) = 0; // Sets the color transform matrix to use virtual void setColorTransform(const mat4&) = 0; // Sets the output color mode virtual void setColorProfile(const ColorProfile&) = 0; Loading Loading @@ -159,20 +157,26 @@ public: // Takes (moves) the set of layers being released this frame. virtual ReleasedLayers takeReleasedLayers() = 0; // Prepare the output, updating the OutputLayers used in the output virtual void prepare(CompositionRefreshArgs&) = 0; // Presents the output, finalizing all composition details virtual void present(const compositionengine::CompositionRefreshArgs&) = 0; virtual void present(const CompositionRefreshArgs&) = 0; // Updates the color mode used on this output virtual void updateColorProfile(const CompositionRefreshArgs&) = 0; // Latches the front-end layer state for each output layer virtual void updateLayerStateFromFE(const CompositionRefreshArgs&) const = 0; protected: virtual void setDisplayColorProfile(std::unique_ptr<DisplayColorProfile>) = 0; virtual void setRenderSurface(std::unique_ptr<RenderSurface>) = 0; virtual void updateAndWriteCompositionState(const CompositionRefreshArgs&) = 0; virtual void setColorTransform(const CompositionRefreshArgs&) = 0; virtual void updateColorProfile(const CompositionRefreshArgs&) = 0; virtual void beginFrame() = 0; virtual void prepareFrame() = 0; virtual void devOptRepaintFlash(const compositionengine::CompositionRefreshArgs&) = 0; virtual void finishFrame(const compositionengine::CompositionRefreshArgs&) = 0; virtual void devOptRepaintFlash(const CompositionRefreshArgs&) = 0; virtual void finishFrame(const CompositionRefreshArgs&) = 0; virtual std::optional<base::unique_fd> composeSurfaces(const Region&) = 0; virtual void postFramebuffer() = 0; virtual void chooseCompositionStrategy() = 0; Loading services/surfaceflinger/CompositionEngine/include/compositionengine/impl/CompositionEngine.h +2 −0 Original line number Diff line number Diff line Loading @@ -45,6 +45,8 @@ public: void preComposition(CompositionRefreshArgs&) override; void updateLayerStateFromFE(CompositionRefreshArgs& args); // Testing void setNeedsAnotherUpdateForTest(bool); Loading services/surfaceflinger/CompositionEngine/include/compositionengine/impl/Display.h +1 −1 Original line number Diff line number Diff line Loading @@ -40,7 +40,7 @@ public: // compositionengine::Output overrides void dump(std::string&) const override; void setColorTransform(const mat4&) override; void setColorTransform(const compositionengine::CompositionRefreshArgs&) override; void setColorProfile(const ColorProfile&) override; void chooseCompositionStrategy() override; bool getSkipColorTransform() const override; Loading services/surfaceflinger/CompositionEngine/include/compositionengine/impl/Output.h +4 −2 Original line number Diff line number Diff line Loading @@ -44,7 +44,7 @@ public: void setBounds(const ui::Size&) override; void setLayerStackFilter(uint32_t layerStackId, bool isInternal) override; void setColorTransform(const mat4&) override; void setColorTransform(const compositionengine::CompositionRefreshArgs&) override; void setColorProfile(const ColorProfile&) override; void dump(std::string&) const override; Loading Loading @@ -75,10 +75,12 @@ public: void setReleasedLayers(ReleasedLayers&&) override; ReleasedLayers takeReleasedLayers() override; void prepare(compositionengine::CompositionRefreshArgs&) override; void present(const compositionengine::CompositionRefreshArgs&) override; void updateLayerStateFromFE(const CompositionRefreshArgs&) const override; void updateAndWriteCompositionState(const compositionengine::CompositionRefreshArgs&) override; void updateColorProfile(const compositionengine::CompositionRefreshArgs&) override; void beginFrame() override; void prepareFrame() override; void devOptRepaintFlash(const compositionengine::CompositionRefreshArgs&) override; Loading Loading
services/surfaceflinger/CompositionEngine/include/compositionengine/CompositionRefreshArgs.h +11 −0 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ #include <compositionengine/Display.h> #include <compositionengine/Layer.h> #include <compositionengine/OutputColorSetting.h> #include <math/mat4.h> namespace android::compositionengine { Loading Loading @@ -52,6 +53,16 @@ struct CompositionRefreshArgs { // Forces a color mode on the outputs being refreshed ui::ColorMode forceOutputColorMode{ui::ColorMode::NATIVE}; // If true, there was a geometry update this frame bool updatingGeometryThisFrame{false}; // The color matrix to use for this // frame. Only set if the color transform is changing this frame. std::optional<mat4> colorTransformMatrix; // If true, client composition is always used. bool devOptForceClientComposition{false}; // If set, causes the dirty regions to flash with the delay std::optional<std::chrono::microseconds> devOptFlashDirtyRegionsDelay; }; Loading
services/surfaceflinger/CompositionEngine/include/compositionengine/Output.h +13 −9 Original line number Diff line number Diff line Loading @@ -21,7 +21,6 @@ #include <string> #include <unordered_map> #include <math/mat4.h> #include <renderengine/LayerSettings.h> #include <ui/Fence.h> #include <ui/GraphicTypes.h> Loading @@ -44,6 +43,7 @@ class RenderSurface; class OutputLayer; struct CompositionRefreshArgs; struct LayerFECompositionState; namespace impl { struct OutputCompositionState; Loading @@ -56,6 +56,7 @@ class Output { public: using OutputLayers = std::vector<std::unique_ptr<compositionengine::OutputLayer>>; using ReleasedLayers = std::vector<wp<LayerFE>>; using UniqueFELayerStateMap = std::unordered_map<LayerFE*, LayerFECompositionState*>; struct FrameFences { sp<Fence> presentFence{Fence::NO_FENCE}; Loading Loading @@ -90,9 +91,6 @@ public: // belongsInOutput for full details. virtual void setLayerStackFilter(uint32_t layerStackId, bool isInternal) = 0; // Sets the color transform matrix to use virtual void setColorTransform(const mat4&) = 0; // Sets the output color mode virtual void setColorProfile(const ColorProfile&) = 0; Loading Loading @@ -159,20 +157,26 @@ public: // Takes (moves) the set of layers being released this frame. virtual ReleasedLayers takeReleasedLayers() = 0; // Prepare the output, updating the OutputLayers used in the output virtual void prepare(CompositionRefreshArgs&) = 0; // Presents the output, finalizing all composition details virtual void present(const compositionengine::CompositionRefreshArgs&) = 0; virtual void present(const CompositionRefreshArgs&) = 0; // Updates the color mode used on this output virtual void updateColorProfile(const CompositionRefreshArgs&) = 0; // Latches the front-end layer state for each output layer virtual void updateLayerStateFromFE(const CompositionRefreshArgs&) const = 0; protected: virtual void setDisplayColorProfile(std::unique_ptr<DisplayColorProfile>) = 0; virtual void setRenderSurface(std::unique_ptr<RenderSurface>) = 0; virtual void updateAndWriteCompositionState(const CompositionRefreshArgs&) = 0; virtual void setColorTransform(const CompositionRefreshArgs&) = 0; virtual void updateColorProfile(const CompositionRefreshArgs&) = 0; virtual void beginFrame() = 0; virtual void prepareFrame() = 0; virtual void devOptRepaintFlash(const compositionengine::CompositionRefreshArgs&) = 0; virtual void finishFrame(const compositionengine::CompositionRefreshArgs&) = 0; virtual void devOptRepaintFlash(const CompositionRefreshArgs&) = 0; virtual void finishFrame(const CompositionRefreshArgs&) = 0; virtual std::optional<base::unique_fd> composeSurfaces(const Region&) = 0; virtual void postFramebuffer() = 0; virtual void chooseCompositionStrategy() = 0; Loading
services/surfaceflinger/CompositionEngine/include/compositionengine/impl/CompositionEngine.h +2 −0 Original line number Diff line number Diff line Loading @@ -45,6 +45,8 @@ public: void preComposition(CompositionRefreshArgs&) override; void updateLayerStateFromFE(CompositionRefreshArgs& args); // Testing void setNeedsAnotherUpdateForTest(bool); Loading
services/surfaceflinger/CompositionEngine/include/compositionengine/impl/Display.h +1 −1 Original line number Diff line number Diff line Loading @@ -40,7 +40,7 @@ public: // compositionengine::Output overrides void dump(std::string&) const override; void setColorTransform(const mat4&) override; void setColorTransform(const compositionengine::CompositionRefreshArgs&) override; void setColorProfile(const ColorProfile&) override; void chooseCompositionStrategy() override; bool getSkipColorTransform() const override; Loading
services/surfaceflinger/CompositionEngine/include/compositionengine/impl/Output.h +4 −2 Original line number Diff line number Diff line Loading @@ -44,7 +44,7 @@ public: void setBounds(const ui::Size&) override; void setLayerStackFilter(uint32_t layerStackId, bool isInternal) override; void setColorTransform(const mat4&) override; void setColorTransform(const compositionengine::CompositionRefreshArgs&) override; void setColorProfile(const ColorProfile&) override; void dump(std::string&) const override; Loading Loading @@ -75,10 +75,12 @@ public: void setReleasedLayers(ReleasedLayers&&) override; ReleasedLayers takeReleasedLayers() override; void prepare(compositionengine::CompositionRefreshArgs&) override; void present(const compositionengine::CompositionRefreshArgs&) override; void updateLayerStateFromFE(const CompositionRefreshArgs&) const override; void updateAndWriteCompositionState(const compositionengine::CompositionRefreshArgs&) override; void updateColorProfile(const compositionengine::CompositionRefreshArgs&) override; void beginFrame() override; void prepareFrame() override; void devOptRepaintFlash(const compositionengine::CompositionRefreshArgs&) override; Loading