Add m_isClosing flag and closeEvent to stop rendering, stop the render
timer and wait for device idle. Guard swapchain creation and recreation
to abort when closing. Check Vulkan return values and detect invalid
surface capabilities to avoid crashes during window teardown.
Add RenderWidgetBase and update CustomWidget and VulkanWidget to
implement its interface. Refactor MainWindow to use a single
RenderWidgetBase pointer, unify controls and status UI, and remove the
dual-tab setup. Add design and quickstart docs and register the new
header in CMakeLists.txt.
Increase MAX_FRAMES_IN_FLIGHT to 3 and cap swapchain images accordingly
Replace vkDeviceWaitIdle with per-copy fence, extend wait timeout and
add diagnostic logging and counters Add stronger error logging and
cleanup on vertex/index buffer creation and copy failures; reset handles
to VK_NULL_HANDLE on failure
Change uniform buffer to std140 with explicit fields: time, resX, resY,
rotation, wavePhase plus padding for proper std140 alignment. Regenerate
SPIR-V and embedded .inc files to match.
Add optional VulkanWidget tab