D3D12_STATE_OBJECT_FLAGS 枚举 (d3d12.h)
指定状态对象的约束。 在 D3D12_STATE_OBJECT_CONFIG 结构中使用此枚举中的值。
语法
typedef enum D3D12_STATE_OBJECT_FLAGS {
D3D12_STATE_OBJECT_FLAG_NONE = 0,
D3D12_STATE_OBJECT_FLAG_ALLOW_LOCAL_DEPENDENCIES_ON_EXTERNAL_DEFINITIONS = 0x1,
D3D12_STATE_OBJECT_FLAG_ALLOW_EXTERNAL_DEPENDENCIES_ON_LOCAL_DEFINITIONS = 0x2,
D3D12_STATE_OBJECT_FLAG_ALLOW_STATE_OBJECT_ADDITIONS
} ;
常量
D3D12_STATE_OBJECT_FLAG_NONE 值: 0 无状态对象约束。 |
D3D12_STATE_OBJECT_FLAG_ALLOW_LOCAL_DEPENDENCIES_ON_EXTERNAL_DEFINITIONS 值: 0x1 此标志仅适用于类型集合的状态对象。 否则,将忽略此标志。 允许此集合的导出具有未解析的引用 (依赖项) ,当集合包含在包含状态对象(例如光线跟踪管道状态对象 (RTPSO) )时,必须 (定义) 解析这些引用。 这包括根据外部定义的子对象关联来关联外部子对象 (例如根签名) 本地导出。 如果没有此标志,此集合中的所有导出都必须完全在本地解析其依赖项,包括在本地定义的任何必需的子对象关联。 高级实现/驱动程序将具有足够的信息来编译集合中的代码,并且无需保留任何未编译的代码 (,除非 ) 设置D3D12_STATE_OBJECT_FLAG_ALLOW_EXTERNAL_DEPENDENCIES_ON_LOCAL_DEFINITIONS 标志,以便在包含状态对象 (集合中使用时,例如 RTPSO) , 最少的工作需要由驱动程序完成,理想情况下最多是一个“廉价”链接。 |
D3D12_STATE_OBJECT_FLAG_ALLOW_EXTERNAL_DEPENDENCIES_ON_LOCAL_DEFINITIONS 值: 0x2 此标志仅适用于类型集合的状态对象。 否则,将忽略此标志。 如果此集合包含在另一个状态对象 (例如 RTPSO) 中,则允许包含状态对象的其余部分的着色器/函数依赖于 (例如调用) 从此集合导出。 如果没有此标志 (默认) ,则包含状态对象的其他部分无法直接引用此集合的导出 (例如 RTPSO) 。 这可以略微减少集合的内存占用,因为驱动程序不需要在集合中保留未编译的代码,而某些外部函数随后会一起编译所有代码, 也就是说,如果尚未为此集合中的代码本地定义所有必需的子对象关联,驱动程序可能尚无法编译着色器代码,并且可能仍需要保留未编译的代码。 在外部定义的子对象关联(将外部子对象关联与本地导出相关联)不算作本地定义的外部依赖项,因此此标志的存在与否不会影响是否允许关联。 另一方面,如果当前集合为本地定义的子对象定义与外部导出 (例如着色器) 的子对象关联,则计为本地定义的外部依赖项,必须设置此标志。 无论是否存在此标志,着色器入口点 ((如集合中的命中组或未命中着色器) )都以入口点的形式显示到包含的状态对象 (例如 RTPSO) (如果由它导出)。 对于 RTPSO,导出的入口点可以在着色器表中用于光线跟踪。 |
要求
要求 | 值 |
---|---|
Header | d3d12.h |