https://howtovulkan.com/
haven't reviewed it in depth, but the author is credible
How to write Vulkan graphics code in 2026
32 messages · Page 1 of 1 (latest)
https://howtovulkan.com/
haven't reviewed it in depth, but the author is credible
How to write Vulkan graphics code in 2026
Pleasantly compact at least
Credible author, Vulkan, and compact? Sounds awesome, thanks for sharing! I'll save it for my next Vulkan project; currently using wgpu
Had a quick scroll through, and it looks like it's using all the modern features you should use IMO:
Though it's still using vertex attributes instead of vertex polling, and I'd love to see a bridge from here to descriptor indexing / bindless
Lovely
Oh, it's Sascha! Excellent
tl;dr: Doing Vulkan in 2026 can be very different from doing Vulkan in 2016. That's what I hope to show with this.
🙏
I stand by VMA being a big complex solution in search of a problem
Having read over the tutorial, I think there are some other things that are interresting:
I also want to throw in this thought: The article suggest using resources for each frame that would allow you to work on the N+1 frame while the GPU is rendering N. I don't like this pattern very much, since it complicates the code and also leads to resource bloat. I found the approach that WGPU uses much easier to reason and work with: Stage all changes to your resources in a linear staging buffer and use timeline semaphores to synchronize the access to the staging buffer. In my tests this was equally performant.
pretty sure shader_object is a legacy glism, would not recommend
swapchain_maintenance1 isn't implemented widely enough to be any use
bindless patterns render most of the more complex descriptor shenanigans moot and are more widely supported besides
huge fan of timeline ring buffers for transferring stuff though, those are a dream
I do not think this is the case at all. When you read the Vulkan documentation‘s problem statement, they explain that the design rationale around pipelines have not been found realistic. They also explicitly state that the extension is not just for legacy applications.
Oh I didn't even notice. Damn. His name wasn't on any of the pages I checked, I didn't think? I had to open the repo. Him of all people creating something like this is an absolute godsend
fwiw his name is in the footer in the copyright message, but yeah I think it could be more prominent, it's nice to know the who the author of stuff is generally
ZING high five
Seconding that it's for legacy applications, after speaking with LunarG employees at Vulkanised about this last year!
The problem I think it solves is "I didn't have to think about this in OpenGL/DirectX 11"
I've just been using VMA / gpu-allocator crate so I never have to worry about my allocations. I feel like before considering implementing my own allocator, I should probably start using a per-frame bump allocator or ring buffers for uploading data 
Ralith (obviously) has some really nice implementation of a staging ring and some other helpful Vulkan stuff over here. Really recommend checking it out for inspiration for writing your own:
that's kind of the point -- once you've thrown together a few simple patterns that address your actual requirements, you'll suddenly find VMA isn't actually doing anything for you any more, and your code is simpler and faster besides!
a reasonable conventional renderer has little to no use for malloc style "allocate any amount of anything any time" behavior
fwiw I think part of the benefit of vma and gpu-allocator is simply determining and using the correct memory type. It's not hard code to write but, like other stuff in vulkan, its additional verbosity
it's like five lines that you write once!
a single VMA call is more code than that
yeah but doing any one thing in vulkan isn't really that many lines of code, it just adds up. I don't use those libraries, but I'm sympathetic to people learning vulkan for the first time who don't want to have to figure that out