if you think about it, vulkan logical device implies the existence of vulkan illogical device

I'm slowly working through the vulkan spec writing a compute-only vulkan program from scratch that doesn't render anything, and it's going pretty well because the spec is really well written and I already know more or less exactly what I want to do anyway, but I just want to say just how silly (fun) it feels to write a program like this because you get to just skip over large swaths of the API.

Like, I'm working from the spec because the tutorials all make it more complicated.

also the tutorials I reviewed all did the annoying thing where the tutorial squirrels away the stuff you're trying to learn or reference into abstractions that only serve the needs of the tutorial writer, which given my goal is very specifically to *not draw anything*, there's really not much of a point to any of them lol. I'm really not the intended audience here though :3

I think it's cute that practically every vulkan command has one or more optional args to let you enter Hard Mode

(sorry for the double post, I added this to the wrong thread)

ok even with just the compute-only subset vulkan is a slog D:

I wonder how many people have actually managed to knuckle down and write a complete, useful vulkan program from scratch (no copy pasting from tutorials and stack overflow, no offloading significant parts to 3rd party libraries like VMA)

To think if I power through and get this thing working I could potentially be like the 20th person to bother

@aeva hmm how useful is "useful" :') but to be honest I think the hardest part of vulkan is actually the same as opengl, it's knowing which set of extensions you're supposed to use because they make things much easier, and which extensions you're not supposed to use because they're pointless or not practical on the hardware you care about.
@aeva e.g. you can skip pretty much all the shitty binding APIs in vulkan if you want, which makes things better in many ways (but still complex)
@dotstdy what would you say are the good extensions? (keep in mind I'm not rendering anything, just doing compute)
@aeva buffer device address for starters
@dotstdy what's the extension name
@aeva https://registry.khronos.org/vulkan/specs/latest/man/html/VK_EXT_buffer_device_address.html (it's actually standard in Vulkan 1.2, and mandatory for Vulkan 1.3, but that's more or less the same problem as extensions at least until everyone is on board with the new hotness)
VK_EXT_buffer_device_address(3)

@dotstdy gotcha. maybe I should read through everything that got added to core between 1.1 and 1.4 (which is what my laptop supports)...
@aeva yeah, the other big one that comes to mind is https://github.com/KhronosGroup/Vulkan-Docs/blob/main/proposals/VK_KHR_dynamic_rendering.adoc but that's not relevant for compute. it just means less pointless boilerplate (okay, technically the boilerplate has a point if you're trying to soup up a mobile renderer, but i'm not) on doing graphics.
Vulkan-Docs/proposals/VK_KHR_dynamic_rendering.adoc at main · KhronosGroup/Vulkan-Docs

The Vulkan API Specification and related tools. Contribute to KhronosGroup/Vulkan-Docs development by creating an account on GitHub.

GitHub
@dotstdy this was a huge help :) ty for the tip