D3DKMTNotifyWorkSubmission 함수(d3dkmthk.h)
중요
일부 정보는 상용 출시 전에 실질적으로 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
D3DKMTNotifyWorkSubmission 은 UMD(사용자 모드 표시 드라이버)가 GPU에 작업을 제출했음을 KMD(커널 모드 디스플레이 드라이버)에 알릴 수 있습니다.
구문
NTSTATUS D3DKMTNotifyWorkSubmission(
D3DKMT_NOTIFY_WORK_SUBMISSION *unnamedParam1
);
매개 변수
unnamedParam1
작업이 제출된 하드웨어 큐를 식별하는 D3DKMT_NOTIFY_WORK_SUBMISSION 구조체에 대한 포인터입니다.
반환 값
D3DKMTNotifyWorkSubmission 은 KMD ping에 성공하면 STATUS_SUCCESS 반환합니다. 그렇지 않으면 잘못된 하드웨어 큐 또는 플래그가 지정된 경우 STATUS_INVALID_PARAMETER 같은 적절한 오류 코드를 반환합니다.
설명
사용자 모드 작업 제출 모델에서 KMD는 작업 제출에 관여하지 않으므로 HWQueue에서 새 작업이 제출될 때 알 수 없습니다. 이 짧은 대기 시간 작업 제출 경로는 모델의 기본 동기 부여입니다. 그러나 HWQueue에서 작업이 제출될 때마다 KMD에 알림을 받아야 하는 경우 특정 틈새 시나리오 및 하드웨어 제한이 있습니다. 예를 들어 GPU 하드웨어 스케줄러는 실시간 컨텍스트가 작업을 제출할 때 KMD에서 하드웨어 런리스트를 정상에서 실시간으로 전환해야 합니다. KMD가 작업 제출에 관여하지 않으면 런리스트 스위치를 즉시 트리거할 수 없으므로 실시간 작업 실행이 지연됩니다.
이러한 요구 사항을 수용하기 위해 KMD는 초인종을 만들 때 초인종 연결 상태 D3DDDI_DOORBELL_STATUS_CONNECTED_NOTIFY 지정할 수 있습니다. UMD는 이 초인종 상태 볼 때마다 새 명령을 작성하고 초인종을 울린 후 D3DKMTNotifyWorkSubmission을 사용하여 커널을 호출할 수 있도록 작업 제출 워크플로를 조정합니다. Dxgkrnl 은 DxgkDdiNotifyWorkSubmission을 사용하여 KMD에 이 호출을 전달합니다.
D3DKMTNotifyWorkSubmission 은 UMD에서 Dxgkrnl 에서 KMD로의 간단한 ping으로, KMD가 런리스트를 실시간으로 전환하는 등의 특정 작업을 시작할 수 있도록 특정 HWQueue에 새 작업이 제출되었음을 후자에게 알립니다.
KMD는 초인종을 만든 후 동적으로 알림을 요청할 수도 있습니다. KMD가 이 하드웨어 큐에서 작업 제출에 대한 알림을 받아야 하는 조건을 감지하는 경우 먼저 상태 D3DDDI_DOORBELL_STATUS_DISCONNECTED_RETRY Dxgkrnl의 DxgkCbDisconnectDoorbell을 호출하여 초인종의 연결을 끊을 수 있습니다. 나중에 UMD가 초인종을 다시 연결하려고 하면 KMD가 상태 D3DDDI_DOORBELL_STATUS_CONNECTED_NOTIFY 연결할 수 있습니다.
드라이버는 모든 작업 제출에 대해 UMD에서 KMD로의 왕복을 포함하므로 매우 구체적이고 드문 시나리오에서 이 메커니즘을 사용해야 하며, 광범위한 시나리오에 사용되는 경우 대기 시간이 짧은 사용자 모드 제출 모델의 목적을 무용지물로 만듭니다.
자세한 내용은 사용자 모드 작업 제출을 참조하세요.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 11 버전 24H2(WDDM 3.2) |
머리글 | d3dkmthk.h |