Do not blur opaque layers
If a layer is opaque, there's no reason to send it to client composition
due to blurs.
Bug: 196828055
Test: atest OutputUpdateAndWriteCompositionStateTest
Test: atest OutputComposeSurfacesTest_SetsExpensiveRendering_ForBlur
Test: perfetto trace
Change-Id: I55461cbad0008351c15e7dd8d2da20e0b1c59f70
diff --git a/services/surfaceflinger/CompositionEngine/src/Output.cpp b/services/surfaceflinger/CompositionEngine/src/Output.cpp
index 3310a71..95ae5e5 100644
--- a/services/surfaceflinger/CompositionEngine/src/Output.cpp
+++ b/services/surfaceflinger/CompositionEngine/src/Output.cpp
@@ -789,6 +789,9 @@
if (compState->sidebandStream != nullptr) {
return nullptr;
}
+ if (compState->isOpaque) {
+ continue;
+ }
if (compState->backgroundBlurRadius > 0 || compState->blurRegions.size() > 0) {
layerRequestingBgComposition = layer;
}