summaryrefslogtreecommitdiff
path: root/services/surfaceflinger/SurfaceFlinger.cpp
diff options
context:
space:
mode:
author Robin Lee <rgl@google.com> 2024-04-04 14:05:07 +0000
committer Robin Lee <rgl@google.com> 2024-04-11 14:21:10 +0000
commit7338bd98daeabcf88fc8524641ba1e9099d7085c (patch)
treeffba1b543746b7c656e2737a6eee381f2c1065ba /services/surfaceflinger/SurfaceFlinger.cpp
parent599efb3e39ab3a3d0dc383d3cd97c67a90d5f11a (diff)
Add a sysprop to switch between blur algorithms
Bug: 185365391 Test: adb root && adb shell 'setprop debug.renderengine.blur_algorithm kawase' && adb shell 'stop; start' && sleep 30 && atest BlurTests Test: adb root && adb shell 'setprop debug.renderengine.blur_algorithm gaussian' && adb shell 'stop start' && sleep 30 && atest BlurTests Test: adb root && adb shell 'setprop debug.renderengine.blur_algorithm ""' && adb shell 'stop; start' && sleep 30 && atest BlurTests Merged-In: Ib977e1d54eb08946449d447101a0c65273aa3b40 Change-Id: Ib977e1d54eb08946449d447101a0c65273aa3b40
Diffstat (limited to 'services/surfaceflinger/SurfaceFlinger.cpp')
-rw-r--r--services/surfaceflinger/SurfaceFlinger.cpp19
1 files changed, 18 insertions, 1 deletions
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp
index 21f1cb3e4a..b3f83f0799 100644
--- a/services/surfaceflinger/SurfaceFlinger.cpp
+++ b/services/surfaceflinger/SurfaceFlinger.cpp
@@ -821,6 +821,23 @@ void chooseRenderEngineType(renderengine::RenderEngineCreationArgs::Builder& bui
}
}
+/**
+ * Choose a suggested blurring algorithm if supportsBlur is true. By default Kawase will be
+ * suggested as it's faster than a full Gaussian blur and looks close enough.
+ */
+renderengine::RenderEngine::BlurAlgorithm chooseBlurAlgorithm(bool supportsBlur) {
+ if (!supportsBlur) {
+ return renderengine::RenderEngine::BlurAlgorithm::NONE;
+ }
+
+ auto const algorithm = base::GetProperty(PROPERTY_DEBUG_RENDERENGINE_BLUR_ALGORITHM, "");
+ if (algorithm == "gaussian") {
+ return renderengine::RenderEngine::BlurAlgorithm::GAUSSIAN;
+ } else {
+ return renderengine::RenderEngine::BlurAlgorithm::KAWASE;
+ }
+}
+
void SurfaceFlinger::init() FTL_FAKE_GUARD(kMainThreadContext) {
ATRACE_CALL();
ALOGI( "SurfaceFlinger's main thread ready to run. "
@@ -836,7 +853,7 @@ void SurfaceFlinger::init() FTL_FAKE_GUARD(kMainThreadContext) {
.setImageCacheSize(maxFrameBufferAcquiredBuffers)
.setEnableProtectedContext(enable_protected_contents(false))
.setPrecacheToneMapperShaderOnly(false)
- .setSupportsBackgroundBlur(mSupportsBlur)
+ .setBlurAlgorithm(chooseBlurAlgorithm(mSupportsBlur))
.setContextPriority(
useContextPriority
? renderengine::RenderEngine::ContextPriority::REALTIME