aboutsummaryrefslogtreecommitdiff
path: root/layers/core_validation.cpp
diff options
context:
space:
mode:
authorChia-I Wu <olv@google.com>2016-05-06 12:04:23 +0800
committerTobin Ehlis <tobine@google.com>2016-05-09 10:20:18 -0600
commit5671432d05bf7164fbade181f15e6abfbc97bc76 (patch)
tree8163be336a71df17988849a25e41b954a6abbb3d /layers/core_validation.cpp
parent64a57273a3450658c5edcdc50c5e019aa984bbe5 (diff)
downloadusermoji-5671432d05bf7164fbade181f15e6abfbc97bc76.tar.xz
core_validation: handle device commands in GetInstanceProcAddr
Per commit 5bf16c33b9c1f38fc467d94716f276620a265327, extension check is bypassed in GetInstanceProcAddr for VK_KHR_swapchain functions.
Diffstat (limited to 'layers/core_validation.cpp')
-rw-r--r--layers/core_validation.cpp12
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))