3 ms·
Faith Ekstrand has an impressive track record of compiler work and has written a few blog posts[1], [1a]. Her Mastodon[2] is also worth a follow. SPIR-V is imp
by raphlinus 2y ago
Faith Ekstrand has an impressive track record of compiler work and has written a few blog posts[1], [1a]. Her Mastodon[2] is also worth a follow.
SPIR-V is important in the compute shader space, especially because DXIL and Metal's AIR are similar. I'm going to link three articles critical of SPIR-V: [3], [4], [5].
WebGPU [6] is interesting for a number of reasons, largely because they're trying to actually nail down the semantics, and also make it safe (see the uniformity analysis [7] in particular, which is a very "compiler" approach to a GPU-specific problem). Both Tint and naga projects are open source, with lots of high quality discussion in the issue trackers.
Shader languages suck, and we really need a good one. Promising approaches are Circle [8] (which is C++ based, very advanced but not open source), and Slang [9] (an evolution of HLSL). The Vcc work (also related to [4]) is worth studying.
Best of luck! This is a fascinating, if frustrating, space, and there's lots of room to improve things.
[1]: https://www.gfxstrand.net/faith/blog/ https://www.gfxstrand.net/faith/blog/
[1a]: https://www.collabora.com/news-and-blog/blog/2024/04/25/re-converging-control-flow-on-nvidia-gpus/ https://www.collabora.com/news-and-blog/blog/2024/04/25/re-c...
[2]: https://mastodon.gamedev.place/@gfxstrand https://mastodon.gamedev.place/@gfxstrand
[3]: https://kvark.github.io/spirv/2021/05/01/spirv-horrors.html https://kvark.github.io/spirv/2021/05/01/spirv-horrors.html
[4]: https://xol.io/blah/the-trouble-with-spirv/ https://xol.io/blah/the-trouble-with-spirv/
[5]: https://themaister.net/blog/2022/08/21/my-personal-hell-of-translating-dxil-to-spir-v-finale/ https://themaister.net/blog/2022/08/21/my-personal-hell-of-t...
[6]: https://github.com/gpuweb/gpuweb https://github.com/gpuweb/gpuweb
[7]: https://www.w3.org/TR/2022/WD-WGSL-20220505/#uniformity-overview https://www.w3.org/TR/2022/WD-WGSL-20220505/#uniformity-over...
[8]: https://www.circle-lang.org/site/index.html https://www.circle-lang.org/site/index.html
[9]: https://github.com/shader-slang/slang https://github.com/shader-slang/slang
- JonChesterfield 2y agoThe shader languages are optional though. You can absolutely write freestanding C or C++ instead if you choose to. This doesn't seem widely appreciated. There's increasing danger of non-freestanding C++ working too as the libc++ port improves. Some fraction of libc is there already.