diff options
| author | 2024-04-04 14:05:07 +0000 | |
|---|---|---|
| committer | 2024-04-11 14:21:10 +0000 | |
| commit | 7338bd98daeabcf88fc8524641ba1e9099d7085c (patch) | |
| tree | ffba1b543746b7c656e2737a6eee381f2c1065ba /services/surfaceflinger/SurfaceFlinger.cpp | |
| parent | 599efb3e39ab3a3d0dc383d3cd97c67a90d5f11a (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.cpp | 19 |
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 |