Implement blur region in RenderEngine
Blur regions should be be piped through SurfaceFlinger
all the way down to the compositor, in order to render
blurs.
It's also necessary to cache them if multiple regions require
the same blur radius.
Test: manual
Test: atest SurfaceInterceptor_test
Test: atest OutputUpdateAndWriteCompositionStateTest
Bug: 159712515
Change-Id: Id4759f65eb2522a80e9328062fe641fe29786a30
diff --git a/cmds/surfacereplayer/proto/src/trace.proto b/cmds/surfacereplayer/proto/src/trace.proto
index bbf4f8d..c6f656b 100644
--- a/cmds/surfacereplayer/proto/src/trace.proto
+++ b/cmds/surfacereplayer/proto/src/trace.proto
@@ -54,6 +54,7 @@
ReparentChildrenChange reparent_children = 20;
BackgroundBlurRadiusChange background_blur_radius = 21;
ShadowRadiusChange shadow_radius = 22;
+ BlurRegionsChange blur_regions = 23;
}
}
@@ -207,6 +208,23 @@
required float radius = 1;
}
+message BlurRegionsChange {
+ repeated BlurRegionChange blur_regions = 1;
+}
+
+message BlurRegionChange {
+ required uint32 blur_radius = 1;
+ required float corner_radius_tl = 2;
+ required float corner_radius_tr = 3;
+ required float corner_radius_bl = 4;
+ required float corner_radius_br = 5;
+ required float alpha = 6;
+ required int32 left = 7;
+ required int32 top = 8;
+ required int32 right = 9;
+ required int32 bottom = 10;
+}
+
message Origin {
required int32 pid = 1;
required int32 uid = 2;