DXGKDDI_NOTIFYWORKSUBMISSION função de retorno de chamada (d3dkmddi.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.
A função DxgkDdiNotifyWorkSubmission notifica o KMD de que o UMD enviou um novo trabalho.
Sintaxe
DXGKDDI_NOTIFYWORKSUBMISSION DxgkddiNotifyworksubmission;
NTSTATUS DxgkddiNotifyworksubmission(
INOUT_PDXGKARG_NOTIFYWORKSUBMISSION pArgs
)
{...}
Parâmetros
pArgs
[in] Ponteiro para uma estrutura DXGKARG_NOTIFYWORKSUBMISSION que identifica a fila de hardware na qual o trabalho foi enviado.
Retornar valor
DxgkDdiNotifyWorkSubmission deve ter êxito e retornar STATUS_SUCCESS.
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, normalmente não está ciente quando um novo trabalho é enviado em uma fila de hardware. Esse fator é a motivação main de um caminho de envio de trabalho de baixa latência. No entanto, há determinados cenários de nicho e limitações de hardware em que o KMD precisa ser notificado sempre que o trabalho é enviado em uma fila de hardware. 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 lista de execução imediatamente, o que resulta em atrasar a execução do trabalho em tempo real.
Para resolver esse problema, 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 via DxgkDdiNotifyWorkSubmission.
DxgkDdiNotifyWorkSubmission é um ping simples de UMD para Dxgkrnl para KMD, notificando o último de que o novo trabalho foi enviado em uma fila de hardware específica, permitindo que o KMD inicie ações específicas, como alternar a lista de execução 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 DxgkCbDisconnectDoorbell 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 | d3dkmddi.h |
IRQL | PASSIVE_LEVEL |