Loading services/surfaceflinger/CompositionEngine/include/compositionengine/Output.h +5 −1 Original line number Diff line number Diff line Loading @@ -132,15 +132,19 @@ public: // Gets the ordered set of output layers for this output virtual const OutputLayers& getOutputLayersOrderedByZ() const = 0; // Sets the new set of layers being released this frame. // Sets the new set of layers being released this frame virtual void setReleasedLayers(ReleasedLayers&&) = 0; // Takes (moves) the set of layers being released this frame. virtual ReleasedLayers takeReleasedLayers() = 0; // Prepares a frame for display virtual void prepareFrame() = 0; protected: virtual void setDisplayColorProfile(std::unique_ptr<DisplayColorProfile>) = 0; virtual void setRenderSurface(std::unique_ptr<RenderSurface>) = 0; virtual void chooseCompositionStrategy() = 0; }; } // namespace android::compositionengine services/surfaceflinger/CompositionEngine/include/compositionengine/OutputLayer.h +20 −0 Original line number Diff line number Diff line Loading @@ -21,8 +21,13 @@ #include <utils/StrongPointer.h> #include "DisplayHardware/ComposerHal.h" #include "DisplayHardware/DisplayIdentification.h" namespace HWC2 { class Layer; } // namespace HWC2 namespace android { namespace compositionengine { Loading Loading @@ -73,6 +78,21 @@ public: // skipped. virtual void writeStateToHWC(bool includeGeometry) = 0; // Returns the HWC2::Layer associated with this layer, if it exists virtual HWC2::Layer* getHwcLayer() const = 0; // Returns true if the current layer state requires client composition virtual bool requiresClientComposition() const = 0; // Applies a HWC device requested composition type change virtual void applyDeviceCompositionTypeChange(Hwc2::IComposerClient::Composition) = 0; // Prepares to apply any HWC device layer requests virtual void prepareForDeviceLayerRequests() = 0; // Applies a HWC device layer request virtual void applyDeviceLayerRequest(Hwc2::IComposerClient::LayerRequest request) = 0; // Debugging virtual void dump(std::string& result) const = 0; }; Loading services/surfaceflinger/CompositionEngine/include/compositionengine/RenderSurface.h +1 −1 Original line number Diff line number Diff line Loading @@ -71,7 +71,7 @@ public: virtual status_t beginFrame(bool mustRecompose) = 0; // Prepares the frame for rendering virtual status_t prepareFrame() = 0; virtual void prepareFrame(bool usesClientComposition, bool usesDeviceComposition) = 0; // Allocates a buffer as scratch space for GPU composition virtual sp<GraphicBuffer> dequeueBuffer(base::unique_fd* bufferFence) = 0; Loading services/surfaceflinger/CompositionEngine/include/compositionengine/impl/Display.h +14 −2 Original line number Diff line number Diff line Loading @@ -16,12 +16,13 @@ #pragma once #include <memory> #include <compositionengine/Display.h> #include <compositionengine/impl/Output.h> #include <memory> #include "DisplayHardware/DisplayIdentification.h" #include "DisplayHardware/HWComposer.h" namespace android::compositionengine { Loading @@ -40,6 +41,7 @@ public: void dump(std::string&) const override; void setColorTransform(const mat4&) override; void setColorMode(ui::ColorMode, ui::Dataspace, ui::RenderIntent, ui::Dataspace) override; void chooseCompositionStrategy() override; // compositionengine::Display overrides const std::optional<DisplayId>& getId() const override; Loading @@ -49,6 +51,16 @@ public: void createDisplayColorProfile(compositionengine::DisplayColorProfileCreationArgs&&) override; void createRenderSurface(compositionengine::RenderSurfaceCreationArgs&&) override; // Internal helpers used by chooseCompositionStrategy() using ChangedTypes = android::HWComposer::DeviceRequestedChanges::ChangedTypes; using DisplayRequests = android::HWComposer::DeviceRequestedChanges::DisplayRequests; using LayerRequests = android::HWComposer::DeviceRequestedChanges::LayerRequests; virtual bool anyLayersRequireClientComposition() const; virtual bool allLayersRequireClientComposition() const; virtual void applyChangedTypesToLayers(const ChangedTypes&); virtual void applyDisplayRequests(const DisplayRequests&); virtual void applyLayerRequestsToLayers(const LayerRequests&); private: const bool mIsVirtual; std::optional<DisplayId> mId; Loading services/surfaceflinger/CompositionEngine/include/compositionengine/impl/Output.h +3 −0 Original line number Diff line number Diff line Loading @@ -75,12 +75,15 @@ public: void setReleasedLayers(ReleasedLayers&&) override; ReleasedLayers takeReleasedLayers() override; void prepareFrame() override; // Testing void setDisplayColorProfileForTest(std::unique_ptr<compositionengine::DisplayColorProfile>); void setRenderSurfaceForTest(std::unique_ptr<compositionengine::RenderSurface>); protected: const CompositionEngine& getCompositionEngine() const; void chooseCompositionStrategy() override; void dumpBase(std::string&) const; private: Loading Loading
services/surfaceflinger/CompositionEngine/include/compositionengine/Output.h +5 −1 Original line number Diff line number Diff line Loading @@ -132,15 +132,19 @@ public: // Gets the ordered set of output layers for this output virtual const OutputLayers& getOutputLayersOrderedByZ() const = 0; // Sets the new set of layers being released this frame. // Sets the new set of layers being released this frame virtual void setReleasedLayers(ReleasedLayers&&) = 0; // Takes (moves) the set of layers being released this frame. virtual ReleasedLayers takeReleasedLayers() = 0; // Prepares a frame for display virtual void prepareFrame() = 0; protected: virtual void setDisplayColorProfile(std::unique_ptr<DisplayColorProfile>) = 0; virtual void setRenderSurface(std::unique_ptr<RenderSurface>) = 0; virtual void chooseCompositionStrategy() = 0; }; } // namespace android::compositionengine
services/surfaceflinger/CompositionEngine/include/compositionengine/OutputLayer.h +20 −0 Original line number Diff line number Diff line Loading @@ -21,8 +21,13 @@ #include <utils/StrongPointer.h> #include "DisplayHardware/ComposerHal.h" #include "DisplayHardware/DisplayIdentification.h" namespace HWC2 { class Layer; } // namespace HWC2 namespace android { namespace compositionengine { Loading Loading @@ -73,6 +78,21 @@ public: // skipped. virtual void writeStateToHWC(bool includeGeometry) = 0; // Returns the HWC2::Layer associated with this layer, if it exists virtual HWC2::Layer* getHwcLayer() const = 0; // Returns true if the current layer state requires client composition virtual bool requiresClientComposition() const = 0; // Applies a HWC device requested composition type change virtual void applyDeviceCompositionTypeChange(Hwc2::IComposerClient::Composition) = 0; // Prepares to apply any HWC device layer requests virtual void prepareForDeviceLayerRequests() = 0; // Applies a HWC device layer request virtual void applyDeviceLayerRequest(Hwc2::IComposerClient::LayerRequest request) = 0; // Debugging virtual void dump(std::string& result) const = 0; }; Loading
services/surfaceflinger/CompositionEngine/include/compositionengine/RenderSurface.h +1 −1 Original line number Diff line number Diff line Loading @@ -71,7 +71,7 @@ public: virtual status_t beginFrame(bool mustRecompose) = 0; // Prepares the frame for rendering virtual status_t prepareFrame() = 0; virtual void prepareFrame(bool usesClientComposition, bool usesDeviceComposition) = 0; // Allocates a buffer as scratch space for GPU composition virtual sp<GraphicBuffer> dequeueBuffer(base::unique_fd* bufferFence) = 0; Loading
services/surfaceflinger/CompositionEngine/include/compositionengine/impl/Display.h +14 −2 Original line number Diff line number Diff line Loading @@ -16,12 +16,13 @@ #pragma once #include <memory> #include <compositionengine/Display.h> #include <compositionengine/impl/Output.h> #include <memory> #include "DisplayHardware/DisplayIdentification.h" #include "DisplayHardware/HWComposer.h" namespace android::compositionengine { Loading @@ -40,6 +41,7 @@ public: void dump(std::string&) const override; void setColorTransform(const mat4&) override; void setColorMode(ui::ColorMode, ui::Dataspace, ui::RenderIntent, ui::Dataspace) override; void chooseCompositionStrategy() override; // compositionengine::Display overrides const std::optional<DisplayId>& getId() const override; Loading @@ -49,6 +51,16 @@ public: void createDisplayColorProfile(compositionengine::DisplayColorProfileCreationArgs&&) override; void createRenderSurface(compositionengine::RenderSurfaceCreationArgs&&) override; // Internal helpers used by chooseCompositionStrategy() using ChangedTypes = android::HWComposer::DeviceRequestedChanges::ChangedTypes; using DisplayRequests = android::HWComposer::DeviceRequestedChanges::DisplayRequests; using LayerRequests = android::HWComposer::DeviceRequestedChanges::LayerRequests; virtual bool anyLayersRequireClientComposition() const; virtual bool allLayersRequireClientComposition() const; virtual void applyChangedTypesToLayers(const ChangedTypes&); virtual void applyDisplayRequests(const DisplayRequests&); virtual void applyLayerRequestsToLayers(const LayerRequests&); private: const bool mIsVirtual; std::optional<DisplayId> mId; Loading
services/surfaceflinger/CompositionEngine/include/compositionengine/impl/Output.h +3 −0 Original line number Diff line number Diff line Loading @@ -75,12 +75,15 @@ public: void setReleasedLayers(ReleasedLayers&&) override; ReleasedLayers takeReleasedLayers() override; void prepareFrame() override; // Testing void setDisplayColorProfileForTest(std::unique_ptr<compositionengine::DisplayColorProfile>); void setRenderSurfaceForTest(std::unique_ptr<compositionengine::RenderSurface>); protected: const CompositionEngine& getCompositionEngine() const; void chooseCompositionStrategy() override; void dumpBase(std::string&) const; private: Loading