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 |