diff options
| author | 2021-03-15 17:00:51 +0100 | |
|---|---|---|
| committer | 2021-03-19 12:17:59 +0100 | |
| commit | cea12ef231782a90cfeab22c0b9ee4e609117ce2 (patch) | |
| tree | f9828b19d1c39a5a0fabb46b6a07db5788abff18 | |
| parent | 06c667b0963e48a682e8528b976ad9ed25c9cc2c (diff) | |
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
| -rw-r--r-- | libs/renderengine/skia/SkiaGLRenderEngine.cpp | 15 |
1 files 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<std::mutex> lock(mRenderingMutex); - mRuntimeEffects.clear(); - mProtectedTextureCache.clear(); - mTextureCache.clear(); + cleanFramebufferCache(); + std::lock_guard<std::mutex> 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<std::mutex> lock(mRenderingMutex); + mRuntimeEffects.clear(); + mProtectedTextureCache.clear(); + mTextureCache.clear(); +} int SkiaGLRenderEngine::getContextPriority() { int value; |