次の方法で共有


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

大事な

一部の情報は、市販される前に大幅に変更される可能性があるプレリリース製品に関連しています。 Microsoft は、ここで提供される情報に関して明示的または黙示的な保証を行いません。

DxgkDdiNotifyWorkSubmission 関数は、UMD が新しい作業を送信したことを KMD に通知します。

構文

DXGKDDI_NOTIFYWORKSUBMISSION DxgkddiNotifyworksubmission;

NTSTATUS DxgkddiNotifyworksubmission(
  INOUT_PDXGKARG_NOTIFYWORKSUBMISSION pArgs
)
{...}

パラメーター

pArgs

[in]作業が送信されたハードウェア キューを識別する DXGKARG_NOTIFYWORKSUBMISSION 構造体へのポインター。

戻り値

DxgkDdiNotifyWorkSubmission 成功し、STATUS_SUCCESSを返す必要があります。

備考

ユーザー モードの作業提出モデルでは、KMD は作業の送信に関与しないため、通常、ハードウェア キューで新しい作業が送信されるときには認識されません。 この要因は、待ち時間の短い作業の提出パスの主な動機です。 ただし、ハードウェア キューで作業が送信されるたびに KMD に通知する必要がある特定のニッチなシナリオとハードウェアの制限があります。 たとえば、GPU ハードウェア スケジューラでは、リアルタイム コンテキストが作業を送信するときに、ハードウェアランリストを通常からリアルタイムに切り替えるために KMD が必要です。 KMD が作業の送信に関与していない場合は、すぐにランリスト スイッチをトリガーできないため、リアルタイムの作業の実行が遅れます。

この問題を解決するために、KMD はドアベルの作成時にドアベルの接続状態をD3DDDI_DOORBELL_STATUS_CONNECTED_NOTIFYとして指定 。 UMD はこのドアベルの状態を確認するたびに、新しいコマンドを記述してドアベルを呼び出した後、D3DKMTNotifyWorkSubmissionを使用してカーネルに呼び出されるように、作業送信ワークフローを調整します。 Dxgkrnl は、この呼び出しを dxgkDdiNotifyWorkSubmission 経由で KMD に転送します。

DxgkDdiNotifyWorkSubmission は、UMD から Dxgkrnl から KMD への単純な ping であり、新しい作業が特定のハードウェア キューに送信されたことを後者に通知するため、KMD はランリストをリアルタイムに切り替えるなどの特定のアクションを開始できます。

KMD は、ドアベルの作成後に動的に通知を要求することもできます。 KMD がこのハードウェア キューで作業の送信を通知する必要がある条件を検出した場合は、まず、状態がD3DDDI_DOORBELL_STATUS_DISCONNECTED_RETRYされた dxgkCbDisconnectDoorbell呼び出すことによってドアベルを切断できます。 後で UMD がドアベルを再接続しようとすると、KMD は状態D3DDDI_DOORBELL_STATUS_CONNECTED_NOTIFYとの接続を確立できます。

ドライバーは、非常に具体的で頻度の低いシナリオでこのメカニズムを使用する必要があります。これは、すべての作業の提出に UMD から KMD へのラウンド トリップが含まれ、広範なシナリオで使用される場合は、待機時間の短いユーザー モード送信モデルの目的を打ち負かすためです。

詳細については、「ユーザー モードの作業の送信 する」を参照してください。

必要条件

要件 価値
サポートされる最小クライアント Windows 11 バージョン 24H2 (WDDM 3.2)
ヘッダー d3dkmddi.h
IRQL PASSIVE_LEVEL

関連項目

DXGKARG_NOTIFYWORKSUBMISSION

**DxgkDdiCreateDoorbell

DxgkCbDisconnectDoorbell