Friday, December 10, 2021

A New Vulkan-Go Bridge

I got frustrated with the state of the vulkan-go bridge. Mostly that it was seemingly unsupported. Additionally, the c-for-go library made everything difficult to update. As a result, I spent a week and wrote my own vulkan bindings generator.

Monday, November 1, 2021

Vulcan, Go, and A Triangle, Part 11 bis

In part 10, I mentioned trying to use go routines to create the command buffers, but that didn't work because the command pool and the command buffers must all be operated on in a single thread.

I had tried doing the command recording in parallel using go-routines, but that resulted validation layer threading errors. A command pool is apparently thread specific.

The rest of this part explores using a locked thread go routine associated with a command pool in order to multi-thread command recording.

Note This is basically building an abstraction layer on top of Vulkan, and isn't necessary to understand how vulkan works. As this code is a wholesale divergence from the Vulkan tutorial, I won't be using it when I start on the next section.

Saturday, October 30, 2021

Vulcan, Go, and A Triangle, Part 11

In this part, I used the previous created semaphores and fences to coordinate rendering and presentation. I also implement resizing of the window.

This part follows along with Drawing a triangle / Drawing / Rendering and presentation / Acquiring an image from the swap chain through to the end of Drawing a triangle / Swap chain recreation.

Thursday, October 28, 2021

Vulcan, Go, and A Triangle, Part 10

In this part, I created the command pool, the command buffers, and recorded the rendering to our framebuffers.

This part is a direct translation of Drawing a triangle / Drawing / Command buffers.

Tuesday, October 26, 2021

Vulcan, Go, and A Triangle, Part 9

In this part, I made the pipeline objects. This includes loading the shader modules, configuring the fixed functions, and creating the Vulkan pipelines. This part started with Drawing a triangle / Graphics pipeline basics / Shader modules, jumps into the Fixed functions, and ends with the Conclusion.

Sunday, October 24, 2021

Vulcan, Go, and A Triangle, Part 8

In this part, I made the image views, render pass, framebuffers and pipeline layout. All things that only modify the pipeline file. I found Drawing a triangle / Graphics pipeline basics / Introduction an excellent reminder about computer graphics in general and useful for understanding vulkan in particular.

This part doesn't relate to a single section in the Vulkan tutorial; it jumps around between a couple of different sections that were all pipeline specific and would need to be recreated if the pipeline needed to be recreated. It also references the Vulkan Tutorial almost constantly, as I didn't want to plagiarize their excellent explanations of these concepts.

Friday, October 22, 2021

Vulcan, Go, and A Triangle, Part 7

In this part, I am going to add the the swapchain. My application will eventually take one of these swap chain images and draw to it, but that will be closer to the end of this tutorial.

This part follows closely with Drawing a triangle / Presentation / Image Views. I've opted to keep swapchain a single word, regardless of my spell checker; this is mostly because Vulkan treats it as one word in the API. So expect to see Swapchain where the Vulkan Tutorial would have written SwapChain.