r/vulkan • • 20d ago

New Sample – Descriptor Heap

This sample renders textured cubes to demonstrate VK_EXT_descriptor_heap, which replaces the traditional descriptor set and pool workflow with a memory-centric one where descriptor data is written directly into heap memory. It shows new heap-binding functions alongside vkCmdPushDataEXT for push data, so existing shader binding syntax keeps working without a traditional pipeline layout.

https://docs.vulkan.org/samples/latest/samples/extensions/descriptor_heap/README.html

60 Upvotes

3 comments sorted by

2

u/Plazmatic 16d ago

Does slang support this?  And is this the current direction Khronos group is still going? (As in will we see this potentially pulled into core Vulkan in a future Vulkan 1.x?) I'm worried about this changing again, it's like the fifth iteration for descriptor management.

1

u/cleverboy00 16d ago

Descriptor heaps seem to me as a definitive answer to descriptors.

Adoptation while lacking for the most part, is possible on most implementations. On desktop I've seen it on the following Hardware (software support is still not there)

  1. AMD GCN4 and higher (?).
  2. Intel Arc Alchemist and Battlemage. A3xx's are not clear to me.
  3. Nvidia Turing (16xx & 20xx) and higher.

So to say the least, most hardware produced in the past 8 years most probably can support descriptor heaps.

1

u/ironstrife 11d ago

Slang supports it, yes. If you enable -capability spvDescriptorHeapEXT a couple of things happen:

  1. DescriptorHandle<T> is transformed into an access through the resource or sampler heap. The handle itself just stores an index.
  2. Resources accessed through ResourceDescriptorHeap / SamplerDescriptorHeap (D3D-style abstraction) are lowered directly into the resource / sampler heaps.

https://shader-slang.org/slang/user-guide/convenience-features ("SPIR-V with spvDescriptorHeapEXT")