H

Hans-Kristian Arntzen (Themaister)

themaister.net · Personal blog · on HN since 2013

Hans-Kristian Arntzen is a graphics driver and Vulkan developer who writes technical posts on GPU programming, shader translation, and debugging.

What HN saysHN commenters cite his DXIL to SPIR-V posts to argue shader IRs are flawed, and link his Vulkan and AMD GPU debugging work.
25HN people shared it
9linked it in comments
27stories submitted
959story points
4 months agolast shared
2013people per year2026

Most-shared posts

  1. 1
  2. 2
    My personal hell of translating DXIL to SPIR-V – part 3
    3 people · 36 points · first shared 2021 · 7 comments on HN
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
    Conquering FidelityFX FSR4
    2 people · 3 points · first shared 2025 · discussion on HN
  8. 8
  9. 9
    Vulkan video shenanigans with RADV and FFmpeg
    2 people · 3 points · first shared 2023 · discussion on HN
  10. 10
    Measuring Input Latency with VK_EXT_present_timing
    2 people · 2 points · first shared 2026 · discussion on HN
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15

What HN people wrote when they linked it

MindSpunk · 2025-07-03
DXIL has other issues beyond being an orphaned fork of LLVM-IR. LLVM is ill-equipped to represents shaders, and there have been real bugs in the wild because of how not-a-shader-language LLVM-IR is. See this [0] post under the 'The classic subgroup breakage – maximal convergence gone awry' section. Read the whole series really if you haven't, it's a fantastic dive into how awful this stuff is. DXIL is also a useless intermediate representation because parsing it is so bloody difficult nobody could actually do anything with it. DXIL was, and still is, functionally opaque bytes. You can't introspect it, you can't modify it or do anything of use with it. SPIR-V is dead-simple to parse and has an array of tools built around it because it's so easy to work with. I don't really see how the OpenCL history is relevant to Vulkan either. Khronos losing the OpenCL game to Nvidia, certainly no thanks to Nvidia's sabotage either, doesn't change that SPIR-V is a much more successful format. [0] https://themaister.net/blog/2022/04/24/my-personal-hell-of-translating…
returnorthrow · 2026-03-20
I was just reading about this topic last night on Maister’s Graphics Adventures: https://themaister.net/blog/2025/06. They created PyroWave, a GPU-accelerated DWT codec in Vulkan compute shaders for performing very low latency game streaming. Very fascinating read, and builds on similar work from their master’s thesis too.
torginus · 2025-10-07
SPIR-V is also a bad format for shaders (according to shader compiler devs): https://themaister.net/blog/2021/09/05/my-personal-hell-of-translating… The TLDR is SSA erases the structured control flow (like loops), which need to be recovered to support how branching is done on SIMD architectures (enabling/disabling lanes).
shmerl · 2025-09-12
You can read about DX12 being worse here: https://themaister.net/blog/2021/11/ But that's not even the point. Everyone could collaborate on the common API and make it better. Where were Apple and MS? Chasing their NIHs instead of doing it, so you argument is missing the point. It's not about how good it is (and it is good enough, though improving it is always welcome), it's about it being the only collaborative and shared effort. Everything else is simply irrelevant in result even if it could be better in some ways.
WithinReason · 2024-03-25
The article about UMR debugging seen on the tinygrad live stream: https://themaister.net/blog/2023/08/20/hardcore-vulkan-debugging-diggi…
drvortex · 2013-12-24
OpenEmu is a game emulator for Mac. Retroarch http://themaister.net/retroarch.html has existed for ages though. What's different about this?
raphlinus · 2024-09-02
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/ [1a]: https://www.collabora.com/news-and-blog/blog/2024/04/25/re-converging-… [2]: https://mastodon.gamedev.place/@gfxstrand [3]: https://kvark.github.io/spirv/2021/05/01/spirv-horrors.html [4]: https://xol.io/blah/the-trouble-with-spirv/ [5]: https://themaister.net/blog/2022/08/21/my-personal-hell-of-translating… [6]: https://github.com/gpuweb/gpuweb [7]:…
g0b · 2022-05-24
This grew out from a much rantier (and worse) version of this article, which talked about the hurdles I faced when considering SPIR-V codegen for our research compiler (Thorin). For a while I wanted to rewrite it, and ultimately to properly discuss what I wanted to discuss, I had to write something introductory in a much broader sense. So it sort of organically grew from there, and that's why the title is now a bit weird, but I plan for the rest of the series to continue with SPIR-V as some sort of central reference point. It's fair to say DXIL suffers from this class of troubles too, there's a series themaister where he describes the awfulness of the story over there, but I don't work with DX and I wanted to make as few comments on that as possible to avoid saying something wrong and unverified. https://themaister.net/blog/2022/04/24/my-personal-hell-of-translating…
jsheard · 2024-09-19

Keyboard shortcuts

/Search
j kNext / previous blog
EnterOpen selected blog
vVisit the blog site
fFollow / unfollow
lSwitch grid / list view
dSwitch dark mode
g hHome
g pTop posts
g tTopics
g fFollowing
g lLiked
g yHistory
g qFAQ
EscBack / close