次の方法で共有


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が使用されている場合、この値は新しいバージョンに対してインクリメントされます。

その他の部分 (おそらく他の作業グラフ) にいくつか追加された状態オブジェクトが、新しく作成された作業グラフを追加した場合、状態オブジェクト自体が数回繰り返された場合でも、新しい作業グラフの初期外観に対して Version は 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 はすべてのエントリポイントのリストを指します。 リストの先頭に新しいエントリポイントが表示され、以前のバージョンより後にエントリポイントインデックス番号が続きます。 たとえば、グラフの初期バージョンに 2 つのエントリポイントがあるとします。 このリストには 2 つのエントリがあり、ドライバーは、 PFND3D12DDI_DISPATCH_GRAPH_0108からのレコード割り当てにそれぞれエントリ ポイント インデックス [0] と [1] があることを推論する必要があります。 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)
Header 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