anv: Set more flags on descriptor pool buffers
authorJason Ekstrand <jason@jlekstrand.net>
Fri, 25 Oct 2019 22:12:06 +0000 (17:12 -0500)
committerJason Ekstrand <jason@jlekstrand.net>
Thu, 31 Oct 2019 13:46:09 +0000 (13:46 +0000)
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>
src/intel/vulkan/anv_descriptor_set.c

index 80a34695e08f71cc12c684b7ca0c4ae94f240fc1..3951a665e188821b54335e54967d57f4d9b0d38f 100644 (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;