anv: add ring buffer mode to generated draw optimization
authorLionel Landwerlin <lionel.g.landwerlin@intel.com>
Wed, 20 Sep 2023 17:04:16 +0000 (20:04 +0300)
committerMarge Bot <emma+marge@anholt.net>
Fri, 20 Oct 2023 13:07:53 +0000 (13:07 +0000)
commit11b4c23d19b26c3510e27d3b5e51271ca52c6bd5
tree530807e3292f220f04c278ac68f5379bb4d78ee1
parent718e77eee57b5b9a1b0bf64bb32ffc4afd2cf7c1
anv: add ring buffer mode to generated draw optimization

When the number of draw calls is very large, instead of allocating
large amounts of batch buffer space for the draws, use a ring buffer
and process the draw calls by batches.

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/8645
Reviewed-by: Ivan Briano <ivan.briano@intel.com>
Tested-by: Felix DeGrood <felix.j.degrood@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25361>
src/intel/vulkan/anv_batch_chain.c
src/intel/vulkan/anv_device.c
src/intel/vulkan/anv_internal_kernels.c
src/intel/vulkan/anv_private.h
src/intel/vulkan/genX_cmd_draw_generated_indirect.h
src/intel/vulkan/shaders/common_generated_draws.glsl
src/intel/vulkan/shaders/gfx11_generated_draws.glsl
src/intel/vulkan/shaders/gfx9_generated_draws.glsl
src/intel/vulkan/shaders/interface.h
src/util/driconf.h