From 898123b6a37b778acf59edbfdab9af28ae3f1a22 Mon Sep 17 00:00:00 2001 From: Stan Iliev Date: Thu, 14 Feb 2019 14:57:44 -0500 Subject: Start RenderThread earlier to preload Vulkan/EGL drivers This CL should fix application startup regression for Vulkan detected by "Hermetic Startup: EmptyActivity" test. EGL drivers are loaded in a temp thread to leave more time in RenderThread for other work. Loading EGL drivers on the RenderThread may cause a perf regression. Test: Ran cold-dropcache-test test. Bug: 122659224 Bug: 123361175 Change-Id: I8ca818e98fac196a41d079be15594caca5cb1bab --- graphics/java/android/graphics/HardwareRenderer.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'graphics/java') diff --git a/graphics/java/android/graphics/HardwareRenderer.java b/graphics/java/android/graphics/HardwareRenderer.java index 99d8c1b42a4a..b020556cd15f 100644 --- a/graphics/java/android/graphics/HardwareRenderer.java +++ b/graphics/java/android/graphics/HardwareRenderer.java @@ -1027,6 +1027,18 @@ public class HardwareRenderer { */ public static native void disableVsync(); + /** + * Start render thread and initialize EGL or Vulkan. + * + * Initializing EGL involves loading and initializing the graphics driver. Some drivers take + * several 10s of milliseconds to do this, so doing it on-demand when an app tries to render + * its first frame adds directly to user-visible app launch latency. + * + * Should only be called after GraphicsEnvironment.chooseDriver(). + * @hide + */ + public static native void preload(); + /** @hide */ protected static native void setupShadersDiskCache(String cacheFile, String skiaCacheFile); -- cgit v1.2.3-59-g8ed1b