DXGKDDI_UPDATECURRENTVALUESFROMCPU コールバック関数 (d3dkmddi.h)
OS は DxgkDdiUpdateCurrentValuesFromCpu 呼び出して、CPU からネイティブ フェンスのバッチの CurrentValue を更新します。
構文
DXGKDDI_UPDATECURRENTVALUESFROMCPU DxgkddiUpdatecurrentvaluesfromcpu;
NTSTATUS DxgkddiUpdatecurrentvaluesfromcpu(
IN_CONST_PDXGKARG_UPDATECURRENTVALUESFROMCPU pUpdateCurrentValuesFromCpu
)
{...}
パラメーター
pUpdateCurrentValuesFromCpu
[in]更新する現在の値を含む 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 |
ヘッダー | d3dkmddi.h |
IRQL | DISPATCH_LEVEL |