共用方式為


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 語意。 驅動程式會要求寫入 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 呼叫期間有效,而不是在 DDI 呼叫之前或之後。 因此,KMD 絕對不能快取此指標以供其他位置使用。

如需原生 GPU 柵欄的詳細資訊,請參閱 原生 GPU 柵欄物件

規格需求

需求
最低支援的用戶端 Windows 11 版本 24H2
標頭 d3dkmddi.h
IRQL DISPATCH_LEVEL

另請參閱

DXGKARG_UPDATECURRENTVALUESFROMCPU