Real-time streaming of chunk meshes was an unintended hurdle for me initially going into this because in Vulkan it is much easier to just statically load models with single time commands, but this can create huge performance bottlenecks for loading meshes to the GPU in real-time.

I ended up just keeping a huge collection of staging buffers “in flight” and deleting them when I was done with them and uploading the meshes on the graphics queue as they are demanded.

A better implementation might use a dedicated transfer-queue but in my case my graphics-queue is also a transfer-queue and its fast enough doing this way for now.