Preparing fireEngine for its first frame
This release prepares fireEngine’s presentation path by adding Vulkan Memory Allocator and a swapchain with views of its presentable images.
MemoryAllocator introduces an RAII-style owner for Vulkan Memory Allocator. It connects VMA to the existing Vulkan instance, physical device, and logical device, and configures it for Vulkan 1.4. No memory is allocated yet, but
the allocator is ready for the buffers and images introduced later in the tutorial.
The new Swapchain class queries the presentation surface and selects a suitable format, presentation mode, image count, extent, and compositing mode. It prefers an sRGB color format and low-latency mailbox presentation, while
retaining portable fallbacks. Separate graphics and presentation queue families are also handled without requiring explicit ownership transfers.
The swapchain retrieves the images supplied by Vulkan and creates one two-dimensional color view for each image. The window now reports its framebuffer size in physical pixels, ensuring that swapchain dimensions remain correct on
high-DPI displays.
Included in this release
- Vulkan Memory Allocator integration through vcpkg
- An explicitly owned VMA allocator configured for Vulkan 1.4
- Surface capability, format, and presentation-mode queries
- Preferred sRGB output with a supported-format fallback
- Mailbox presentation when available, with guaranteed FIFO fallback
- Swapchain image counts selected from the surface’s supported range
- High-DPI-aware swapchain extent selection
- Support for separate graphics and presentation queue families
- A color-attachment swapchain ready for rendering
- One owned image view for every swapchain image
- Device accessors for creating dependent Vulkan resources
- Expanded startup checks and diagnostic output
- Updated CTest coverage for allocator, swapchain, and image-view creation
No commands are recorded and nothing is rendered yet—the window closes once the allocator, swapchain, and image views have been created successfully. The next release can use these resources to construct the graphics pipeline
needed to draw the first frame.