Loading services/surfaceflinger/CompositionEngine/include/compositionengine/CompositionRefreshArgs.h +4 −0 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ #include <compositionengine/LayerFE.h> #include <compositionengine/OutputColorSetting.h> #include <math/mat4.h> #include <ui/Transform.h> namespace android::compositionengine { Loading Loading @@ -57,6 +58,9 @@ struct CompositionRefreshArgs { // Forces a color mode on the outputs being refreshed ui::ColorMode forceOutputColorMode{ui::ColorMode::NATIVE}; // Used to correctly apply an inverse-display buffer transform if applicable ui::Transform::RotationFlags internalDisplayRotationFlags{ui::Transform::ROT_0}; // If true, GPU clocks will be increased when rendering blurs bool blursAreExpensive{false}; Loading services/surfaceflinger/CompositionEngine/include/compositionengine/OutputLayer.h +7 −1 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ #include <optional> #include <string> #include <ui/Transform.h> #include <utils/StrongPointer.h> // TODO(b/129481165): remove the #pragma below and fix conversion issues Loading Loading @@ -77,7 +78,12 @@ public: // Recalculates the state of the output layer from the output-independent // layer. If includeGeometry is false, the geometry state can be skipped. virtual void updateCompositionState(bool includeGeometry, bool forceClientComposition) = 0; // internalDisplayRotationFlags must be set to the rotation flags for the // internal display, and is used to properly compute the inverse-display // transform, if needed. virtual void updateCompositionState( bool includeGeometry, bool forceClientComposition, ui::Transform::RotationFlags internalDisplayRotationFlags) = 0; // Writes the geometry state to the HWC, or does nothing if this layer does // not use the HWC. If includeGeometry is false, the geometry state can be Loading services/surfaceflinger/CompositionEngine/include/compositionengine/impl/OutputLayer.h +4 −2 Original line number Diff line number Diff line Loading @@ -39,7 +39,8 @@ public: void setHwcLayer(std::shared_ptr<HWC2::Layer>) override; void updateCompositionState(bool includeGeometry, bool forceClientComposition) override; void updateCompositionState(bool includeGeometry, bool forceClientComposition, ui::Transform::RotationFlags) override; void writeStateToHWC(bool) override; void writeCursorPositionToHWC() const override; Loading @@ -55,7 +56,8 @@ public: virtual FloatRect calculateOutputSourceCrop() const; virtual Rect calculateOutputDisplayFrame() const; virtual uint32_t calculateOutputRelativeBufferTransform() const; virtual uint32_t calculateOutputRelativeBufferTransform( uint32_t internalDisplayRotationFlags) const; protected: // Implemented by the final implementation for the final state it uses. Loading services/surfaceflinger/CompositionEngine/include/compositionengine/mock/OutputLayer.h +1 −1 Original line number Diff line number Diff line Loading @@ -38,7 +38,7 @@ public: MOCK_CONST_METHOD0(getState, const impl::OutputLayerCompositionState&()); MOCK_METHOD0(editState, impl::OutputLayerCompositionState&()); MOCK_METHOD2(updateCompositionState, void(bool, bool)); MOCK_METHOD3(updateCompositionState, void(bool, bool, ui::Transform::RotationFlags)); MOCK_METHOD1(writeStateToHWC, void(bool)); MOCK_CONST_METHOD0(writeCursorPositionToHWC, void()); Loading services/surfaceflinger/CompositionEngine/src/Output.cpp +2 −1 Original line number Diff line number Diff line Loading @@ -588,7 +588,8 @@ void Output::updateAndWriteCompositionState( for (auto* layer : getOutputLayersOrderedByZ()) { layer->updateCompositionState(refreshArgs.updatingGeometryThisFrame, refreshArgs.devOptForceClientComposition || forceClientComposition); forceClientComposition, refreshArgs.internalDisplayRotationFlags); if (mLayerRequestingBackgroundBlur == layer) { forceClientComposition = false; Loading Loading
services/surfaceflinger/CompositionEngine/include/compositionengine/CompositionRefreshArgs.h +4 −0 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ #include <compositionengine/LayerFE.h> #include <compositionengine/OutputColorSetting.h> #include <math/mat4.h> #include <ui/Transform.h> namespace android::compositionengine { Loading Loading @@ -57,6 +58,9 @@ struct CompositionRefreshArgs { // Forces a color mode on the outputs being refreshed ui::ColorMode forceOutputColorMode{ui::ColorMode::NATIVE}; // Used to correctly apply an inverse-display buffer transform if applicable ui::Transform::RotationFlags internalDisplayRotationFlags{ui::Transform::ROT_0}; // If true, GPU clocks will be increased when rendering blurs bool blursAreExpensive{false}; Loading
services/surfaceflinger/CompositionEngine/include/compositionengine/OutputLayer.h +7 −1 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ #include <optional> #include <string> #include <ui/Transform.h> #include <utils/StrongPointer.h> // TODO(b/129481165): remove the #pragma below and fix conversion issues Loading Loading @@ -77,7 +78,12 @@ public: // Recalculates the state of the output layer from the output-independent // layer. If includeGeometry is false, the geometry state can be skipped. virtual void updateCompositionState(bool includeGeometry, bool forceClientComposition) = 0; // internalDisplayRotationFlags must be set to the rotation flags for the // internal display, and is used to properly compute the inverse-display // transform, if needed. virtual void updateCompositionState( bool includeGeometry, bool forceClientComposition, ui::Transform::RotationFlags internalDisplayRotationFlags) = 0; // Writes the geometry state to the HWC, or does nothing if this layer does // not use the HWC. If includeGeometry is false, the geometry state can be Loading
services/surfaceflinger/CompositionEngine/include/compositionengine/impl/OutputLayer.h +4 −2 Original line number Diff line number Diff line Loading @@ -39,7 +39,8 @@ public: void setHwcLayer(std::shared_ptr<HWC2::Layer>) override; void updateCompositionState(bool includeGeometry, bool forceClientComposition) override; void updateCompositionState(bool includeGeometry, bool forceClientComposition, ui::Transform::RotationFlags) override; void writeStateToHWC(bool) override; void writeCursorPositionToHWC() const override; Loading @@ -55,7 +56,8 @@ public: virtual FloatRect calculateOutputSourceCrop() const; virtual Rect calculateOutputDisplayFrame() const; virtual uint32_t calculateOutputRelativeBufferTransform() const; virtual uint32_t calculateOutputRelativeBufferTransform( uint32_t internalDisplayRotationFlags) const; protected: // Implemented by the final implementation for the final state it uses. Loading
services/surfaceflinger/CompositionEngine/include/compositionengine/mock/OutputLayer.h +1 −1 Original line number Diff line number Diff line Loading @@ -38,7 +38,7 @@ public: MOCK_CONST_METHOD0(getState, const impl::OutputLayerCompositionState&()); MOCK_METHOD0(editState, impl::OutputLayerCompositionState&()); MOCK_METHOD2(updateCompositionState, void(bool, bool)); MOCK_METHOD3(updateCompositionState, void(bool, bool, ui::Transform::RotationFlags)); MOCK_METHOD1(writeStateToHWC, void(bool)); MOCK_CONST_METHOD0(writeCursorPositionToHWC, void()); Loading
services/surfaceflinger/CompositionEngine/src/Output.cpp +2 −1 Original line number Diff line number Diff line Loading @@ -588,7 +588,8 @@ void Output::updateAndWriteCompositionState( for (auto* layer : getOutputLayersOrderedByZ()) { layer->updateCompositionState(refreshArgs.updatingGeometryThisFrame, refreshArgs.devOptForceClientComposition || forceClientComposition); forceClientComposition, refreshArgs.internalDisplayRotationFlags); if (mLayerRequestingBackgroundBlur == layer) { forceClientComposition = false; Loading