diff options
| author | Chia-I Wu <olv@google.com> | 2016-04-28 14:38:57 +0800 |
|---|---|---|
| committer | Tobin Ehlis <tobine@google.com> | 2016-05-05 06:42:18 -0600 |
| commit | 24e14a2376775acb9a9541f138995451790dde53 (patch) | |
| tree | 1209211119e4c76db81594eb4183e602e1a988a6 /layers/image.cpp | |
| parent | c9295376891e6e84cc4ea6754ce85d42b8a2f0da (diff) | |
| download | usermoji-24e14a2376775acb9a9541f138995451790dde53.tar.xz | |
image: refactor GetInstanceProcAddr
Split command intercepting out to intercept_core_instance_command.
Diffstat (limited to 'layers/image.cpp')
| -rw-r--r-- | layers/image.cpp | 48 |
1 files changed, 30 insertions, 18 deletions
diff --git a/layers/image.cpp b/layers/image.cpp index 9a914801..ded6f170 100644 --- a/layers/image.cpp +++ b/layers/image.cpp @@ -1258,6 +1258,8 @@ VKAPI_ATTR VkResult VKAPI_CALL EnumerateDeviceExtensionProperties(VkPhysicalDevi } static PFN_vkVoidFunction +intercept_core_instance_command(const char *name); +static PFN_vkVoidFunction intercept_core_device_command(const char *name); VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL GetDeviceProcAddr(VkDevice device, const char *funcName) { @@ -1278,24 +1280,9 @@ VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL GetDeviceProcAddr(VkDevice device, cons } VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL GetInstanceProcAddr(VkInstance instance, const char *funcName) { - if (!strcmp(funcName, "vkGetInstanceProcAddr")) - return (PFN_vkVoidFunction)GetInstanceProcAddr; - if (!strcmp(funcName, "vkCreateInstance")) - return (PFN_vkVoidFunction)CreateInstance; - if (!strcmp(funcName, "vkDestroyInstance")) - return (PFN_vkVoidFunction)DestroyInstance; - if (!strcmp(funcName, "vkCreateDevice")) - return (PFN_vkVoidFunction)CreateDevice; - if (!strcmp(funcName, "vkEnumerateInstanceLayerProperties")) - return (PFN_vkVoidFunction)vkEnumerateInstanceLayerProperties; - if (!strcmp(funcName, "vkEnumerateInstanceExtensionProperties")) - return (PFN_vkVoidFunction)vkEnumerateInstanceExtensionProperties; - if (!strcmp(funcName, "vkEnumerateDeviceLayerProperties")) - return (PFN_vkVoidFunction)vkEnumerateDeviceLayerProperties; - if (!strcmp(funcName, "vkEnumerateDeviceExtensionProperties")) - return (PFN_vkVoidFunction)EnumerateDeviceExtensionProperties; - if (!strcmp(funcName, "vkGetPhysicalDeviceProperties")) - return (PFN_vkVoidFunction)GetPhysicalDeviceProperties; + PFN_vkVoidFunction proc = intercept_core_instance_command(funcName); + if (proc) + return proc; if (instance == NULL) { return NULL; @@ -1314,6 +1301,31 @@ VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL GetInstanceProcAddr(VkInstance instance } static PFN_vkVoidFunction +intercept_core_instance_command(const char *name) { + static const struct { + const char *name; + PFN_vkVoidFunction proc; + } core_instance_commands[] = { + { "vkGetInstanceProcAddr", reinterpret_cast<PFN_vkVoidFunction>(GetInstanceProcAddr) }, + { "vkCreateInstance", reinterpret_cast<PFN_vkVoidFunction>(CreateInstance) }, + { "vkDestroyInstance", reinterpret_cast<PFN_vkVoidFunction>(DestroyInstance) }, + { "vkCreateDevice", reinterpret_cast<PFN_vkVoidFunction>(CreateDevice) }, + { "vkEnumerateInstanceLayerProperties", reinterpret_cast<PFN_vkVoidFunction>(vkEnumerateInstanceLayerProperties) }, + { "vkEnumerateInstanceExtensionProperties", reinterpret_cast<PFN_vkVoidFunction>(vkEnumerateInstanceExtensionProperties) }, + { "vkEnumerateDeviceLayerProperties", reinterpret_cast<PFN_vkVoidFunction>(vkEnumerateDeviceLayerProperties) }, + { "vkEnumerateDeviceExtensionProperties", reinterpret_cast<PFN_vkVoidFunction>(EnumerateDeviceExtensionProperties) }, + { "vkGetPhysicalDeviceProperties", reinterpret_cast<PFN_vkVoidFunction>(GetPhysicalDeviceProperties) }, + }; + + for (size_t i = 0; i < ARRAY_SIZE(core_instance_commands); i++) { + if (!strcmp(core_instance_commands[i].name, name)) + return core_instance_commands[i].proc; + } + + return nullptr; +} + +static PFN_vkVoidFunction intercept_core_device_command(const char *name) { static const struct { const char *name; |
