radv: Add support for VK_EXT_mesh_shader

Merged Timur Kristóf requested to merge Venemo/mesa:radv-ext-mesh into main

Based on MR !18366 (merged)

RADV support for task and mesh shaders that use the newly released VK_EXT_mesh_shader extension. Note that the commits included in this MR have been already reviewed here.

  • Adds support for VK_EXT_mesh_shader primitive indices, CullPrimitiveEXT, SetMeshOutputsEXT in ac_nir_lower_ngg
  • Adds new draw calls to RADV (these are the same we already had, except mesh-only indirect draws)
  • Enable on RDNA2 with a perf test flag.

Note, this support is considered experimental and only enabled via the RADV_PERFTEST=ext_ms environment variable. This is because it can't work safely without "gang submit" implemented in the AMDGPU driver in the Linux kernel. Without gang submit, this can deadlock your GPU when multiple processes use task shaders at the same time. Gang submit is currently under development by the AMDGPU developers.

Edited by Timur Kristóf

Merge request reports