Loading libs/gui/LayerState.cpp +8 −0 Original line number Diff line number Diff line Loading @@ -90,6 +90,7 @@ layer_state_t::layer_state_t() cornerRadius(0.0f), clientDrawnCornerRadius(0.0f), backgroundBlurRadius(0), backgroundBlurScale{1.0f}, color(0), bufferTransform(0), transformToDisplayInverse(false), Loading Loading @@ -166,6 +167,7 @@ status_t layer_state_t::write(Parcel& output) const SAFE_PARCEL(output.writeFloat, cornerRadius); SAFE_PARCEL(output.writeFloat, clientDrawnCornerRadius); SAFE_PARCEL(output.writeUint32, backgroundBlurRadius); SAFE_PARCEL(output.writeFloat, backgroundBlurScale); SAFE_PARCEL(output.writeParcelable, metadata); SAFE_PARCEL(output.writeFloat, bgColor.r); SAFE_PARCEL(output.writeFloat, bgColor.g); Loading Loading @@ -305,6 +307,7 @@ status_t layer_state_t::read(const Parcel& input) SAFE_PARCEL(input.readFloat, &cornerRadius); SAFE_PARCEL(input.readFloat, &clientDrawnCornerRadius); SAFE_PARCEL(input.readUint32, &backgroundBlurRadius); SAFE_PARCEL(input.readFloat, &backgroundBlurScale); SAFE_PARCEL(input.readParcelable, &metadata); SAFE_PARCEL(input.readFloat, &tmpFloat); Loading Loading @@ -637,6 +640,10 @@ void layer_state_t::merge(const layer_state_t& other) { what |= eBackgroundBlurRadiusChanged; backgroundBlurRadius = other.backgroundBlurRadius; } if (other.what & eBackgroundBlurScaleChanged) { what |= eBackgroundBlurScaleChanged; backgroundBlurScale = other.backgroundBlurScale; } if (other.what & eBlurRegionsChanged) { what |= eBlurRegionsChanged; blurRegions = other.blurRegions; Loading Loading @@ -860,6 +867,7 @@ uint64_t layer_state_t::diff(const layer_state_t& other) const { CHECK_DIFF(diff, eCornerRadiusChanged, other, cornerRadius); CHECK_DIFF(diff, eClientDrawnCornerRadiusChanged, other, clientDrawnCornerRadius); CHECK_DIFF(diff, eBackgroundBlurRadiusChanged, other, backgroundBlurRadius); CHECK_DIFF(diff, eBackgroundBlurScaleChanged, other, backgroundBlurScale); if (other.what & eBlurRegionsChanged) diff |= eBlurRegionsChanged; if (other.what & eRelativeLayerChanged) { diff |= eRelativeLayerChanged; Loading libs/gui/SurfaceComposerClient.cpp +12 −0 Original line number Diff line number Diff line Loading @@ -1699,6 +1699,18 @@ SurfaceComposerClient::Transaction& SurfaceComposerClient::Transaction::setBackg return *this; } SurfaceComposerClient::Transaction& SurfaceComposerClient::Transaction::setBackgroundBlurScale( const sp<SurfaceControl>& sc, float backgroundBlurScale) { layer_state_t* s = getLayerState(sc); if (!s) { mStatus = BAD_INDEX; return *this; } s->what |= layer_state_t::eBackgroundBlurScaleChanged; s->backgroundBlurScale = backgroundBlurScale; return *this; } SurfaceComposerClient::Transaction& SurfaceComposerClient::Transaction::setBlurRegions( const sp<SurfaceControl>& sc, const std::vector<BlurRegion>& blurRegions) { layer_state_t* s = getLayerState(sc); Loading libs/gui/include/gui/LayerState.h +10 −5 Original line number Diff line number Diff line Loading @@ -255,6 +255,7 @@ struct layer_state_t { eBorderSettingsChanged = 0x400000'00000000, eBoxShadowSettingsChanged = 0x800000'00000000, eStopLayerChanged = 0x1000000'00000000, eBackgroundBlurScaleChanged = 0x2000000'00000000, }; layer_state_t(); Loading Loading @@ -293,7 +294,8 @@ struct layer_state_t { // Content updates. static constexpr uint64_t CONTENT_CHANGES = layer_state_t::BUFFER_CHANGES | layer_state_t::eAlphaChanged | layer_state_t::eAutoRefreshChanged | layer_state_t::eBackgroundBlurRadiusChanged | layer_state_t::eBackgroundColorChanged | layer_state_t::eBackgroundBlurRadiusChanged | layer_state_t::eBackgroundBlurScaleChanged | layer_state_t::eBackgroundColorChanged | layer_state_t::eBlurRegionsChanged | layer_state_t::eColorChanged | layer_state_t::eColorSpaceAgnosticChanged | layer_state_t::eColorTransformChanged | layer_state_t::eCornerRadiusChanged | layer_state_t::eDimmingEnabledChanged | Loading @@ -309,7 +311,8 @@ struct layer_state_t { // Changes affecting child states. static constexpr uint64_t AFFECTS_CHILDREN = layer_state_t::GEOMETRY_CHANGES | layer_state_t::HIERARCHY_CHANGES | layer_state_t::eAlphaChanged | layer_state_t::eBackgroundBlurRadiusChanged | layer_state_t::eBlurRegionsChanged | layer_state_t::eBackgroundBlurRadiusChanged | layer_state_t::eBackgroundBlurScaleChanged | layer_state_t::eBlurRegionsChanged | layer_state_t::eColorTransformChanged | layer_state_t::eCornerRadiusChanged | layer_state_t::eFlagsChanged | layer_state_t::eTrustedOverlayChanged | layer_state_t::eFrameRateChanged | layer_state_t::eFrameRateCategoryChanged | Loading @@ -327,9 +330,10 @@ struct layer_state_t { // Changes that force GPU composition. static constexpr uint64_t COMPOSITION_EFFECTS = layer_state_t::eBackgroundBlurRadiusChanged | layer_state_t::eBlurRegionsChanged | layer_state_t::eCornerRadiusChanged | layer_state_t::eShadowRadiusChanged | layer_state_t::eStretchChanged | layer_state_t::eBorderSettingsChanged | layer_state_t::eBoxShadowSettingsChanged; layer_state_t::eBackgroundBlurScaleChanged | layer_state_t::eBlurRegionsChanged | layer_state_t::eCornerRadiusChanged | layer_state_t::eShadowRadiusChanged | layer_state_t::eStretchChanged | layer_state_t::eBorderSettingsChanged | layer_state_t::eBoxShadowSettingsChanged; bool hasValidBuffer() const; void sanitize(int32_t permissions); Loading Loading @@ -387,6 +391,7 @@ struct layer_state_t { float cornerRadius; float clientDrawnCornerRadius; uint32_t backgroundBlurRadius; float backgroundBlurScale; half4 color; Loading libs/gui/include/gui/SurfaceComposerClient.h +2 −0 Original line number Diff line number Diff line Loading @@ -584,6 +584,8 @@ public: float clientDrawnCornerRadius); Transaction& setBackgroundBlurRadius(const sp<SurfaceControl>& sc, int backgroundBlurRadius); Transaction& setBackgroundBlurScale(const sp<SurfaceControl>& sc, float backgroundBlurScale); Transaction& setBlurRegions(const sp<SurfaceControl>& sc, const std::vector<BlurRegion>& regions); Transaction& setLayerStack(const sp<SurfaceControl>&, ui::LayerStack); Loading libs/renderengine/include/renderengine/LayerSettings.h +3 −0 Original line number Diff line number Diff line Loading @@ -142,6 +142,7 @@ struct LayerSettings { gui::BoxShadowSettings boxShadowSettings; int backgroundBlurRadius = 0; float backgroundBlurScale = 1.0f; std::vector<BlurRegion> blurRegions; Loading Loading @@ -201,6 +202,7 @@ static inline bool operator==(const LayerSettings& lhs, const LayerSettings& rhs lhs.disableBlending == rhs.disableBlending && lhs.skipContentDraw == rhs.skipContentDraw && lhs.shadow == rhs.shadow && lhs.backgroundBlurRadius == rhs.backgroundBlurRadius && lhs.backgroundBlurScale == rhs.backgroundBlurScale && lhs.blurRegionTransform == rhs.blurRegionTransform && lhs.stretchEffect == rhs.stretchEffect && lhs.edgeExtensionEffect == rhs.edgeExtensionEffect && Loading Loading @@ -303,6 +305,7 @@ static inline void PrintTo(const LayerSettings& settings, ::std::ostream* os) { PrintTo(settings.shadow, os); } *os << "\n .backgroundBlurRadius = " << settings.backgroundBlurRadius; *os << "\n .backgroundBlurScale = " << settings.backgroundBlurScale; if (settings.blurRegions.size()) { *os << "\n .blurRegions ="; for (auto blurRegion : settings.blurRegions) { Loading Loading
libs/gui/LayerState.cpp +8 −0 Original line number Diff line number Diff line Loading @@ -90,6 +90,7 @@ layer_state_t::layer_state_t() cornerRadius(0.0f), clientDrawnCornerRadius(0.0f), backgroundBlurRadius(0), backgroundBlurScale{1.0f}, color(0), bufferTransform(0), transformToDisplayInverse(false), Loading Loading @@ -166,6 +167,7 @@ status_t layer_state_t::write(Parcel& output) const SAFE_PARCEL(output.writeFloat, cornerRadius); SAFE_PARCEL(output.writeFloat, clientDrawnCornerRadius); SAFE_PARCEL(output.writeUint32, backgroundBlurRadius); SAFE_PARCEL(output.writeFloat, backgroundBlurScale); SAFE_PARCEL(output.writeParcelable, metadata); SAFE_PARCEL(output.writeFloat, bgColor.r); SAFE_PARCEL(output.writeFloat, bgColor.g); Loading Loading @@ -305,6 +307,7 @@ status_t layer_state_t::read(const Parcel& input) SAFE_PARCEL(input.readFloat, &cornerRadius); SAFE_PARCEL(input.readFloat, &clientDrawnCornerRadius); SAFE_PARCEL(input.readUint32, &backgroundBlurRadius); SAFE_PARCEL(input.readFloat, &backgroundBlurScale); SAFE_PARCEL(input.readParcelable, &metadata); SAFE_PARCEL(input.readFloat, &tmpFloat); Loading Loading @@ -637,6 +640,10 @@ void layer_state_t::merge(const layer_state_t& other) { what |= eBackgroundBlurRadiusChanged; backgroundBlurRadius = other.backgroundBlurRadius; } if (other.what & eBackgroundBlurScaleChanged) { what |= eBackgroundBlurScaleChanged; backgroundBlurScale = other.backgroundBlurScale; } if (other.what & eBlurRegionsChanged) { what |= eBlurRegionsChanged; blurRegions = other.blurRegions; Loading Loading @@ -860,6 +867,7 @@ uint64_t layer_state_t::diff(const layer_state_t& other) const { CHECK_DIFF(diff, eCornerRadiusChanged, other, cornerRadius); CHECK_DIFF(diff, eClientDrawnCornerRadiusChanged, other, clientDrawnCornerRadius); CHECK_DIFF(diff, eBackgroundBlurRadiusChanged, other, backgroundBlurRadius); CHECK_DIFF(diff, eBackgroundBlurScaleChanged, other, backgroundBlurScale); if (other.what & eBlurRegionsChanged) diff |= eBlurRegionsChanged; if (other.what & eRelativeLayerChanged) { diff |= eRelativeLayerChanged; Loading
libs/gui/SurfaceComposerClient.cpp +12 −0 Original line number Diff line number Diff line Loading @@ -1699,6 +1699,18 @@ SurfaceComposerClient::Transaction& SurfaceComposerClient::Transaction::setBackg return *this; } SurfaceComposerClient::Transaction& SurfaceComposerClient::Transaction::setBackgroundBlurScale( const sp<SurfaceControl>& sc, float backgroundBlurScale) { layer_state_t* s = getLayerState(sc); if (!s) { mStatus = BAD_INDEX; return *this; } s->what |= layer_state_t::eBackgroundBlurScaleChanged; s->backgroundBlurScale = backgroundBlurScale; return *this; } SurfaceComposerClient::Transaction& SurfaceComposerClient::Transaction::setBlurRegions( const sp<SurfaceControl>& sc, const std::vector<BlurRegion>& blurRegions) { layer_state_t* s = getLayerState(sc); Loading
libs/gui/include/gui/LayerState.h +10 −5 Original line number Diff line number Diff line Loading @@ -255,6 +255,7 @@ struct layer_state_t { eBorderSettingsChanged = 0x400000'00000000, eBoxShadowSettingsChanged = 0x800000'00000000, eStopLayerChanged = 0x1000000'00000000, eBackgroundBlurScaleChanged = 0x2000000'00000000, }; layer_state_t(); Loading Loading @@ -293,7 +294,8 @@ struct layer_state_t { // Content updates. static constexpr uint64_t CONTENT_CHANGES = layer_state_t::BUFFER_CHANGES | layer_state_t::eAlphaChanged | layer_state_t::eAutoRefreshChanged | layer_state_t::eBackgroundBlurRadiusChanged | layer_state_t::eBackgroundColorChanged | layer_state_t::eBackgroundBlurRadiusChanged | layer_state_t::eBackgroundBlurScaleChanged | layer_state_t::eBackgroundColorChanged | layer_state_t::eBlurRegionsChanged | layer_state_t::eColorChanged | layer_state_t::eColorSpaceAgnosticChanged | layer_state_t::eColorTransformChanged | layer_state_t::eCornerRadiusChanged | layer_state_t::eDimmingEnabledChanged | Loading @@ -309,7 +311,8 @@ struct layer_state_t { // Changes affecting child states. static constexpr uint64_t AFFECTS_CHILDREN = layer_state_t::GEOMETRY_CHANGES | layer_state_t::HIERARCHY_CHANGES | layer_state_t::eAlphaChanged | layer_state_t::eBackgroundBlurRadiusChanged | layer_state_t::eBlurRegionsChanged | layer_state_t::eBackgroundBlurRadiusChanged | layer_state_t::eBackgroundBlurScaleChanged | layer_state_t::eBlurRegionsChanged | layer_state_t::eColorTransformChanged | layer_state_t::eCornerRadiusChanged | layer_state_t::eFlagsChanged | layer_state_t::eTrustedOverlayChanged | layer_state_t::eFrameRateChanged | layer_state_t::eFrameRateCategoryChanged | Loading @@ -327,9 +330,10 @@ struct layer_state_t { // Changes that force GPU composition. static constexpr uint64_t COMPOSITION_EFFECTS = layer_state_t::eBackgroundBlurRadiusChanged | layer_state_t::eBlurRegionsChanged | layer_state_t::eCornerRadiusChanged | layer_state_t::eShadowRadiusChanged | layer_state_t::eStretchChanged | layer_state_t::eBorderSettingsChanged | layer_state_t::eBoxShadowSettingsChanged; layer_state_t::eBackgroundBlurScaleChanged | layer_state_t::eBlurRegionsChanged | layer_state_t::eCornerRadiusChanged | layer_state_t::eShadowRadiusChanged | layer_state_t::eStretchChanged | layer_state_t::eBorderSettingsChanged | layer_state_t::eBoxShadowSettingsChanged; bool hasValidBuffer() const; void sanitize(int32_t permissions); Loading Loading @@ -387,6 +391,7 @@ struct layer_state_t { float cornerRadius; float clientDrawnCornerRadius; uint32_t backgroundBlurRadius; float backgroundBlurScale; half4 color; Loading
libs/gui/include/gui/SurfaceComposerClient.h +2 −0 Original line number Diff line number Diff line Loading @@ -584,6 +584,8 @@ public: float clientDrawnCornerRadius); Transaction& setBackgroundBlurRadius(const sp<SurfaceControl>& sc, int backgroundBlurRadius); Transaction& setBackgroundBlurScale(const sp<SurfaceControl>& sc, float backgroundBlurScale); Transaction& setBlurRegions(const sp<SurfaceControl>& sc, const std::vector<BlurRegion>& regions); Transaction& setLayerStack(const sp<SurfaceControl>&, ui::LayerStack); Loading
libs/renderengine/include/renderengine/LayerSettings.h +3 −0 Original line number Diff line number Diff line Loading @@ -142,6 +142,7 @@ struct LayerSettings { gui::BoxShadowSettings boxShadowSettings; int backgroundBlurRadius = 0; float backgroundBlurScale = 1.0f; std::vector<BlurRegion> blurRegions; Loading Loading @@ -201,6 +202,7 @@ static inline bool operator==(const LayerSettings& lhs, const LayerSettings& rhs lhs.disableBlending == rhs.disableBlending && lhs.skipContentDraw == rhs.skipContentDraw && lhs.shadow == rhs.shadow && lhs.backgroundBlurRadius == rhs.backgroundBlurRadius && lhs.backgroundBlurScale == rhs.backgroundBlurScale && lhs.blurRegionTransform == rhs.blurRegionTransform && lhs.stretchEffect == rhs.stretchEffect && lhs.edgeExtensionEffect == rhs.edgeExtensionEffect && Loading Loading @@ -303,6 +305,7 @@ static inline void PrintTo(const LayerSettings& settings, ::std::ostream* os) { PrintTo(settings.shadow, os); } *os << "\n .backgroundBlurRadius = " << settings.backgroundBlurRadius; *os << "\n .backgroundBlurScale = " << settings.backgroundBlurScale; if (settings.blurRegions.size()) { *os << "\n .blurRegions ="; for (auto blurRegion : settings.blurRegions) { Loading