DXGKDDI_NOTIFYWORKSUBMISSION função de retorno de chamada (d3dkmddi.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.
A função DxgkDdiNotifyWorkSubmission notifica KMD de que a 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.
Valor de retorno
DxgkDdiNotifyWorkSubmission deve ter êxito e retornar STATUS_SUCCESS.
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, normalmente não está ciente quando o novo trabalho é enviado em uma fila de hardware. Esse fator é a principal motivação de um caminho de envio de trabalho de baixa latência. No entanto, há certos 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 o comutador de runlist imediatamente, o que resulta em atrasar a execução do trabalho em tempo real.
Para resolver esse problema, 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 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 assim que o KMD inicie ações específicas, como alternar a lista de execução para 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 deve ser notificado sobre o envio de trabalho nessa fila de hardware, ele poderá primeiro desconectar a campainha chamando DxgkCbDisconnectDoorbell 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 | d3dkmddi.h |
IRQL | PASSIVE_LEVEL |