anv: Set more flags on descriptor pool buffers

the ASYNC flag, in particular, has the potential to help performance
because it means less sync tracking in the kernel.

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
This commit is contained in:
Jason Ekstrand 2019-10-25 17:12:06 -05:00
parent c3eb4b3ba5
commit e0ee23660f

View file

@ -663,6 +663,7 @@ VkResult anv_CreateDescriptorPool(
VkDescriptorPool* pDescriptorPool)
{
ANV_FROM_HANDLE(anv_device, device, _device);
const struct anv_physical_device *pdevice = &device->instance->physicalDevice;
struct anv_descriptor_pool *pool;
const VkDescriptorPoolInlineUniformBlockCreateInfoEXT *inline_info =
@ -749,11 +750,17 @@ VkResult anv_CreateDescriptorPool(
return vk_error(VK_ERROR_OUT_OF_HOST_MEMORY);
}
if (device->instance->physicalDevice.use_softpin) {
if (pdevice->supports_48bit_addresses)
pool->bo.flags |= EXEC_OBJECT_SUPPORTS_48B_ADDRESS;
if (pdevice->use_softpin) {
pool->bo.flags |= EXEC_OBJECT_PINNED;
anv_vma_alloc(device, &pool->bo);
}
if (pdevice->has_exec_async)
pool->bo.flags |= EXEC_OBJECT_ASYNC;
util_vma_heap_init(&pool->bo_heap, POOL_HEAP_OFFSET, descriptor_bo_size);
} else {
pool->bo.size = 0;