DXGKDDI_QUERYDEPENDENTENGINEGROUP コールバック関数 (d3dkmddi.h)
Dxgkrnlの GPU スケジューラ 、DxgkddiQuerydependentenginegroup 呼び出して、物理ディスプレイ アダプター内のノードの依存関係を照会します。
構文
DXGKDDI_QUERYDEPENDENTENGINEGROUP DxgkddiQuerydependentenginegroup;
NTSTATUS DxgkddiQuerydependentenginegroup(
IN_CONST_HANDLE hAdapter,
INOUT_DXGKARG_QUERYDEPENDENTENGINEGROUP pQueryDependentEngineGroup
)
{...}
パラメーター
hAdapter
[in]ディスプレイ アダプターに関連付けられているコンテキスト ブロックへのハンドル。 ディスプレイ ミニポート ドライバーは、DxgkDdiAddDevice 関数の出力パラメーター ミニポートDeviceContext の DirectX グラフィックス カーネル サブシステムにこのハンドルを提供しました。
pQueryDependentEngineGroup
[入力/出力]KMD がリセット操作の影響を受けるすべてのノードを指定する DXGKARG_QUERYDEPENDENTENGINEGROUP 構造体。
戻り値
DxgkddiQuerydependentenginegroup STATUS_SUCCESSを返す必要があります。
Dxgkrnlの GPU スケジューラ 、この関数を呼び出して、エンジン リセット要求の影響を受けるすべての物理アダプター (エンジン) の説明を取得します。 これは、リセット プロセスに影響を与える可能性がある複数のエンジン間に依存関係があるハードウェア アーキテクチャのユーザー エクスペリエンスを向上するのに役立ちます。 影響を受けるノードはすべて、同じエンジン アフィニティ値を持つ必要があることに注意してください。 (Windows 8での TDR の変更に関するエンジン アフィニティの説明を参照してください)。
GPU スケジューラは、DxgkDdiResetEngine を呼び出すたびに、dxgkDdiQueryDependentEngineGroup 呼び出します。 GPU スケジューラは、ディスプレイ ミニポート ドライバーがすべての依存エンジンのプリエンプションを完了するまで 500 ミリ秒待機します。 ドライバーがプリエンプションを完了できないエンジンの場合、GPU スケジューラはエンジンの序数値に基づいて、DxgkDdiResetEngine 関数を順番に呼び出します。
DXGKARG_QUERYDEPENDENTENGINEGROUPでビットマスクを計算する方法の例を次に示します。DependentNodeOrdinalMask メンバーをします。 DXGKARG_QUERYDEPENDENTENGINEGROUP 構造体の NodeOrdinal メンバーと EngineOrdinal メンバーの元の値がそれぞれ 1 と 0 の場合、ノード 1 がリセットされたときに識別子 2 と 4 を持つ追加のノードもリセットされる場合、ドライバーは DependentNodeOrdinalMask 10110 に設定するか、16 進数表記で0x16する必要があります。 EngineOrdinal インデックス値は、すべての依存ノードで同一であると見なされます。 リセットされるノードは、DependentNodeOrdinalMask ビット マスクに含まれます。
この関数はページング可能にする必要があり、常に成功するはずです。
オペレーティング システムでは、この関数が、スレッド処理と同期の第 1 レベルので定義されている第 1 レベルの同期モード 従っていることを保証します。
詳細については、Windows 8での TDR の変更の を参照してください。
必要条件
要件 |
価値 |
サポートされる最小クライアント |
Windows 8 |
サポートされる最小サーバー |
Windows Server 2012 |
ターゲット プラットフォーム の |
デスクトップ |
ヘッダー |
d3dkmddi.h |
IRQL |
PASSIVE_LEVEL |
関連項目
DXGKARG_CREATECONTEXT
DXGKARG_QUERYDEPENDENTENGINEGROUP
DXGK_DRIVERCAPS
DxgkDdiAddDevice の
DxgkDdiResetEngine の