다음을 통해 공유


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

추가 정보

DXGKARG_UPDATECURRENTVALUESFROMCPU