Add each blur region as a separate request Blur regions with different radii can cause separate render passes for blurs, so a larger # of regions can bypass the max blurs check. Bug: 443970347 Flag: EXEMPT BUGFIX Test: builds Test: PoC app no longer reproduces Cherrypick-From: https://googleplex-android-review.googlesource.com/q/commit:19b7efacb574cfdad1e6ac873630539965b2035f Cherrypick-From: https://googleplex-android-review.googlesource.com/q/commit:67efbdce97fbc73688c6c87b47f1f1a57dc623f2 Merged-In: I79001aee37586fabce93d013eb633a66d6e2cf12 Change-Id: I79001aee37586fabce93d013eb633a66d6e2cf12
diff --git a/services/surfaceflinger/CompositionEngine/src/Output.cpp b/services/surfaceflinger/CompositionEngine/src/Output.cpp index 8a2b33b..cd0e2ad 100644 --- a/services/surfaceflinger/CompositionEngine/src/Output.cpp +++ b/services/surfaceflinger/CompositionEngine/src/Output.cpp
@@ -776,8 +776,10 @@ // one, or create a new one if we do not. auto outputLayer = ensureOutputLayer(prevOutputLayerIndex, layerFE); - coverage.aboveBlurRequests += static_cast<int32_t>(layerFEState->backgroundBlurRadius > 0 || - !layerFEState->blurRegions.empty()); + coverage.aboveBlurRequests += static_cast<int32_t>(layerFEState->backgroundBlurRadius > 0); + // Each blur region can contain a separate blur radius so we need to count each region + // as a separate request. + coverage.aboveBlurRequests += static_cast<int32_t>(layerFEState->blurRegions.size()); // Store the layer coverage information into the layer state as some of it // is useful later.