D3D12_DESCRIPTOR_RANGE_FLAGS 枚举 (d3d12.h)

指定描述符及其在根签名 1.1 说明中引用的数据的波动性,这可以启用某些驱动程序优化。

语法

typedef enum D3D12_DESCRIPTOR_RANGE_FLAGS {
  D3D12_DESCRIPTOR_RANGE_FLAG_NONE = 0,
  D3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_VOLATILE = 0x1,
  D3D12_DESCRIPTOR_RANGE_FLAG_DATA_VOLATILE = 0x2,
  D3D12_DESCRIPTOR_RANGE_FLAG_DATA_STATIC_WHILE_SET_AT_EXECUTE = 0x4,
  D3D12_DESCRIPTOR_RANGE_FLAG_DATA_STATIC = 0x8,
  D3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_STATIC_KEEPING_BUFFER_BOUNDS_CHECKS = 0x10000
} ;

常量

 
D3D12_DESCRIPTOR_RANGE_FLAG_NONE
值: 0
默认行为。 描述符是静态的,针对 SRV/CBV 的数据 ((DATA_STATIC_WHILE_SET_AT_EXECUTE)和 UAV(DATA_VOLATILE) )进行默认假设。
D3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_VOLATILE
值: 0x1
如果这是唯一设置的标志,则描述符是易失性的,并且对 SRV/CBV:DATA_STATIC_WHILE_SET_AT_EXECUTE 和 UAV 的数据 (进行默认假设:DATA_VOLATILE) 。

如果此标志与 DATA_VOLATILE 结合使用,则描述符和数据都是可变的,这等效于根签名版本 1.0。

如果此标志与 DATA_STATIC_WHILE_SET_AT_EXECUTE 结合使用,则描述符是可变的。 这仍然不允许它们在命令列表执行期间更改,因此,在执行期间通过根描述符表设置数据时,合并数据是静态的附加声明是有效的 , 基础描述符实际上是静态的,而不是承诺的数据是静态的。
D3D12_DESCRIPTOR_RANGE_FLAG_DATA_VOLATILE
值: 0x2
描述符是静态的,数据是易失性的。
D3D12_DESCRIPTOR_RANGE_FLAG_DATA_STATIC_WHILE_SET_AT_EXECUTE
值: 0x4
描述符是静态的,数据在执行期间设置时是静态的。
D3D12_DESCRIPTOR_RANGE_FLAG_DATA_STATIC
值: 0x8
描述符和数据都是静态的。 这可以最大化驱动程序优化的潜力。
D3D12_DESCRIPTOR_RANGE_FLAG_DESCRIPTORS_STATIC_KEEPING_BUFFER_BOUNDS_CHECKS
值: 0x10000
提供与静态描述符相同的优势 (D3D12_DESCRIPTOR_RANGE_FLAG_NONE) ,只不过不允许驱动程序将缓冲区提升为根描述符作为优化,因为它们必须维护边界检查,而根描述符没有边界检查。

备注

此枚举由 D3D12_DESCRIPTOR_RANGE1 结构使用。

若要仅指定描述符引用的数据的波动性,请参阅 D3D12_ROOT_DESCRIPTOR_FLAGS

要求

   
标头 d3d12.h

另请参阅

核心枚举

根签名版本 1.1