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

Commit 6a7dc402 authored by Yiwei Zhang's avatar Yiwei Zhang
Browse files

Zygote: preload Vulkan driver if hwui renders with Vulkan

In Android 12, vkEnumerateInstanceVersion is made to trigger driver
loading and the api itself neither has extra overhead nor talk to the
driver. So this change uses vkEnumerateInstanceVersion to preload
Vulkan driver in Zygote.

Bug: 135536511
Test: atest CtsUiRenderingTestCases all pass on GL backend
Test: atest CtsUiRenderingTestCases no regression on VK backend
Change-Id: I5017b922843aadc2c4a4237711b8011857703129
parent 43f44ad7
Loading
Loading
Loading
Loading
+10 −5
Original line number Diff line number Diff line
@@ -16,14 +16,14 @@

#include "android/graphics/jni_runtime.h"

#include <android/log.h>
#include <nativehelper/JNIHelp.h>
#include <sys/cdefs.h>

#include <EGL/egl.h>
#include <GraphicsJNI.h>
#include <Properties.h>
#include <SkGraphics.h>
#include <android/log.h>
#include <nativehelper/JNIHelp.h>
#include <sys/cdefs.h>
#include <vulkan/vulkan.h>

#undef LOG_TAG
#define LOG_TAG "AndroidGraphicsJNI"
@@ -172,6 +172,11 @@ using android::uirenderer::RenderPipelineType;

void zygote_preload_graphics() {
    if (Properties::peekRenderPipelineType() == RenderPipelineType::SkiaGL) {
        // Preload GL driver if HWUI renders with GL backend.
        eglGetDisplay(EGL_DEFAULT_DISPLAY);
    } else {
        // Preload Vulkan driver if HWUI renders with Vulkan backend.
        uint32_t apiVersion;
        vkEnumerateInstanceVersion(&apiVersion);
    }
}