anv: Use vk_outarray in vkEnumeratePhysicalDevices (v2)

No intended change in behavior. Just a refactor.

v2: Replace vk_outarray_is_incomplete() with vk_outarray_status(). For
    Jason.

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
This commit is contained in:
Chad Versace
2017-03-05 13:07:13 -08:00
parent 62160536a0
commit 876f0ecd2f

View File

@@ -390,6 +390,7 @@ VkResult anv_EnumeratePhysicalDevices(
VkPhysicalDevice* pPhysicalDevices) VkPhysicalDevice* pPhysicalDevices)
{ {
ANV_FROM_HANDLE(anv_instance, instance, _instance); ANV_FROM_HANDLE(anv_instance, instance, _instance);
VK_OUTARRAY_MAKE(out, pPhysicalDevices, pPhysicalDeviceCount);
VkResult result; VkResult result;
if (instance->physicalDeviceCount < 0) { if (instance->physicalDeviceCount < 0) {
@@ -411,35 +412,11 @@ VkResult anv_EnumeratePhysicalDevices(
} }
} }
/* pPhysicalDeviceCount is an out parameter if pPhysicalDevices is NULL; vk_outarray_append(&out, i) {
* otherwise it's an inout parameter. *i = anv_physical_device_to_handle(&instance->physicalDevice);
*
* The Vulkan spec (git aaed022) says:
*
* pPhysicalDeviceCount is a pointer to an unsigned integer variable
* that is initialized with the number of devices the application is
* prepared to receive handles to. pname:pPhysicalDevices is pointer to
* an array of at least this many VkPhysicalDevice handles [...].
*
* Upon success, if pPhysicalDevices is NULL, vkEnumeratePhysicalDevices
* overwrites the contents of the variable pointed to by
* pPhysicalDeviceCount with the number of physical devices in in the
* instance; otherwise, vkEnumeratePhysicalDevices overwrites
* pPhysicalDeviceCount with the number of physical handles written to
* pPhysicalDevices.
*/
if (!pPhysicalDevices) {
*pPhysicalDeviceCount = instance->physicalDeviceCount;
} else if (*pPhysicalDeviceCount >= 1) {
pPhysicalDevices[0] = anv_physical_device_to_handle(&instance->physicalDevice);
*pPhysicalDeviceCount = 1;
} else if (*pPhysicalDeviceCount < instance->physicalDeviceCount) {
return VK_INCOMPLETE;
} else {
*pPhysicalDeviceCount = 0;
} }
return VK_SUCCESS; return vk_outarray_status(&out);
} }
void anv_GetPhysicalDeviceFeatures( void anv_GetPhysicalDeviceFeatures(