From 0f8c9073b7ab0f1ee47d7cd9fa50a7bce8872815 Mon Sep 17 00:00:00 2001 From: baldurk Date: Thu, 23 Jan 2020 12:32:04 +0000 Subject: [PATCH] Hopefully fix handling of physical device functions in vkGet*ProcAddr --- renderdoc/driver/vulkan/vk_layer.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/renderdoc/driver/vulkan/vk_layer.cpp b/renderdoc/driver/vulkan/vk_layer.cpp index 9ccf762bd..2c93887ed 100644 --- a/renderdoc/driver/vulkan/vk_layer.cpp +++ b/renderdoc/driver/vulkan/vk_layer.cpp @@ -400,6 +400,8 @@ VK_LAYER_RENDERDOC_CaptureGetInstanceProcAddr(VkInstance instance, const char *p HookInitVulkanDeviceExts(); + HookInitVulkanInstanceExts_PhysDev(); + if(GetInstanceDispatchTable(instance)->GetInstanceProcAddr == NULL) return NULL; return GetInstanceDispatchTable(instance)->GetInstanceProcAddr(Unwrap(instance), pName); @@ -456,9 +458,6 @@ VK_LAYER_RENDERDOC_Capture_layerGetPhysicalDeviceProcAddr(VkInstance instance, c CheckInstanceExts(); CheckDeviceExts(); - // any extensions that are known to be physical device functions, return here - HookInitVulkanInstanceExts_PhysDev(); - // any remaining functions that are known, we must return NULL for #undef HookInitExtension #define HookInitExtension(cond, function) \ @@ -471,6 +470,9 @@ VK_LAYER_RENDERDOC_Capture_layerGetPhysicalDeviceProcAddr(VkInstance instance, c !strcmp(pName, STRINGIZE(CONCAT(vk, CONCAT(function, suffix))))) \ return NULL; + // any extensions that are known to be physical device functions, return here + HookInitVulkanInstanceExts_PhysDev(); + HookInitVulkanInstanceExts(); HookInitVulkanDeviceExts();