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_0108 の VersionAdded フィールドで使用されるのと同じ番号です。
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_WORK_GRAPH_FLAGS_0108
PFND3D12DDI_ADD_TO_STATE_OBJECT_0072