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

Commit bb11f94a authored by Shadman Shadid's avatar Shadman Shadid Committed by Android (Google) Code Review
Browse files

Merge "render thread early preload optimizations" into main

parents e71206d0 20f066ca
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -54,6 +54,9 @@ constexpr bool resample_gainmap_regions() {
constexpr bool query_global_priority() {
    return false;
}
constexpr bool early_preload_gl_context() {
    return false;
}
}  // namespace hwui_flags
#endif

@@ -291,5 +294,10 @@ bool Properties::resampleGainmapRegions() {
    return sResampleGainmapRegions;
}

bool Properties::earlyPreloadGlContext() {
    return base::GetBoolProperty(PROPERTY_EARLY_PRELOAD_GL_CONTEXT,
                                 hwui_flags::early_preload_gl_context());
}

}  // namespace uirenderer
}  // namespace android
+3 −0
Original line number Diff line number Diff line
@@ -236,6 +236,8 @@ enum DebugLevel {

#define PROPERTY_SKIP_EGLMANAGER_TELEMETRY "debug.hwui.skip_eglmanager_telemetry"

#define PROPERTY_EARLY_PRELOAD_GL_CONTEXT "debug.hwui.early_preload_gl_context"

///////////////////////////////////////////////////////////////////////////////
// Misc
///////////////////////////////////////////////////////////////////////////////
@@ -381,6 +383,7 @@ public:

    static bool initializeGlAlways();
    static bool resampleGainmapRegions();
    static bool earlyPreloadGlContext();

private:
    static StretchEffectBehavior stretchEffectBehavior;
+7 −0
Original line number Diff line number Diff line
@@ -167,3 +167,10 @@ flag {
    purpose: PURPOSE_BUGFIX
  }
}

flag {
  name: "early_preload_gl_context"
  namespace: "core_graphics"
  description: "Initialize GL context and GraphicBufferAllocater init on renderThread preload. This improves app startup time for apps using GL."
  bug: "383612849"
}
 No newline at end of file
+10 −2
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@
#include <private/android/choreographer.h>
#include <sys/resource.h>
#include <ui/FatVector.h>
#include <ui/GraphicBufferAllocator.h>
#include <utils/Condition.h>
#include <utils/Log.h>
#include <utils/Mutex.h>
@@ -518,11 +519,18 @@ bool RenderThread::isCurrent() {
void RenderThread::preload() {
    // EGL driver is always preloaded only if HWUI renders with GL.
    if (Properties::getRenderPipelineType() == RenderPipelineType::SkiaGL) {
        if (Properties::earlyPreloadGlContext()) {
            queue().post([this]() { requireGlContext(); });
        } else {
            std::thread eglInitThread([]() { eglGetDisplay(EGL_DEFAULT_DISPLAY); });
            eglInitThread.detach();
        }
    } else {
        requireVkContext();
    }
    if (Properties::earlyPreloadGlContext()) {
        queue().post([]() { GraphicBufferAllocator::getInstance(); });
    }
    HardwareBitmapUploader::initialize();
}