summaryrefslogtreecommitdiff
path: root/vulkan
diff options
context:
space:
mode:
authorYiwei Zhang <zzyiwei@google.com>2020-07-16 13:51:12 -0700
committerYiwei Zhang <zzyiwei@google.com>2020-07-16 15:45:36 -0700
commitc889d3c5763d34ecfff99cff8df1c6e85aac00d0 (patch)
treed4dd65f8af9cc8a4fb9f42b01fbfadb9dc3b15bf /vulkan
parent8dcf124c0894e90b932ff5501892dacc37f36fad (diff)
downloadnative-c889d3c5763d34ecfff99cff8df1c6e85aac00d0.tar.gz
libvulkan: make vkEnumerateInstanceVersion trigger driver loading
This is a globally dispatched api, and it's the best option to preload the driver in Zygote with minimum overhead. This change also updates some return codes according to the spec. Bug: 135536511 Test: take a trace and verify driver is loaded Change-Id: I6fe425ec568b13577d3d9471aa5f181cff44c61c
Diffstat (limited to 'vulkan')
-rw-r--r--vulkan/libvulkan/api.cpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/vulkan/libvulkan/api.cpp b/vulkan/libvulkan/api.cpp
index 5b9affd03a..80166c8434 100644
--- a/vulkan/libvulkan/api.cpp
+++ b/vulkan/libvulkan/api.cpp
@@ -1256,7 +1256,7 @@ VkResult EnumerateInstanceLayerProperties(uint32_t* pPropertyCount,
ATRACE_CALL();
if (!EnsureInitialized())
- return VK_ERROR_INITIALIZATION_FAILED;
+ return VK_ERROR_OUT_OF_HOST_MEMORY;
uint32_t count = GetLayerCount();
@@ -1280,7 +1280,7 @@ VkResult EnumerateInstanceExtensionProperties(
ATRACE_CALL();
if (!EnsureInitialized())
- return VK_ERROR_INITIALIZATION_FAILED;
+ return VK_ERROR_OUT_OF_HOST_MEMORY;
if (pLayerName) {
const Layer* layer = FindLayer(pLayerName);
@@ -1456,6 +1456,11 @@ VkResult EnumerateDeviceExtensionProperties(
VkResult EnumerateInstanceVersion(uint32_t* pApiVersion) {
ATRACE_CALL();
+ // Load the driver here if not done yet. This api will be used in Zygote
+ // for Vulkan driver pre-loading because of the minimum overhead.
+ if (!EnsureInitialized())
+ return VK_ERROR_OUT_OF_HOST_MEMORY;
+
*pApiVersion = VK_API_VERSION_1_1;
return VK_SUCCESS;
}