From 6ec54465d489b7b5fe5da27188e73154617332c2 Mon Sep 17 00:00:00 2001 From: Juston Li Date: Thu, 20 Apr 2023 14:36:53 -0700 Subject: [PATCH] venus: filter out queue familes with exclusive sparse binding support We require the queue to have additional support to be able to send feedback commands. Part-of: --- src/virtio/vulkan/vn_physical_device.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/virtio/vulkan/vn_physical_device.c b/src/virtio/vulkan/vn_physical_device.c index 1f6f6fd5ac7..fe32cbcf2cb 100644 --- a/src/virtio/vulkan/vn_physical_device.c +++ b/src/virtio/vulkan/vn_physical_device.c @@ -766,8 +766,20 @@ vn_physical_device_init_queue_family_properties( vn_call_vkGetPhysicalDeviceQueueFamilyProperties2( instance, vn_physical_device_to_handle(physical_dev), &count, props); + /* Filter out queue families that exclusively support sparse binding as + * we need additional support for submitting feedback commands + */ + uint32_t non_sparse_only_count = 0; + for (uint32_t i = 0; i < count; i++) { + if (props[i].queueFamilyProperties.queueFlags & + ~VK_QUEUE_SPARSE_BINDING_BIT) { + props[non_sparse_only_count++].queueFamilyProperties = + props[i].queueFamilyProperties; + } + } + physical_dev->queue_family_properties = props; - physical_dev->queue_family_count = count; + physical_dev->queue_family_count = non_sparse_only_count; return VK_SUCCESS; }