summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYiwei Zhang <zzyiwei@chromium.org>2021-08-22 22:26:54 +0000
committerMarge Bot <eric+marge@anholt.net>2021-08-26 17:56:19 +0000
commit3538b5af6dedbff09913a3a959d1a869415e310b (patch)
treeee06e8aa1793d181799dc6a306f0cef0cd803b2d
parent288ce1b033faf1123b76688d9a02323484f21810 (diff)
venus: conditionally enable async descriptor set allocation
When VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT is not used to create the pool, set allocation is guaranteed to not return VK_ERROR_FRAGMENTED_POOL, and we can safely move set allocation to async after doing resource tracking in the driver. Enable after fully tested with assert(false) in the failure case. Tested with: - dEQP-VK.api.descriptor* - dEQP-VK.api.object_management.* - dEQP-VK.binding_model.descriptor* - dEQP-VK.descriptor_indexing.* Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org> Reviewed-by: Chia-I Wu <olvaffe@gmail.com> Reviewed-by: Ryan Neph <ryanneph@google.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12501>
-rw-r--r--src/virtio/vulkan/vn_descriptor_set.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/src/virtio/vulkan/vn_descriptor_set.c b/src/virtio/vulkan/vn_descriptor_set.c
index b6a1da54a01..a88e071acf2 100644
--- a/src/virtio/vulkan/vn_descriptor_set.c
+++ b/src/virtio/vulkan/vn_descriptor_set.c
@@ -444,10 +444,15 @@ vn_AllocateDescriptorSets(VkDevice device,
pDescriptorSets[i] = set_handle;
}
- result = vn_call_vkAllocateDescriptorSets(dev->instance, device,
- pAllocateInfo, pDescriptorSets);
- if (result != VK_SUCCESS)
- goto fail;
+ if (pool->async_set_allocation) {
+ vn_async_vkAllocateDescriptorSets(dev->instance, device, pAllocateInfo,
+ pDescriptorSets);
+ } else {
+ result = vn_call_vkAllocateDescriptorSets(
+ dev->instance, device, pAllocateInfo, pDescriptorSets);
+ if (result != VK_SUCCESS)
+ goto fail;
+ }
return VK_SUCCESS;