Loading core/java/android/os/GraphicsEnvironment.java +18 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package android.os; import android.content.Context; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.opengl.EGL14; import android.os.SystemProperties; import android.util.Log; Loading @@ -34,6 +35,23 @@ public final class GraphicsEnvironment { private static final String PROPERTY_GFX_DRIVER = "ro.gfx.driver.0"; public static void setupGraphicsEnvironment(Context context) { chooseDriver(context); // Now that we've figured out which driver to use for this process, load and initialize it. // This can take multiple frame periods, and it would otherwise happen as part of the first // frame, increasing first-frame latency. Starting it here, as a low-priority background // thread, means that it's usually done long before we start drawing the first frame, // without significantly disrupting other activity launch work. Thread eglInitThread = new Thread( () -> { Thread.currentThread().setPriority(Thread.MIN_PRIORITY); EGL14.eglGetDisplay(EGL14.EGL_DEFAULT_DISPLAY); }, "EGL Init"); eglInitThread.start(); } private static void chooseDriver(Context context) { String driverPackageName = SystemProperties.get(PROPERTY_GFX_DRIVER); if (driverPackageName == null || driverPackageName.isEmpty()) { return; Loading core/java/com/android/internal/os/ZygoteInit.java +0 −10 Original line number Diff line number Diff line Loading @@ -26,7 +26,6 @@ import android.icu.impl.CacheValue; import android.icu.text.DecimalFormatSymbols; import android.icu.util.ULocale; import android.net.LocalServerSocket; import android.opengl.EGL14; import android.os.Process; import android.os.SystemClock; import android.os.SystemProperties; Loading Loading @@ -199,9 +198,6 @@ public class ZygoteInit { Trace.traceBegin(Trace.TRACE_TAG_DALVIK, "PreloadResources"); preloadResources(); Trace.traceEnd(Trace.TRACE_TAG_DALVIK); Trace.traceBegin(Trace.TRACE_TAG_DALVIK, "PreloadOpenGL"); preloadOpenGL(); Trace.traceEnd(Trace.TRACE_TAG_DALVIK); preloadSharedLibraries(); preloadTextResources(); // Ask the WebViewFactory to do any initialization that must run in the zygote process, Loading Loading @@ -242,12 +238,6 @@ public class ZygoteInit { System.loadLibrary("jnigraphics"); } private static void preloadOpenGL() { if (!SystemProperties.getBoolean(PROPERTY_DISABLE_OPENGL_PRELOADING, false)) { EGL14.eglGetDisplay(EGL14.EGL_DEFAULT_DISPLAY); } } private static void preloadTextResources() { Hyphenator.init(); TextView.preloadFontCache(); Loading Loading
core/java/android/os/GraphicsEnvironment.java +18 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package android.os; import android.content.Context; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.opengl.EGL14; import android.os.SystemProperties; import android.util.Log; Loading @@ -34,6 +35,23 @@ public final class GraphicsEnvironment { private static final String PROPERTY_GFX_DRIVER = "ro.gfx.driver.0"; public static void setupGraphicsEnvironment(Context context) { chooseDriver(context); // Now that we've figured out which driver to use for this process, load and initialize it. // This can take multiple frame periods, and it would otherwise happen as part of the first // frame, increasing first-frame latency. Starting it here, as a low-priority background // thread, means that it's usually done long before we start drawing the first frame, // without significantly disrupting other activity launch work. Thread eglInitThread = new Thread( () -> { Thread.currentThread().setPriority(Thread.MIN_PRIORITY); EGL14.eglGetDisplay(EGL14.EGL_DEFAULT_DISPLAY); }, "EGL Init"); eglInitThread.start(); } private static void chooseDriver(Context context) { String driverPackageName = SystemProperties.get(PROPERTY_GFX_DRIVER); if (driverPackageName == null || driverPackageName.isEmpty()) { return; Loading
core/java/com/android/internal/os/ZygoteInit.java +0 −10 Original line number Diff line number Diff line Loading @@ -26,7 +26,6 @@ import android.icu.impl.CacheValue; import android.icu.text.DecimalFormatSymbols; import android.icu.util.ULocale; import android.net.LocalServerSocket; import android.opengl.EGL14; import android.os.Process; import android.os.SystemClock; import android.os.SystemProperties; Loading Loading @@ -199,9 +198,6 @@ public class ZygoteInit { Trace.traceBegin(Trace.TRACE_TAG_DALVIK, "PreloadResources"); preloadResources(); Trace.traceEnd(Trace.TRACE_TAG_DALVIK); Trace.traceBegin(Trace.TRACE_TAG_DALVIK, "PreloadOpenGL"); preloadOpenGL(); Trace.traceEnd(Trace.TRACE_TAG_DALVIK); preloadSharedLibraries(); preloadTextResources(); // Ask the WebViewFactory to do any initialization that must run in the zygote process, Loading Loading @@ -242,12 +238,6 @@ public class ZygoteInit { System.loadLibrary("jnigraphics"); } private static void preloadOpenGL() { if (!SystemProperties.getBoolean(PROPERTY_DISABLE_OPENGL_PRELOADING, false)) { EGL14.eglGetDisplay(EGL14.EGL_DEFAULT_DISPLAY); } } private static void preloadTextResources() { Hyphenator.init(); TextView.preloadFontCache(); Loading