From cea12ef231782a90cfeab22c0b9ee4e609117ce2 Mon Sep 17 00:00:00 2001 From: Marin Shalamanov Date: Mon, 15 Mar 2021 17:00:51 +0100 Subject: Implement SkiaGLRenderEngine::cleanFramebufferCache On hotplug SF calls cleanFramebufferCache in order to clean the existing handles to framebuffers. This CL implements the function for SkiaGLRenderEngine and fixes a bug where after each hotplug we end up with +3 framebuffers. Fixes: 182578852 Test: manually flash build, hotplug and call adb shell dumpsys SurfaceFlinger | grep Framebuffer to verify that only 3 framebuffers are present Change-Id: I2a0d1ab6005e3c7a994f8c8c0eeec79afc96d109 --- libs/renderengine/skia/SkiaGLRenderEngine.cpp | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/libs/renderengine/skia/SkiaGLRenderEngine.cpp b/libs/renderengine/skia/SkiaGLRenderEngine.cpp index cbb02a37d2..acd3dcfe08 100644 --- a/libs/renderengine/skia/SkiaGLRenderEngine.cpp +++ b/libs/renderengine/skia/SkiaGLRenderEngine.cpp @@ -293,11 +293,9 @@ SkiaGLRenderEngine::SkiaGLRenderEngine(const RenderEngineCreationArgs& args, EGL } SkiaGLRenderEngine::~SkiaGLRenderEngine() { - std::lock_guard lock(mRenderingMutex); - mRuntimeEffects.clear(); - mProtectedTextureCache.clear(); - mTextureCache.clear(); + cleanFramebufferCache(); + std::lock_guard lock(mRenderingMutex); if (mBlurFilter) { delete mBlurFilter; } @@ -1130,7 +1128,14 @@ EGLSurface SkiaGLRenderEngine::createPlaceholderEglPbufferSurface(EGLDisplay dis return eglCreatePbufferSurface(display, placeholderConfig, attributes.data()); } -void SkiaGLRenderEngine::cleanFramebufferCache() {} +void SkiaGLRenderEngine::cleanFramebufferCache() { + // TODO(b/180767535) Remove this method and use b/180767535 instead, which would allow + // SF to control texture lifecycle more tightly rather than through custom hooks into RE. + std::lock_guard lock(mRenderingMutex); + mRuntimeEffects.clear(); + mProtectedTextureCache.clear(); + mTextureCache.clear(); +} int SkiaGLRenderEngine::getContextPriority() { int value; -- cgit v1.2.3-59-g8ed1b