다음을 통해 공유


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을 사용하여 커널을 호출할 수 있도록 작업 제출 워크플로를 조정합니다. DxgkrnlDxgkDdiNotifyWorkSubmission을 사용하여 KMD에 이 호출을 전달합니다.

D3DKMTNotifyWorkSubmission 은 UMD에서 Dxgkrnl 에서 KMD로의 간단한 ping으로, KMD가 런리스트를 실시간으로 전환하는 등의 특정 작업을 시작할 수 있도록 특정 HWQueue에 새 작업이 제출되었음을 후자에게 알립니다.

KMD는 초인종을 만든 후 동적으로 알림을 요청할 수도 있습니다. KMD가 이 하드웨어 큐에서 작업 제출에 대한 알림을 받아야 하는 조건을 감지하는 경우 먼저 상태 D3DDDI_DOORBELL_STATUS_DISCONNECTED_RETRY DxgkrnlDxgkCbDisconnectDoorbell을 호출하여 초인종의 연결을 끊을 수 있습니다. 나중에 UMD가 초인종을 다시 연결하려고 하면 KMD가 상태 D3DDDI_DOORBELL_STATUS_CONNECTED_NOTIFY 연결할 수 있습니다.

드라이버는 모든 작업 제출에 대해 UMD에서 KMD로의 왕복을 포함하므로 매우 구체적이고 드문 시나리오에서 이 메커니즘을 사용해야 하며, 광범위한 시나리오에 사용되는 경우 대기 시간이 짧은 사용자 모드 제출 모델의 목적을 무용지물로 만듭니다.

자세한 내용은 사용자 모드 작업 제출을 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 11 버전 24H2(WDDM 3.2)
머리글 d3dkmthk.h

추가 정보

D3DKMT_NOTIFY_WORK_SUBMISSION

D3DKMTCreateDoorbell

DxgkCbDisconnectDoorbell

DxgkDdiNotifyWorkSubmission