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
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user