D3D12_DESCRIPTOR_HEAP_FLAGS 枚举 (d3d12.h)

指定堆的选项。

语法

typedef enum D3D12_DESCRIPTOR_HEAP_FLAGS {
  D3D12_DESCRIPTOR_HEAP_FLAG_NONE = 0,
  D3D12_DESCRIPTOR_HEAP_FLAG_SHADER_VISIBLE = 0x1
} ;

常量

 
D3D12_DESCRIPTOR_HEAP_FLAG_NONE
值: 0
指示堆的默认用法。
D3D12_DESCRIPTOR_HEAP_FLAG_SHADER_VISIBLE
值: 0x1
可以选择在描述符堆上设置 D3D12_DESCRIPTOR_HEAP_FLAG_SHADER_VISIBLE 标志,以指示它绑定到命令列表以供着色器引用。 为了方便起见,创建的描述符堆(不带此标志)允许应用程序在将描述符复制到着色器可见描述符堆之前将其暂存到 CPU 内存中。 但是,应用程序也可以直接将描述符创建到着色器可见描述符堆中,而无需将任何描述符暂存到 CPU 上。

通过 ID3D12GraphicsCommandList::SetDescriptorHeaps 绑定的描述符堆必须设置 D3D12_DESCRIPTOR_HEAP_FLAG_SHADER_VISIBLE 标志,否则调试层将产生错误。

在调用 ID3D12Device::CopyDescriptors 或 ID3D12Device::CopyDescriptorsSimple 时,不能将带有 D3D12_DESCRIPTOR_HEAP_FLAG_SHADER_VISIBLE 标志的描述符堆用作源堆,因为它们可能驻留在WRITE_COMBINE内存或 GPU 本地内存中,从中读取效率非常低下。

此标志仅适用于 CBV/SRV/UAV 描述符堆和采样器描述符堆。 它不适用于其他描述符堆类型,因为着色器不会直接引用其他类型。 尝试使用 D3D12_DESCRIPTOR_HEAP_FLAG_SHADER_VISIBLE 创建 RTV/DSV 堆会导致调试层错误。

备注

此枚举由 D3D12_DESCRIPTOR_HEAP_DESC 结构使用。

要求

   
标头 d3d12.h

另请参阅

核心枚举

创建描述符堆

描述符堆