Lone Henchman

Sometimes about tools, sometimes about graphics, sometimes I just ramble.

Posts tagged: Vulkan

Working Around Driver Bugs: Fixing SPIR-V Assembly With Regex

Recently, I worked around a Vulkan driver bug on my Quest 3 by writing code that throws regular expressions at SPIR-V assembly until it's in the right form to make the driver happy. Some of you might not have enjoyed reading that sentence. Those who just dislike the unfamiliar tech jargon are the lucky ones. The rest are already feeling my pain, and this first paragraph isn't even over yet. It's (horror) story time - but you might learn a little about SPIR-V along the way if you stick around. I sure did.

Read more...

Vulkan Memory Types

Picking up the discussion on memory and caching: how does this all interact with an external processor such as a GPU? GPUs are an intersting addition to this discussion because their operation is very memory-bound and very very multi-core. They also run alongside CPUs. This makes things ...complicated.

Read more...

Rendering an Infinite Grid

I've been working on a little VR project for a while, and one of the first things I needed at the start was something to stand on. So I made an infinite grid to be my floor. Here's what it looks like and how it's made.

Read more...

Camera Math

Updated: 10 Aug 2025

Nothing special here, just stashing away some math I don't enjoy having to look up again and again.

Read more...

Dynamic Descriptor Pools

A couple days ago I wrote about my dynamic_buffer helper which I use to push things like uniform blocks to the GPU without worrying too much about preallocating the exact amount of memory I need at application startup. Here's another helper which I use to make allocating descriptor sets easy.

Read more...

Dynamic Graphics Buffers

Yesterday, I described a ring buffer allocator suitable for pushing data to a GPU. Today, I'm using that allocator to manage a dynamic buffer suitable for sending things like blocks of uniforms up to the GPU which automatically grows when necessary.

Read more...