Compartilhar via


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

Consulte também

DXGKARG_NOTIFYWORKSUBMISSION

**DxgkDdiCreateDoorbell

DxgkCbDisconnectDoorbell