Descriptor Heaps

A descriptor heap is a collection of contiguous allocations of descriptors, one allocation for every descriptor.

In this section

Topic Description
Descriptor Heaps Overview
Descriptor heaps contain many object types that are not part of a Pipeline State Object (PSO), such as Shader Resource Views (SRVs), Unordered Access Views (UAVs), Constant Buffer Views (CBVs), and Samplers.
Hardware Tiers
The levels of hardware from Tier 1 to Tier 3 have increasing resources available to the pipeline.
Shader Visible Descriptor Heaps
Shader visible descriptor heaps, are descriptor heaps that can be referenced by shaders through descriptor tables.
Non Shader Visible Descriptor Heaps
Some descriptor heaps cannot be referenced by shaders through descriptor tables, but exist either to assist the app in staging the descriptors prior to recording a command list or because no shader-visible heap is required.
Creating Descriptor Heaps
To create and configure a descriptor heap, you must select a descriptor heap type, determine how many descriptors it contains, and set flags that indicate whether it is CPU visible and/or shader visible.
Setting and Populating Descriptor Heaps
The descriptor heap types that can be set on a command list are those that contain descriptors for which descriptor tables can be used (at most one of each at a time).
Descriptor Heap Configurability Summary
The following table summarizes information about Shader and non-Shader visible heap support.

Descriptors

Descriptor Tables

ID3D12DescriptorHeap

Resource Binding

Root Signatures