Compartilhar via


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

Confira também

DXGKARG_NOTIFYWORKSUBMISSION

**DxgkDdiCreateDoorbell

DxgkCbDisconnectDoorbell