Bindless rendering , Setup
Evolve Blog is kicking off a bindless rendering series that walks through the core setup for D3D12 and Vulkan, using Rust code to keep the examples concrete. The first part focuses on descriptor heaps, root signatures or pipeline layouts, descriptor management, and the mechanics of sending resource indices to the GPU.
The practical pitch is familiar to anyone who has wrestled with bindful rendering: lots of per-draw binding work, extra staging, and pipeline-specific plumbing. Bindless pushes that complexity into a shared descriptor heap and a more uniform resource layout, which can make renderer code easier to reason about and reduce CPU-side overhead.
The post also introduces an API-agnostic RenderResourceHandle that maps to a descriptor index plus validation data. On D3D12, the setup centers on a shader-visible CBV_SRV_UAV heap, while the write-up notes that static samplers are being preferred over a fully bindless sampler path to keep the design portable across devices and APIs.
There are still tradeoffs to manage, especially around how many handles to push through root constants versus storing them in buffers for more flexibility. The series is set to continue with GPU-side template support, Vulkan emulation for ResourceDescriptorHeap behavior, and later validation topics like resource versioning and tagging.
“all pipelines share the same descriptor heap, and pipeline resource layout”
- what
- A bindless rendering series is explaining D3D12 and Vulkan setup, with Rust examples.
- who
- Evolve Blog is publishing the series.
- when
- Part 2 will cover GPU template support; part 3 will cover validation.
- impact
- Renderer authors can simplify resource binding and reduce per-draw CPU overhead.
Promotes simpler, lower-overhead rendering pipelines
Follow Vulkan updates
See relevant stories in your personalized news feed.
Discussion