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された DxgkCbDisconnectDoorbellDxgkrnl 呼び出すことによってドアベルを切断できます。 後で UMD がドアベルを再接続しようとすると、KMD は状態D3DDDI_DOORBELL_STATUS_CONNECTED_NOTIFYとの接続を確立できます。
ドライバーは、非常に具体的で頻度の低いシナリオでこのメカニズムを使用する必要があります。これは、すべての作業の提出に UMD から KMD へのラウンド トリップが含まれ、広範なシナリオで使用される場合は、待機時間の短いユーザー モード送信モデルの目的を打ち負かすためです。
詳細については、「ユーザー モードの作業の送信 をする」を参照してください。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows 11 バージョン 24H2 (WDDM 3.2) |
ヘッダー | d3dkmthk.h |
関連項目
DxgkDdiNotifyWorkSubmissionをする