Show Your Support: Have you heard of Phoronix Premium? It's what complements advertisements on this site for our premium ad-free service. For less than $4 USD per month, you can help support our site while the funds generated allow us to keep doing Linux hardware reviews, performance benchmarking, maintain our community forums, and much more.
Intel Lands Initial Code For Mesh Shaders Within Mesa
The Mesa NIR/SPIR-V changes for supporting mesh shaders as outlined via the SPV_NV_mesh_shader extension have been merged with the exception of multi-view support not being ready yet. The SPV_NV_mesh_shader extension is about exposing GLSL GL_NV_mesh_shader support in turn with support for the new task and mesh shader types.
This extension provides a new mechanism allowing applications to use two new programmable shader types -- the task and mesh shader -- to generate collections of geometric primitives to be processed by fixed-function primitive assembly and rasterization logic. When the task and mesh shaders are drawn, they replace the standard programmable vertex processing pipeline, including vertex array attribute fetching, vertex shader processing, tessellation, and the geometry shader processing.
NVIDIA has supported mesh shaders since Turing and AMD can support mesh shaders with RDNA2 GPUs albeit we hadn't seen their open-source driver support for them yet. It's with Intel's upcoming Xe HPG gaming graphics card where Intel is also expected to have the necessary hardware support for mesh shaders. Mesh shader support for Xe HPG was previously hinted at by Raja Koduri.
Now the NIR/SPIR-V changes are in place for allowing mesh shaders via SPV_NV_mesh_shader / GL_NV_mesh_shader with this merge request that landed in Mesa 21.3-devel after being open for the past three months. The Intel ANV driver will still need to advertise the mesh/task shader stage support but at least the foundation is getting into place, similar to Intel's ongoing work for Vulkan ray-tracing support for Xe HPG as well. With this mesh shader NIR/SPIR-V work being in common code, this may help along RADV as well in ultimately supporting mesh shaders for Radeon RX 6000 series hardware.