From 99171cc794f34cf1048946ead9e7202c35b9ca1e Mon Sep 17 00:00:00 2001 From: baldurk Date: Mon, 5 Oct 2020 17:46:14 +0100 Subject: [PATCH] Fix vulkan GetInstanceProcAddr to return NULL when instance is NULL * Few functions should actually be queriable without an instance. --- renderdoc/driver/vulkan/vk_layer.cpp | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/renderdoc/driver/vulkan/vk_layer.cpp b/renderdoc/driver/vulkan/vk_layer.cpp index 7b4149261..442111d33 100644 --- a/renderdoc/driver/vulkan/vk_layer.cpp +++ b/renderdoc/driver/vulkan/vk_layer.cpp @@ -411,14 +411,20 @@ VK_LAYER_RENDERDOC_CaptureGetInstanceProcAddr(VkInstance instance, const char *p { if(!strcmp("vkGetInstanceProcAddr", pName)) return (PFN_vkVoidFunction)&VK_LAYER_RENDERDOC_CaptureGetInstanceProcAddr; + if(!strcmp("vkEnumerateInstanceExtensionProperties", pName)) + return (PFN_vkVoidFunction)&VK_LAYER_RENDERDOC_CaptureEnumerateInstanceExtensionProperties; if(!strcmp("vk_layerGetPhysicalDeviceProcAddr", pName)) return (PFN_vkVoidFunction)&VK_LAYER_RENDERDOC_Capture_layerGetPhysicalDeviceProcAddr; + + HookInit(CreateInstance); + + if(instance == VK_NULL_HANDLE) + return NULL; + if(!strcmp("vkEnumerateDeviceLayerProperties", pName)) return (PFN_vkVoidFunction)&VK_LAYER_RENDERDOC_CaptureEnumerateDeviceLayerProperties; if(!strcmp("vkEnumerateDeviceExtensionProperties", pName)) return (PFN_vkVoidFunction)&VK_LAYER_RENDERDOC_CaptureEnumerateDeviceExtensionProperties; - if(!strcmp("vkEnumerateInstanceExtensionProperties", pName)) - return (PFN_vkVoidFunction)&VK_LAYER_RENDERDOC_CaptureEnumerateInstanceExtensionProperties; if(!strcmp("vkGetDeviceProcAddr", pName)) return (PFN_vkVoidFunction)&VK_LAYER_RENDERDOC_CaptureGetDeviceProcAddr; if(!strcmp("vkCreateDevice", pName)) @@ -428,9 +434,6 @@ VK_LAYER_RENDERDOC_CaptureGetInstanceProcAddr(VkInstance instance, const char *p HookInitVulkanInstance(); - if(instance == VK_NULL_HANDLE) - return NULL; - InstanceDeviceInfo *instDevInfo = NULL; if(WrappedVkInstance::IsAlloc(instance))