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
diff --git a/libs/hwui/apex/jni_runtime.cpp b/libs/hwui/apex/jni_runtime.cpp
index b933813..12e2e81 100644
--- a/libs/hwui/apex/jni_runtime.cpp
+++ b/libs/hwui/apex/jni_runtime.cpp
@@ -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 @@
 
 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);
     }
-}
\ No newline at end of file
+}