Fix Vulkan null_driver's EnumeratePhysicalDevices()
Counter to the Vulkan spec, the EnumeratePhysicalDevices() function was always
setting the count to 1, even when it didn't write anything. This caused a
crash with the "dEQP-VK.api.info.instance.physical_devices" test case of the
Vulkan CTS v1.0.2.
Test: Run Vulkan CTS v1.0.2 (doesn't crash right away)
Change-Id: I1b7ba9f11229197efb825d8d0ad1b9ad88f029fb
diff --git a/vulkan/nulldrv/null_driver.cpp b/vulkan/nulldrv/null_driver.cpp
index 6714779..6814ae6 100644
--- a/vulkan/nulldrv/null_driver.cpp
+++ b/vulkan/nulldrv/null_driver.cpp
@@ -343,9 +343,14 @@
VkResult EnumeratePhysicalDevices(VkInstance instance,
uint32_t* physical_device_count,
VkPhysicalDevice* physical_devices) {
- if (physical_devices && *physical_device_count >= 1)
+ if (!physical_devices)
+ *physical_device_count = 1;
+ else if (*physical_device_count == 0)
+ return VK_INCOMPLETE;
+ else {
physical_devices[0] = &instance->physical_device;
- *physical_device_count = 1;
+ *physical_device_count = 1;
+ }
return VK_SUCCESS;
}