Mesa's Radeon Vulkan Driver Lands Experimental Mesh Shaders
Thanks to Valve engineer Timur Kristóf and other open-source developers involved, Mesa's Radeon Vulkan driver "RADV" is ending 2021 on a high note: mesh shaders was just merged!
As noted back in October, RADV has been working on mesh shaders at least in experimental form and making use of NVIDIA's NV_mesh_shader extension.
Mesh shaders provide a compute-like shader stage to replace the conventional vertex/geometry pipeline. This work though is expected to remain "experimental" until there is a proper Vulkan cross-vendor extension around mesh shaders as NV_mesh_shader is known to perform poorly on AMD hardware for which the extension was not designed.
Mesh shaders support requires Radeon RX 6000 "RDNA2" GPUs and newer for support. This experimental mesh shaders support will be part of Mesa 22.0 that will debut as stable by March. This may prove beneficial for VKD3D-Proton in mapping Direct3D 12 mesh shaders atop Vulkan but, again, the performance isn't expected to be optimal.
RADV developers are also pursuing support for task shaders too but not part of today's New Year's Eve code landing.
Given the experimental state, on Mesa 22.0 the RADV mesh shader support with RDNA2 GPUs is only being exposed with the new "nv_ms" RADV_PERFTEST environment variable flag.
RADV landing mesh shaders is a wonderful way to end 2021 for this open-source Mesa Radeon Vulkan driver worked on heavily by the likes of Valve, Red Hat, Google, and the open-source community. It will be interesting to see where RADV heads in 2022 and how the performance evolves -- see yesterday's RADV vs. AMDVLK benchmarks for a current look at the AMD Vulkan Linux driver performance.