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

OS は DxgkDdiUpdateCurrentValuesFromCpu を呼び出して、CPU からネイティブ フェンスのバッチの CurrentValue を 更新します。

構文

DXGKDDI_UPDATECURRENTVALUESFROMCPU DxgkddiUpdatecurrentvaluesfromcpu;

NTSTATUS DxgkddiUpdatecurrentvaluesfromcpu(
  IN_CONST_PDXGKARG_UPDATECURRENTVALUESFROMCPU pUpdateCurrentValuesFromCpu
)
{...}

パラメーター

pUpdateCurrentValuesFromCpu

[入力]更新する現在の値を含む DXGKARG_UPDATECURRENTVALUESFROMCPU 構造体へのポインター。

注釈

この DDI は、既存の "CPU からのシグナル フェンス" API セマンティクスをサポートするために使用されます。 Dxgkrnl が新しい CurrentValue を記述する代わりに、ドライバーは、必要な書き込み前同期/バリアを挿入する機会を与えるために、CurrentValue に書き込むよう求められます。 OS は CPU 側の更新プログラムを同期し、 DxgkDdiUpdateCurrentValuesFromCpu で最新の値を使用できるようにします。 CurrentValue を更新した後、ドライバーは GPU をトリガーして、このフェンスで待機していたハードウェア キューのブロックを解除し、CurrentValue への更新でブロックを解除する必要があります。

簡単に言うと、ドライバーの後に続く手順は次のとおりです。


for i = 1 : NumFences
  1. Insert pre-write memory barrier if required
  2. write new value to CurrentValueCpuVa
  3. trigger GPU to unblock any HwQueues that got unblocked by the updated CurrentValue
end

OS では、 CurrentValueKernelCpuVa ポインターがこの DDI 呼び出しの間だけ有効であり、その前または後には有効ではないことが保証されます。 そのため、KMD は他の場所で使用するために、このポインターをキャッシュしないでください。

ネイティブ GPU フェンスの詳細については、「 ネイティブ GPU フェンス オブジェクト」を参照してください。

要件

要件
サポートされている最小のクライアント Windows 11バージョン 24H2
Header d3dkmddi.h
IRQL DISPATCH_LEVEL

こちらもご覧ください

DXGKARG_UPDATECURRENTVALUESFROMCPU