Hacker News new | ask | show | jobs
by cubefox 618 days ago
Nit: Mesh shading, or the mesh shader pipeline, has two unique parts: optional task/amplification shaders, and mandatory mesh shaders.
1 comments

Thanks both for pulling on this point. In drafting, I was both torn and fuzzy about the nomenclature. Also trying to be distinct about hardware features (dynamic vertex data?) versus language/API constructs. But you are right, it's important to be clear because they are different and hardware might not support both.

I was trying to see if the other graphics APIs (Vulkan, DirectX) had this Vertex Amplification in Vertex Shader feature, but it doesn't seem so? Maybe it was easier for Apple to inject the concept into Metal (advantage of controlling of the whole stack).

I'm not sure this is relevant but apparently Apple introduced proper mesh shading only with the M3 generation chips:

> The [M3] GPU is faster and more efficient, and introduces a new technology called Dynamic Caching, while bringing new rendering features like hardware-accelerated ray tracing and mesh shading to Mac for the first time.

https://www.apple.com/ne/newsroom/2023/10/apple-unveils-m3-m...

That means the M2 (which is inside the Apple Vision) must have at most some sort of partial mesh shading support.

AFAIK Apple support fallback to compute shader based implementations of both raytracing and mesh shading on older GPUs. It’ll be slower, but for something like amplification shaders the win would be worth it
I actually researched this a bit right when it came out.... I can't find my source now, but Vision Pro has its own SOC with an M2 CPU with a "2.5" GPU (between M2 and M3 families, like M2 with some goodies). Oddly, Vision isn't discussed in the handy Metal Feature Set Table [1].

The GPU Family Apple7 was the first with Mesh Shader support, but as you noted it might be software fallbacks down there.

I did just check with my Vision Pro and I get MTLGPUFamily [2] up to apple8, which does correspond to other M2 devices. I probed a max amplification count of 8.

[1] https://developer.apple.com/metal/Metal-Feature-Set-Tables.p...

[2] https://developer.apple.com/documentation/metal/mtlgpufamily

No it’s a standard M2. You can probe all the values that are exposed to software and it’ll line up. People have done tear downs and the SoC is the same size as a regular M2, which wouldn’t be possible otherwise.