Radeon RADV Driver Lands Vulkan Mesh Shader Support
Vulkan 1.3.226 introduced VK_EXT_mesh_shader with its publication last week. VK_EXT_mesh_shader is the cross-vendor mesh shader extension succeeding NVIDIA's vendor-specific extension up to this point. VK_EXT_mesh_shader is a new mechanism to let applications generate collections of geometric primitives via programmable mesh shading. Vulkan mesh shaders are an alternative to the existing programmable primitive shading pipeline.
NVIDIA published a new Vulkan beta driver for Windows and Linux with EXT_mesh_shader support back on launch day. Intel's open-source ANV driver landed support ahead of the weekend. And now kicking off the new week is the RADV support being merged.
With the VK_EXT_mesh_shader extension being worked on by Valve developers including those involved with RADV, prior to the spec going public they were already working on enablement patches. When the spec went public they opened the merge request and now with the code having been reviewed, the RADV support was merged today for next quarter's Mesa 22.3 release.
The Radeon RADV mesh shader support requires RDNA2 GPUs and newer. At least for now this Radeon Vulkan mesh shader support also requires setting the RADV_PERFTEST=ext_ms environment variable with Mesa Git. The merge request outlines how this mesh shader support is being treated as experimental until AMDGPU kernel driver functionality around gang submit is in place:
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.