D3D12DDI_WORK_GRAPH_DESC_0108 结构 (d3d12umddi.h)

D3D12DDI_WORK_GRAPH_DESC_0108 结构定义 D3D12DDI_STATE_SUBOBJECT_TYPE_WORK_GRAPH 类型的状态子对象。

语法

typedef struct D3D12DDI_WORK_GRAPH_DESC_0108 {
  LPCWSTR                             ProgramName;
  UINT                                Version;
  D3D12DDI_WORK_GRAPH_FLAGS_0108      Flags;
  UINT                                NumNodes;
  const D3D12DDI_NODE_LIST_ENTRY_0108 *pNodes;
  UINT                                NumEntrypoints;
  const D3D12DDI_NODE_LIST_ENTRY_0108 *pEntrypoints;
} D3D12DDI_WORK_GRAPH_DESC_0108;

成员

ProgramName

工作图的名称。 此名称在给定状态对象中是唯一的。

Version

此工作图的版本号,从 0 开始。 使用 PFND3D12DDI_ADD_TO_STATE_OBJECT_0072 时,此值将针对新版本递增。

如果状态对象向其他部分添加了一些内容, (也许其他工作图) 添加了新创建的工作图,则对于新工作图的初始外观,版本将为 0,即使状态对象本身已经进行了几次迭代。 同样,如果对状态对象的其他部分进行了添加,但其中的特定工作图是单独保留的,则在下次向工作图本身添加内容之前,其版本不会更改。 Version 值与在 D3D12DDI_NODE_0108VersionAdded 字段中使用的编号相同。

Flags

一个D3D12DDI_WORK_GRAPH_FLAGS_0108枚举,用于指定控制工作图行为的标志。

NumNodes

工作图中的节点数,如果发生加法,则包括现有的节点数。 此值确定 pNodes 数组中的元素数。

pNodes

指向 D3D12DDI_NODE_LIST_ENTRY_0108 结构数组的指针,其中每个条目表示工作图中的节点定义。

即使使用 D3D12DDI_WORK_GRAPH_FLAG_ADD_TO_EXISTING_WORK_GRAPH 标志, pNodes 也会 指向图形中所有节点的列表。 新节点显示在列表的开头。

NumEntrypoints

入口点的数量,包括已存在的入口点(如果发生添加)。 此值确定 pEntrypoints 数组中的元素数。

pEntrypoints

指向 D3D12DDI_NODE_LIST_ENTRY_0108 结构数组的指针,其中每个条目表示工作图中的入口点。

即使使用 D3D12DDI_WORK_GRAPH_FLAG_ADD_TO_EXISTING_WORK_GRAPH 标志, pEntryPoints 也 指向所有入口点的列表。 新的入口点显示在列表的开头,并在以前的版本之后继续对入口点索引进行编号。 例如,假设图形的初始版本有两个入口点。 此列表将有两个条目,驱动程序必须推断它们分别具有入口点索引 [0] 和 [1] 用于 PFND3D12DDI_DISPATCH_GRAPH_0108的记录分配。 如果添加了 3 个新入口点,新图形版本的列表将具有 5 个入口点条目,新条目位于列表的开头。 驱动程序必须在列表开头推断 3 个新条目的入口点索引 (新版本) 条目,因此完整列表将为 [2]、[3]、[4]、[0]、[1]。 理想情况下,这些分配由 DDI 中的运行时提供,因此驱动程序不必弄清楚这一点,但这被遗漏了,并且被认为不够重要,无法修复。

注解

D3D12DDI_WORK_GRAPH_DESC_0108结构描述工作图。 工作图本身是节点的集合,其中每个节点表示一个工作单元或一个任务。 节点可以相互依赖,这定义了执行顺序。 入口点是可以开始执行的节点,通常是没有依赖项的节点或可立即运行的节点。

运行时在 API 级别提供便利性,例如,只需列出入口点,甚至要求使用所有可用节点即可定义工作图。 运行时采用 API 工作图定义,对其进行验证,并为驱动程序提供图中的最后一组节点,如此 D3D12DDI_WORK_GRAPH_DESC_0108 结构所示。

有关详细信息,请参阅 工作图

要求

要求
最低受支持的客户端 Windows 11,版本 24H2 (WDDM 3.2)
标头 d3d12umddi.h

另请参阅

D3D12DDI_NODE_LIST_ENTRY_0108

D3D12DDI_STATE_SUBOBJECT_TYPE

D3D12DDI_WORK_GRAPH_FLAGS_0108

PFND3D12DDI_ADD_TO_STATE_OBJECT_0072

PFND3D12DDI_CREATE_STATE_OBJECT_0054

PFND3D12DDI_DISPATCH_GRAPH_0108