D3DKMTNotifyWorkSubmission 関数 (d3dkmthk.h)
重要
一部の情報はプレリリース製品に関連しており、市販される前に大幅に変更される可能性があります。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
D3DKMTNotifyWorkSubmission は、ユーザー モード ディスプレイ ドライバー (UMD) が GPU に作業を送信したことをカーネル モード ディスプレイ ドライバー (KMD) に通知します。
構文
NTSTATUS D3DKMTNotifyWorkSubmission(
D3DKMT_NOTIFY_WORK_SUBMISSION *unnamedParam1
);
パラメーター
unnamedParam1
作業が送信されたハードウェア キューを識別する D3DKMT_NOTIFY_WORK_SUBMISSION 構造体へのポインター。
戻り値
D3DKMTNotifyWorkSubmission は、KMD の ping に成功した場合、STATUS_SUCCESSを返します。 それ以外の場合は、無効なハードウェア キューまたはフラグが指定されている場合にSTATUS_INVALID_PARAMETERなどの適切なエラー コードが返されます。
注釈
ユーザー モードの作業提出モデルでは、KMD は作業の提出に関与しないため、HWQueue で新しい作業がいつ送信されたのかは認識されません。 この待ち時間の短い作業の送信パスは、モデルのメイン動機です。 ただし、HWQueue で作業が送信されるたびに KMD に通知する必要がある場合は、特定のニッチなシナリオとハードウェアの制限があります。 たとえば、GPU ハードウェア スケジューラでは、リアルタイム コンテキストが作業を送信するときに、ハードウェアランリストを通常からリアルタイムに切り替えるために KMD が必要です。 KMD が作業の送信に関与していない場合は、ランリスト スイッチをすぐにトリガーできないため、リアルタイムの作業の実行が遅れます。
このニーズに対応するために、KMD はドアベルの 作成時にドアベルの接続状態をD3DDDI_DOORBELL_STATUS_CONNECTED_NOTIFYとして指定できます。 UMD は、このドアベルの状態を確認するたびに、新しいコマンドを記述してドアベルを呼び出した後、 D3DKMTNotifyWorkSubmission を使用してカーネルに呼び出されるように、作業送信ワークフローを調整します。 Dxgkrnl は 、 DxgkDdiNotifyWorkSubmission を使用して KMD にこの呼び出しを転送します。
D3DKMTNotifyWorkSubmission は UMD から Dxgkrnl から KMD への単純な ping であり、KMD がランリストをリアルタイムに切り替えるなどの特定のアクションを開始できるように、新しい作業が特定の HWQueue に送信されたことを後者に通知します。
KMD は、ドアベルの作成後に動的に通知を要求することもできます。 KMD がこのハードウェア キューで作業の送信を通知する必要がある条件を検出した場合は、まず、状態がD3DDDI_DOORBELL_STATUS_DISCONNECTED_RETRYで Dxgkrnl の DxgkCbDisconnectDoorbell を呼び出してドアベルを切断できます。 後で UMD がドアベルの再接続を試みると、KMD は状態D3DDDI_DOORBELL_STATUS_CONNECTED_NOTIFYとの接続を確立できます。
ドライバーは、すべての作業の送信に UMD から KMD へのラウンド トリップが含まれるため、非常に具体的で頻度の低いシナリオでこのメカニズムを使用する必要があります。広範なシナリオに使用すると、待機時間の短いユーザー モード送信モデルの目的を破ります。
詳細については、「 ユーザー モードの作業の送信」を参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 11バージョン 24H2 (WDDM 3.2) |
Header | d3dkmthk.h |