diff options
| author | Chia-I Wu <olv@google.com> | 2016-05-06 12:04:23 +0800 |
|---|---|---|
| committer | Tobin Ehlis <tobine@google.com> | 2016-05-09 10:20:18 -0600 |
| commit | 5671432d05bf7164fbade181f15e6abfbc97bc76 (patch) | |
| tree | 8163be336a71df17988849a25e41b954a6abbb3d | |
| parent | 64a57273a3450658c5edcdc50c5e019aa984bbe5 (diff) | |
| download | usermoji-5671432d05bf7164fbade181f15e6abfbc97bc76.tar.xz | |
core_validation: handle device commands in GetInstanceProcAddr
Per commit 5bf16c33b9c1f38fc467d94716f276620a265327, extension check is
bypassed in GetInstanceProcAddr for VK_KHR_swapchain functions.
| -rw-r--r-- | layers/core_validation.cpp | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/layers/core_validation.cpp b/layers/core_validation.cpp index 3ffec4c4..8b625bc8 100644 --- a/layers/core_validation.cpp +++ b/layers/core_validation.cpp @@ -9785,6 +9785,10 @@ VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL GetDeviceProcAddr(VkDevice dev, const c VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL GetInstanceProcAddr(VkInstance instance, const char *funcName) { PFN_vkVoidFunction proc = intercept_core_instance_command(funcName); + if (!proc) + proc = intercept_core_device_command(funcName); + if (!proc) + proc = intercept_khr_swapchain_command(funcName, VK_NULL_HANDLE); if (proc) return proc; @@ -9977,9 +9981,11 @@ intercept_khr_swapchain_command(const char *name, VkDevice dev) { { "vkQueuePresentKHR", reinterpret_cast<PFN_vkVoidFunction>(QueuePresentKHR) }, }; - layer_data *dev_data = get_my_data_ptr(get_dispatch_key(dev), layer_data_map); - if (!dev_data->device_extensions.wsi_enabled) - return nullptr; + if (dev) { + layer_data *dev_data = get_my_data_ptr(get_dispatch_key(dev), layer_data_map); + if (!dev_data->device_extensions.wsi_enabled) + return nullptr; + } for (size_t i = 0; i < ARRAY_SIZE(khr_swapchain_commands); i++) { if (!strcmp(khr_swapchain_commands[i].name, name)) |
