diff --git a/renderdoc/driver/vulkan/wrappers/vk_device_funcs.cpp b/renderdoc/driver/vulkan/wrappers/vk_device_funcs.cpp index 5089e86e1..eb700a43a 100644 --- a/renderdoc/driver/vulkan/wrappers/vk_device_funcs.cpp +++ b/renderdoc/driver/vulkan/wrappers/vk_device_funcs.cpp @@ -1502,14 +1502,22 @@ VkResult WrappedVulkan::vkEnumeratePhysicalDevices(VkInstance instance, } } - if(pPhysicalDeviceCount) - *pPhysicalDeviceCount = count; + VkResult result = VK_SUCCESS; + if(pPhysicalDevices) + { + if(count > *pPhysicalDeviceCount) + { + count = *pPhysicalDeviceCount; + result = VK_INCOMPLETE; + } memcpy(pPhysicalDevices, devices, count * sizeof(VkPhysicalDevice)); + } + *pPhysicalDeviceCount = count; SAFE_DELETE_ARRAY(devices); - return VK_SUCCESS; + return result; } bool WrappedVulkan::SelectGraphicsComputeQueue(const rdcarray &queueProps,