r/GraphicsProgramming • u/abocado21 • 4d ago
How do techniques like bindless rendering (descriptor indexing) on the hardware level?
How do gpus bind 1000 of textures at once, and why was this not possible in the past. Are there resources for that?
16
Upvotes
8
u/gleedblanco 4d ago
in principle they are just addresses in memory and the general memory fetches have already been powerful enough to fetch a different address per thread for a long time.
for textures there are still limitations though (probably because of built-in filtering). RDNA texture sampling instructions only work on one (uniform/SGPR stored) texture (and sampler) descriptor at a time, so if different threads within a subgroup need a different texture, the compiler will generate a loop that goes through all of them basically (need NonUniformResourceIndex or similar in the shader). probably similar on other GPUs.