anv: create a pool for indirect descriptors

We'll use the fact that the pool is aligned to 4Gb to limit the amount
of address computations to build the address in the shaders.

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21645>
This commit is contained in:
Lionel Landwerlin
2023-02-22 09:00:35 +02:00
committed by Marge Bot
parent 6367691b58
commit d2c0147228
7 changed files with 173 additions and 45 deletions

View File

@@ -384,6 +384,9 @@ enum anv_bo_alloc_flags {
/** This buffer will be scanout to display */
ANV_BO_ALLOC_SCANOUT = (1 << 12),
/** For descriptor pools */
ANV_BO_ALLOC_DESCRIPTOR_POOL = (1 << 13),
};
struct anv_bo {
@@ -956,6 +959,8 @@ struct anv_physical_device {
struct anv_va_range scratch_surface_state_pool;
struct anv_va_range bindless_surface_state_pool;
struct anv_va_range instruction_state_pool;
struct anv_va_range descriptor_pool;
struct anv_va_range push_descriptor_pool;
struct anv_va_range client_visible_heap;
struct anv_va_range high_heap;
} va;
@@ -1123,6 +1128,7 @@ struct anv_device {
struct util_vma_heap vma_lo;
struct util_vma_heap vma_cva;
struct util_vma_heap vma_hi;
struct util_vma_heap vma_desc;
/** List of all anv_device_memory objects */
struct list_head memory_objects;
@@ -1142,6 +1148,7 @@ struct anv_device {
struct anv_state_pool scratch_surface_state_pool;
struct anv_state_pool internal_surface_state_pool;
struct anv_state_pool bindless_surface_state_pool;
struct anv_state_pool push_descriptor_pool;
struct anv_state_reserved_pool custom_border_colors;
@@ -2827,6 +2834,7 @@ struct anv_cmd_buffer {
struct anv_state_stream surface_state_stream;
struct anv_state_stream dynamic_state_stream;
struct anv_state_stream general_state_stream;
struct anv_state_stream push_descriptor_stream;
VkCommandBufferUsageFlags usage_flags;