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 |