anv: Use vk_outarray in vkGetPhysicalDeviceQueueFamilyProperties

No intended change in behavior. Just a refactor.

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

View File

@@ -660,43 +660,27 @@ void anv_GetPhysicalDeviceProperties2KHR(
}
}
static void
anv_get_queue_family_properties(struct anv_physical_device *phys_dev,
VkQueueFamilyProperties *props)
{
*props = (VkQueueFamilyProperties) {
.queueFlags = VK_QUEUE_GRAPHICS_BIT |
VK_QUEUE_COMPUTE_BIT |
VK_QUEUE_TRANSFER_BIT,
.queueCount = 1,
.timestampValidBits = 36, /* XXX: Real value here */
.minImageTransferGranularity = (VkExtent3D) { 1, 1, 1 },
};
}
/* We support exactly one queue family. */
static const VkQueueFamilyProperties
anv_queue_family_properties = {
.queueFlags = VK_QUEUE_GRAPHICS_BIT |
VK_QUEUE_COMPUTE_BIT |
VK_QUEUE_TRANSFER_BIT,
.queueCount = 1,
.timestampValidBits = 36, /* XXX: Real value here */
.minImageTransferGranularity = (VkExtent3D) { 1, 1, 1 },
};
void anv_GetPhysicalDeviceQueueFamilyProperties(
VkPhysicalDevice physicalDevice,
uint32_t* pCount,
VkQueueFamilyProperties* pQueueFamilyProperties)
{
ANV_FROM_HANDLE(anv_physical_device, phys_dev, physicalDevice);
VK_OUTARRAY_MAKE(out, pQueueFamilyProperties, pCount);
if (pQueueFamilyProperties == NULL) {
*pCount = 1;
return;
vk_outarray_append(&out, p) {
*p = anv_queue_family_properties;
}
/* The spec implicitly allows the incoming count to be 0. From the Vulkan
* 1.0.38 spec, Section 4.1 Physical Devices:
*
* If the value referenced by pQueueFamilyPropertyCount is not 0 [then
* do stuff].
*/
if (*pCount == 0)
return;
*pCount = 1;
anv_get_queue_family_properties(phys_dev, pQueueFamilyProperties);
}
void anv_GetPhysicalDeviceQueueFamilyProperties2KHR(
@@ -705,34 +689,13 @@ void anv_GetPhysicalDeviceQueueFamilyProperties2KHR(
VkQueueFamilyProperties2KHR* pQueueFamilyProperties)
{
ANV_FROM_HANDLE(anv_physical_device, phys_dev, physicalDevice);
VK_OUTARRAY_MAKE(out, pQueueFamilyProperties, pQueueFamilyPropertyCount);
if (pQueueFamilyProperties == NULL) {
*pQueueFamilyPropertyCount = 1;
return;
}
vk_outarray_append(&out, p) {
p->queueFamilyProperties = anv_queue_family_properties;
/* The spec implicitly allows the incoming count to be 0. From the Vulkan
* 1.0.38 spec, Section 4.1 Physical Devices:
*
* If the value referenced by pQueueFamilyPropertyCount is not 0 [then
* do stuff].
*/
if (*pQueueFamilyPropertyCount == 0)
return;
/* We support exactly one queue family. So need to traverse only the first
* array element's pNext chain.
*/
*pQueueFamilyPropertyCount = 1;
anv_get_queue_family_properties(phys_dev,
&pQueueFamilyProperties->queueFamilyProperties);
vk_foreach_struct(ext, pQueueFamilyProperties->pNext) {
switch (ext->sType) {
default:
anv_debug_ignored_stype(ext->sType);
break;
vk_foreach_struct(s, p->pNext) {
anv_debug_ignored_stype(s->sType);
}
}
}