summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Marin Shalamanov <shalamanov@google.com> 2021-03-15 17:00:51 +0100
committer Marin Shalamanov <shalamanov@google.com> 2021-03-19 12:17:59 +0100
commitcea12ef231782a90cfeab22c0b9ee4e609117ce2 (patch)
treef9828b19d1c39a5a0fabb46b6a07db5788abff18
parent06c667b0963e48a682e8528b976ad9ed25c9cc2c (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.cpp15
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;