Intel Vulkan Linux Driver Brings Experimental Mesh Shader Support To Arc Alchemist

Intel Arc Alchemist
Mesh shaders are one of the more interesting recent developments in computer graphics technology, despite that many users are very likely not heard of them, or only heard the name. In essence, mesh shaders are a programmable shader type that allows a GPU to shift some of the workload from fixed-function hardware over to the GPU's massive compute array.

They're a little complicated to use and difficult to implement—evidenced by AMD's announcement of the very similar "primitive shaders" at Vega's launch only for that feature to arrive stillborn. NVIDIA brought the idea to full fruition with Turing, and of course they're supported on Ampere, as well as AMD's RDNA2 GPUs. When used properly, mesh shaders can offer drastically improved efficiency in scenes with lots of geometry. That'll be important as games start to ramp up polycounts; see Epic's Unreal Engine 5 demos for examples.

nvidia meshlets
This image comes from NVIDIA's handy write-up explaining mesh shaders in detail.

3DMark actually has a specific test to demonstrate the benefits of mesh shaders that depicts a large hall filled with dozens of extremely detailed carved pillars. A traditional rendering pipeline suffers horrendous over-draw penalties in this scene, but by using mesh shaders, the GPU can discard (and thus skip drawing) all of the geometry outside the view frustrum. In that test it's common to see performance increases of 15x or more. Of course, it's a decidedly unrealistic worst-case scenario, but then, it's a demo, so that's kind of the point.

3dmark mesh shader feature test screenshot
3DMark's Mesh Shader Feature Test isn't much to look at, but it's an effective demo.

Obviously, if Intel wants to roll with the big boys in the discrete GPU space, it's going to need mesh shader support. We knew the hardware was capable; Intel already demoed the chips running the aforementioned 3DMark test, which uses DirectX 12. But now it works in Vulkan, too, as the latest version of team blue's "ANV" open-source Vulkan driver for Linux has preliminary support for mesh shaders using the VK_NV_mesh_shader vendor extension.

It doesn't take a genius to realize that that's an NVIDIA extension; as of yet, Khronos Group has not published a cross-vendor extension for mesh shader support. Hopefully that happens sooner rather than later, so that AMD and Intel (and thus game developers) can embrace Vulkan mesh shaders unreservedly. If you're a developer eager to fiddle with mesh shaders on Intel hardware, make sure you set the "ANV_EXPERIMENTAL_NV_MESH_SHADER" environment variable first, because the support is disabled by default.

Thanks to Phoronix for the tip-off.