Training
Module
Create and configure host pools and session hosts for Azure Virtual Desktop - Training
Create and configure host pools and session hosts for Azure Virtual Desktop
This browser is no longer supported.
Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.
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).
The types of descriptor heap that can be set on a command list are:
D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV
D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER
The heaps being set on the command list must also have been created as shader visible. There are three types of command list: DIRECT, BUNDLE, and COMPUTE.
After a descriptor heap is set on a command list, subsequent calls that define descriptor tables refer to the current descriptor heap. Descriptor table state is undefined at the beginning of a command list and after descriptor heaps are changed on a command list. Redundantly setting the same descriptor heap does not cause descriptor table settings to be undefined.
In a bundle, by contrast, the descriptor heaps can only be set once (redundant calls setting the same heap twice do not produce an error); otherwise, the behavior is undefined. The descriptor heaps that are set must match the state when any command list calls the bundle; otherwise, the behavior is undefined. This allows bundles to inherit and edit the command list’s descriptor table settings. Bundles that don’t change descriptor tables (only inherit them) don’t need to set a descriptor heap at all and will just inherit from the calling command list.
When descriptor heaps are set (using ID3D12GraphicsCommandList::SetDescriptorHeaps), all the heaps being used are set in a single call (and all previously set heaps are unset by the call). At most one heap of each type listed above can be set in the call.
After an application has created a descriptor heap, it can then use methods on the device to either generate descriptors directly into the heap or copy descriptors from one place to another.
The initial contents of descriptor heap memory is undefined, so asking the GPU or driver to reference uninitialized memory for rendering can cause undefined results such as a device reset.
If the application configures a descriptor heap to be CPU visible, then the CPU can call methods to create descriptors into the heap and copy from place to place (including across heaps) in an immediate, free threaded manner. If the heap has been configured as SHADER_VISIBLE, reading by the CPU is not permitted.
Training
Module
Create and configure host pools and session hosts for Azure Virtual Desktop - Training
Create and configure host pools and session hosts for Azure Virtual Desktop
Documentation
Shader Visible Descriptor Heaps - Win32 apps
Shader visible descriptor heaps, are descriptor heaps that can be referenced by shaders through descriptor tables.
Non Shader Visible Descriptor Heaps - Win32 apps
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.
Descriptor Heap Configurability Summary - Win32 apps
The following table summarizes information about Shader and non-Shader visible heap support.