← Back to context

Comment by m-schuetz

9 days ago

Vulkan isnt close to the metal, though. It's a high-level wrapper around all the quirks and differences of ancient mobile to modern desktop GPUs. Render passes, for example, are entirely irrelevant for desktop GPUs. They are not close to metal, but add needless complexity. Recently, a Vulkan driver engineer even told me that they are not necessary for tile-based mobile GPUs for which they were intended, since they can figure the necessary things out by themselves. And I would guess they need to, since they became optional in Vulkan, so they cant relly on them anymore. They are still mandatory in WebGPU, for no good reason.

And there are so many pointless things that are no longer relevant, or should at best be optional so that devs can get things done before optimizing.

I said as close to it as possible.

Yes they’re abstractions, because nobody really wants anyone to be writing directly against the ISA either since the vendors need the ability to change things over time.

Again, to my point, it’s about balancing portability and power/perf.

  • Yet they ended up creating something that makes OpenGL still an attractive choice. That excessive complexity certainly wasnt necessary.

    Personally, I'll sit this generation out and wait dor whatever comes after. I ended up switching to doing software rasterization in Cuda because that's easier than drawing a triangle in Vulkan. Cuda has shown me how insane Vulkan is. Like, why even have descriptir sets, bindings, etc? In cuda you simply call a kernel and provide the data (e.g. vertex or storage buffer) as a pointer argument.

    • Since I have my 3D coding days behind me, even though I am not a fan, the Web 3D APIs are good enough for some shader coding.

      If I am playing with something on native applications, definitely an engine, with rendering plugins.

      OTOY does their rendering with CUDA by the way.