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 |