Preparing fireEngine's first frame in flight
This release takes fireEngine beyond graphics-pipeline creation and adds the command and synchronization infrastructure needed to prepare its first frame for rendering.
fireEngine now creates a graphics command pool and primary command buffer through a new FrameInFlight owner. The frame also owns the binary image-available semaphore used during swapchain acquisition and an initially signaled
fence that will let the CPU safely reuse its resources after submitted GPU work finishes.
Presentation synchronization is kept with the swapchain rather than the frame. Each swapchain image now has its own render-finished semaphore, preventing a later frame from re-signaling a binary semaphore while an earlier
presentation may still be waiting on it. This ownership also keeps the semaphore count aligned with the images when swapchain recreation is introduced.
The command pool is designed for whole-pool recycling. Resetting it returns its primary command buffer to the initial state and allows the driver to manage the pool as one allocation arena, ready for command recording in the next
release.
Included in this release
- A
FrameInFlightowner for per-frame command and synchronization state. - One graphics command pool and primary command buffer.
- Whole-command-pool recycling through
resetCommands(). - One binary image-available semaphore for the frame.
- An initially signaled frame-completion fence.
- One render-finished semaphore per swapchain image.
- Clear separation between per-frame and per-image synchronization.
- RAII destruction ordering for command buffers and their parent pool.
- Documentation covering semaphore reuse, fence-reset ordering, and external synchronization.
- Startup validation of swapchain resource counts and the initial fence state.
- Updated startup diagnostics and CTest smoke-test coverage.
- Project version updated to 0.5.0.
No rendering happens yet—the command buffer is not recorded or submitted, and no swapchain image is acquired or presented. The next release can record the dynamic-rendering commands, submit them using Synchronization 2, and
present the first completed frame.