Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f2a54b6a authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Load EGL early in Activity launch, instead of in Zygote" into nyc-mr2-dev

parents c281fd12 fd104e7f
Loading
Loading
Loading
Loading
+18 −0
Original line number Diff line number Diff line
@@ -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;

@@ -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;
+0 −10
Original line number Diff line number Diff line
@@ -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;
@@ -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,
@@ -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();