次の方法で共有


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

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

構文

DXGKDDI_SUSPENDCONTEXT DxgkddiSuspendcontext;

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

パラメーター

hAdapter

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

pSuspendContext

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

戻り値

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

注釈

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

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

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

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

要件

要件
Header d3dkmddi.h

こちらもご覧ください

DxgkddiResumeContext

DXGKARG_SUSPENDCONTEXT