Merge "Load EGL early in Activity launch, instead of in Zygote" into nyc-mr2-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
f2a54b6a39
@@ -19,6 +19,7 @@ package android.os;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.pm.ApplicationInfo;
|
import android.content.pm.ApplicationInfo;
|
||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
|
import android.opengl.EGL14;
|
||||||
import android.os.SystemProperties;
|
import android.os.SystemProperties;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
@@ -34,6 +35,23 @@ public final class GraphicsEnvironment {
|
|||||||
private static final String PROPERTY_GFX_DRIVER = "ro.gfx.driver.0";
|
private static final String PROPERTY_GFX_DRIVER = "ro.gfx.driver.0";
|
||||||
|
|
||||||
public static void setupGraphicsEnvironment(Context context) {
|
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);
|
String driverPackageName = SystemProperties.get(PROPERTY_GFX_DRIVER);
|
||||||
if (driverPackageName == null || driverPackageName.isEmpty()) {
|
if (driverPackageName == null || driverPackageName.isEmpty()) {
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -26,7 +26,6 @@ import android.icu.impl.CacheValue;
|
|||||||
import android.icu.text.DecimalFormatSymbols;
|
import android.icu.text.DecimalFormatSymbols;
|
||||||
import android.icu.util.ULocale;
|
import android.icu.util.ULocale;
|
||||||
import android.net.LocalServerSocket;
|
import android.net.LocalServerSocket;
|
||||||
import android.opengl.EGL14;
|
|
||||||
import android.os.Process;
|
import android.os.Process;
|
||||||
import android.os.SystemClock;
|
import android.os.SystemClock;
|
||||||
import android.os.SystemProperties;
|
import android.os.SystemProperties;
|
||||||
@@ -199,9 +198,6 @@ public class ZygoteInit {
|
|||||||
Trace.traceBegin(Trace.TRACE_TAG_DALVIK, "PreloadResources");
|
Trace.traceBegin(Trace.TRACE_TAG_DALVIK, "PreloadResources");
|
||||||
preloadResources();
|
preloadResources();
|
||||||
Trace.traceEnd(Trace.TRACE_TAG_DALVIK);
|
Trace.traceEnd(Trace.TRACE_TAG_DALVIK);
|
||||||
Trace.traceBegin(Trace.TRACE_TAG_DALVIK, "PreloadOpenGL");
|
|
||||||
preloadOpenGL();
|
|
||||||
Trace.traceEnd(Trace.TRACE_TAG_DALVIK);
|
|
||||||
preloadSharedLibraries();
|
preloadSharedLibraries();
|
||||||
preloadTextResources();
|
preloadTextResources();
|
||||||
// Ask the WebViewFactory to do any initialization that must run in the zygote process,
|
// Ask the WebViewFactory to do any initialization that must run in the zygote process,
|
||||||
@@ -242,12 +238,6 @@ public class ZygoteInit {
|
|||||||
System.loadLibrary("jnigraphics");
|
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() {
|
private static void preloadTextResources() {
|
||||||
Hyphenator.init();
|
Hyphenator.init();
|
||||||
TextView.preloadFontCache();
|
TextView.preloadFontCache();
|
||||||
|
|||||||
Reference in New Issue
Block a user