diff --git a/renderdoc/driver/vulkan/wrappers/vk_device_funcs.cpp b/renderdoc/driver/vulkan/wrappers/vk_device_funcs.cpp index 867c3bef5..86cff7fa3 100644 --- a/renderdoc/driver/vulkan/wrappers/vk_device_funcs.cpp +++ b/renderdoc/driver/vulkan/wrappers/vk_device_funcs.cpp @@ -428,17 +428,30 @@ VkResult WrappedVulkan::vkCreateInstance(const VkInstanceCreateInfo *pCreateInfo hasDebugReport = true; } + std::vector supportedExts; + // enumerate what instance extensions are available void *module = Process::LoadModule(VulkanLibraryName); - PFN_vkEnumerateInstanceExtensionProperties enumInstExts = - (PFN_vkEnumerateInstanceExtensionProperties)Process::GetFunctionAddress( - module, "vkEnumerateInstanceExtensionProperties"); + if(module) + { + PFN_vkEnumerateInstanceExtensionProperties enumInstExts = + (PFN_vkEnumerateInstanceExtensionProperties)Process::GetFunctionAddress( + module, "vkEnumerateInstanceExtensionProperties"); - uint32_t numSupportedExts = 0; - enumInstExts(NULL, &numSupportedExts, NULL); + if(enumInstExts) + { + uint32_t numSupportedExts = 0; + enumInstExts(NULL, &numSupportedExts, NULL); - std::vector supportedExts(numSupportedExts); - enumInstExts(NULL, &numSupportedExts, &supportedExts[0]); + supportedExts.resize(numSupportedExts); + enumInstExts(NULL, &numSupportedExts, &supportedExts[0]); + } + } + + if(supportedExts.empty()) + RDCWARN( + "Couldn't load vkEnumerateInstanceExtensionProperties in vkCreateInstance to enumerate " + "instance extensions"); // always enable debug report, if it's available if(!hasDebugReport)