diff --git a/src/vulkan/device-select-layer/device_select_layer.c b/src/vulkan/device-select-layer/device_select_layer.c index 194c0f07e97..c26544973eb 100644 --- a/src/vulkan/device-select-layer/device_select_layer.c +++ b/src/vulkan/device-select-layer/device_select_layer.c @@ -550,6 +550,10 @@ static VkResult device_select_EnumeratePhysicalDevices(VkInstance instance, const char* selection = getenv("MESA_VK_DEVICE_SELECT"); bool expose_only_one_dev = false; VkResult result = info->EnumeratePhysicalDevices(instance, &physical_device_count, NULL); + if (!pPhysicalDevices) { + *pPhysicalDeviceCount = physical_device_count; + return result; + } VK_OUTARRAY_MAKE_TYPED(VkPhysicalDevice, out, pPhysicalDevices, pPhysicalDeviceCount); if (result != VK_SUCCESS) return result; @@ -633,6 +637,10 @@ static VkResult device_select_EnumeratePhysicalDeviceGroups(VkInstance instance, uint32_t physical_device_group_count = 0; uint32_t selected_physical_device_group_count = 0; VkResult result = info->EnumeratePhysicalDeviceGroups(instance, &physical_device_group_count, NULL); + if (!pPhysicalDeviceGroups) { + *pPhysicalDeviceGroupCount = physical_device_group_count; + return result; + } VK_OUTARRAY_MAKE_TYPED(VkPhysicalDeviceGroupProperties, out, pPhysicalDeviceGroups, pPhysicalDeviceGroupCount); if (result != VK_SUCCESS)