Compartilhar via


Função D3DKMTNotifyWorkSubmission (d3dkmthk.h)

Importante

Algumas informações referem-se a um produto de pré-lançamento que pode ser substancialmente modificado antes de ser lançado comercialmente. A Microsoft não oferece garantias, expressas ou implícitas, em relação às informações fornecidas aqui.

D3DKMTNotifyWorkSubmission notifica o KMD (driver de exibição do modo kernel) que o UMD (driver de exibição do modo de usuário) enviou trabalho para a GPU.

Sintaxe

NTSTATUS D3DKMTNotifyWorkSubmission(
  D3DKMT_NOTIFY_WORK_SUBMISSION *unnamedParam1
);

Parâmetros

unnamedParam1

Ponteiro para uma estrutura de D3DKMT_NOTIFY_WORK_SUBMISSION que identifica a fila de hardware na qual o trabalho foi enviado.

Valor de retorno

D3DKMTNotifyWorkSubmission retornará STATUS_SUCCESS se tiver êxito em executar ping kmd. Caso contrário, ele retornará um código de erro apropriado, como STATUS_INVALID_PARAMETER se uma fila ou sinalizador de hardware inválido for especificado.

Observações

No modelo de envio de trabalho no modo de usuário, o KMD não está envolvido no envio de trabalho e, portanto, não está ciente quando um novo trabalho é enviado em um HWQueue. Esse caminho de envio de trabalho de baixa latência é a principal motivação do modelo. No entanto, há certos cenários de nicho e limitações de hardware quando o KMD precisa ser notificado sempre que o trabalho é enviado em um HWQueue. Por exemplo, um agendador de hardware de GPU requer KMD para alternar a lista de execução de hardware de normal para tempo real quando um contexto em tempo real envia trabalho. Se o KMD não estiver envolvido no envio de trabalho, ele não poderá disparar o comutador de runlist imediatamente, o que resulta em atrasar a execução do trabalho em tempo real.

Para acomodar essa necessidade, o KMD pode especificar o status da conexão de campainha como D3DDDI_DOORBELL_STATUS_CONNECTED_NOTIFY em hora de criação da campainha. Sempre que a UMD vê esse status de campainha, ela ajusta seu fluxo de trabalho de envio de trabalho de modo que, depois de escrever um novo comando e tocar a campainha, ele chama o kernel usando D3DKMTNotifyWorkSubmission. Dxgkrnl encaminha essa chamada para KMD usando DxgkDdiNotifyWorkSubmission .

D3DKMTNotifyWorkSubmission é um ping simples de UMD para Dxgkrnl para KMD, notificando o último de que o novo trabalho foi enviado em um HWQueue específico para que o KMD possa iniciar ações específicas, como alternar uma lista de execução em tempo real.

O KMD também pode solicitar a notificação dinamicamente após a criação da campainha. Se o KMD detectar uma condição em que ele deve ser notificado sobre o envio de trabalho nessa fila de hardware, ele poderá primeiro desconectar a campainha chamando DxgkrnlDxgkCbDisconnectDoorbell com D3DDDI_DOORBELL_STATUS_DISCONNECTED_RETRY de status. Mais tarde, quando a UMD tenta reconectar a campainha, o KMD pode fazer a conexão com o status D3DDDI_DOORBELL_STATUS_CONNECTED_NOTIFY.

Os drivers devem usar esse mecanismo em cenários muito específicos e pouco frequentes porque envolve uma viagem de ida e volta de UMD para KMD em cada envio de trabalho e, se ele for usado para cenários amplos, ele derrota a finalidade de um modelo de envio de modo de usuário de baixa latência.

Para obter mais informações, consulte de envio de trabalho no modo de usuário.

Requisitos

Requisito Valor
de cliente com suporte mínimo Windows 11, versão 24H2 (WDDM 3.2)
cabeçalho d3dkmthk.h

Consulte também

D3DKMT_NOTIFY_WORK_SUBMISSION

D3DKMTCreateDoorbell

DxgkCbDisconnectDoorbell

DxgkDdiNotifyWorkSubmission