GPU

Thin Vulkan 1.3 abstraction. Does not hide Vulkan — it codifies the patterns mjolnir relies on (bindless texture array, slab-allocated mesh buffers, dynamic rendering, frame-in-flight semaphores). Most user code never touches this directly; it exists for render and as an escape hatch.

Design choices

Key subsystems

Frames in flight

FRAMES_IN_FLIGHT = 2 by default. Per-frame resources (semaphores, per-camera attachments, staging buffers) are indexed by frame_index % FRAMES_IN_FLIGHT. Anything the GPU might still be reading must outlive that window — see architecture for the staging-age rule.