In Computer Graphics draw indirect refers to batching all draw commands into a GPU-accessible buffer rather than issuing them individually from the CPU. Each entry in this buffer is a draw command struct (VkDrawIndexedIndirectCommand) containing per-mesh information — index count, instance count, and offsets into the bound vertex and index buffers. A single indirect draw call from the CPU then tells the GPU to execute all commands from this buffer.

This reduces CPU overhead by replacing N individual draw calls with one, and simplifies command buffer recording. More importantly, because the indirect buffer is just a regular GPU buffer, it can be written to by a compute shader — enabling GPU Driven Rendering where the GPU itself decides what to draw (frustum culling, occlusion culling, LOD selection) without CPU readback.

vkCmdDrawIndexedIndirectCount goes further — the draw count itself is also stored in a GPU buffer, giving the GPU full control over both what and how many objects to draw.