次の方法で共有


DXGKDDI_SUSPENDCONTEXT コールバック関数 (d3dkmddi.h)

DxgkddiSuspendContext 、コンテキストを中断するように GPU に指示します。 GPU が TDR (タイムアウト検出と復旧) タイムアウト内の中断完了を確認しない場合、OS はエンジンのタイムアウトを検出し、エンジンのリセットを実行します。

構文

DXGKDDI_SUSPENDCONTEXT DxgkddiSuspendcontext;

NTSTATUS DxgkddiSuspendcontext(
  IN_CONST_HANDLE hAdapter,
  IN_CONST_PDXGKARG_SUSPENDCONTEXT pSuspendContext
)
{...}

パラメーター

hAdapter

[in]プリエンプションされ、中断としてマークされるハードウェア コンテキスト。 この種のプリエンプション要求には猶予期間がないため、できるだけ早く GPU によって受け入れられます。

pSuspendContext

[in]この関数の追加の引数を含む DXGKARG_SUSPENDCONTEXT 構造体へのポインター。

戻り値

DxgkddiSuspendContext 、この呼び出し時にコンテキストが既に中断されている場合にSTATUS_SUCCESSを返します。 それ以外の場合、この値はSTATUS_PENDINGに設定され、contextSuspendFence 割り込みを介して通知されると、中断操作が完了します。

備考

このコールバック関数の実装を DRIVER_INITIALIZATION_DATAで設定して登録します。

ラウンド ロビンプリエンプションは GPU によって開始できますが、OS には他の理由でコンテキストを割り込む方法が必要です。たとえば、割り当てを移動したり、GPU 電源切り替えを実行したりする必要がある場合などです。

コンテキスト中断値は、OS がコンテキストを中断し、一時停止の受信確認を待機せず、再開し、コンテキストをもう一度中断する場合を処理するために必要です。 中断値を使用すると、OS は以前の中断確認と最新の確認を区別できます。

コンテキストが一時停止されると、そのコンテキストへのすべての参照が GPU から削除され、OS はコンテキストを破棄したりメモリを移動したりすることが自由であると見なされます。 WDDM 2.3 以前とは異なり、個別の NULL コンテキスト スイッチ コマンド (以前は DxgkDdiSubmitCommandVirtualContextSwitch フラグで示されていた) は WDDM 2.4 スケジューリング モードに存在しません。これは、DxgkddiSuspendContext がこの作業を行うことになっているためです。

必要条件

要件 価値
ヘッダー d3dkmddi.h

関連項目

DxgkddiResumeContext

DXGKARG_SUSPENDCONTEXT