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