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.