Compartilhar via


Função D3DKMTNotifyWorkSubmission (d3dkmthk.h)

Importante

Algumas informações estão relacionadas 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, das informações aqui fornecidas.

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

Sintaxe

NTSTATUS D3DKMTNotifyWorkSubmission(
  D3DKMT_NOTIFY_WORK_SUBMISSION *unnamedParam1
);

Parâmetros

unnamedParam1

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

Retornar valor

D3DKMTNotifyWorkSubmission retornará STATUS_SUCCESS se tiver êxito no ping de 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.

Comentários

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 motivação main do modelo. No entanto, há determinados 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 a opção de runlist imediatamente, o que resulta em atrasar a execução do trabalho em tempo real.

Para acomodar essa necessidade, o KMD pode especificar a conexão de campainha status como D3DDDI_DOORBELL_STATUS_CONNECTED_NOTIFY no momento da criação da campainha. Sempre que a UMD vê essa campainha status, ela ajusta seu fluxo de trabalho de envio de trabalho de modo que, depois de escrever um novo comando e tocar a campainha, ele chame 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 runlist para tempo real.

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

Os drivers devem usar esse mecanismo em cenários muito específicos e pouco frequentes, pois ele 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 derrotará a finalidade de um modelo de envio de modo de usuário de baixa latência.

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

Requisitos

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

Confira também

D3DKMT_NOTIFY_WORK_SUBMISSION

D3DKMTCreateDoorbell

DxgkCbDisconnectDoorbell

DxgkDdiNotifyWorkSubmission