SF: Prime shader cache before boot animation
Primes the shader cache before launching boot animation to avoid
janking when we eventually fall into GLES composition.
Bug: 30040263
Change-Id: I76ba66e92c5e6bb05930c325f384f3b774e91101
diff --git a/services/surfaceflinger/RenderEngine/RenderEngine.cpp b/services/surfaceflinger/RenderEngine/RenderEngine.cpp
index 27357b9..d6a032f 100644
--- a/services/surfaceflinger/RenderEngine/RenderEngine.cpp
+++ b/services/surfaceflinger/RenderEngine/RenderEngine.cpp
@@ -436,6 +436,13 @@
return config;
}
+
+void RenderEngine::primeCache() const {
+ // Getting the ProgramCache instance causes it to prime its shader cache,
+ // which is performed in its constructor
+ ProgramCache::getInstance();
+}
+
// ---------------------------------------------------------------------------
}; // namespace android
// ---------------------------------------------------------------------------
diff --git a/services/surfaceflinger/RenderEngine/RenderEngine.h b/services/surfaceflinger/RenderEngine/RenderEngine.h
index 9cc1ed7..0259881 100644
--- a/services/surfaceflinger/RenderEngine/RenderEngine.h
+++ b/services/surfaceflinger/RenderEngine/RenderEngine.h
@@ -63,6 +63,8 @@
static EGLConfig chooseEglConfig(EGLDisplay display, int format);
+ void primeCache() const;
+
// dump the extension strings. always call the base class.
virtual void dump(String8& result);