Compartilhar via


Residência de driver no WDDM 2.0

Esta seção fornece detalhes sobre as alterações de residência do driver para o WDDM (Modelo de Driver de Exibição do Windows) 2.0. A funcionalidade descrita está disponível a partir do Windows 10.

Nesta seção

Tópico Descrição

Visão geral da residência

Com a introdução do novo modelo de residência, a residência está sendo movida para uma lista explícita no dispositivo em vez da lista de buffers por comando. O gerenciador de memória de vídeo garantirá que todas as alocações em uma lista de requisitos de residência de dispositivo específica sejam residentes antes que quaisquer contextos pertencentes a esse dispositivo sejam agendados para execução.

Acompanhamento de uso de alocação

Com a lista de alocação ausente, o gerenciador de memória de vídeo não tem mais visibilidade das alocações que estão sendo referenciadas em um buffer de comando específico. Como resultado disso, o gerenciador de memória de vídeo não está mais em posição de acompanhar o uso da alocação e lidar com a sincronização relacionada. Essa responsabilidade agora se enquadrará no driver do modo de usuário. Em particular, o driver de modo de usuário terá que lidar com a sincronização em relação ao acesso direto da CPU à alocação, bem como à renomeação.

Oferecer e recuperar alterações

Para o WDDM v2, os requisitos em torno de Oferta e Recuperação estão sendo relaxados. Os drivers de modo de usuário não são mais necessários para usar a oferta e recuperar em alocações internas. Aplicativos ociosos/suspensos se livrarão dos recursos internos do driver usando a API trimque foi introduzida no Microsoft DirectX 11.1.

Acesso à alocação não residente

O acesso à GPU (unidade de processamento gráfico) a alocações que não são residentes é ilegal e resultará em um dispositivo removido para o aplicativo que gerou o erro.

Há dois modelos distintos de tratamento desse acesso inválido dependendo se o mecanismo com falha dá suporte ao endereçamento virtual de GPU ou não:

  • Para mecanismos que não dão suporte a endereçamento virtual de GPU e usam a lista de localização de alocação e patch para referências de memória de patch, um acesso inválido ocorre quando o driver de modo de usuário envia uma lista de alocação que faz referência a uma alocação que não é residente no dispositivo (ou seja, o driver de modo de usuário não chamou MakeResidentCb nessa alocação). Quando isso ocorre, o kernel gráfico coloca o contexto/dispositivo com falha em erro.
  • Para mecanismos que dão suporte ao endereçamento virtual de GPU, mas acessam um endereço virtual de GPU inválido, seja porque não há alocação por trás do endereço virtual ou há uma alocação válida, mas que não foi feita residente, espera-se que a GPU gere uma falha de página irrecuperável na forma de uma interrupção. Quando ocorre a interrupção da falha de página, o driver do modo kernel precisa encaminhar o erro para o kernel gráfico por meio de uma nova notificação de falha de página. Ao receber essa notificação, o kernel gráfico inicia uma redefinição de mecanismo no mecanismo com falha e coloca o contexto/dispositivo com falha em erro. Se a redefinição do mecanismo não for bem-sucedida, o kernel de gráficos promoverá o erro para uma TDR (detecção e recuperação de tempo limite) completa do adaptador.

Processar orçamentos de residência

No WDDM v2, os processos receberão orçamentos para a quantidade de memória que podem manter residentes. Esse orçamento pode mudar ao longo do tempo, mas geralmente só será imposto quando o sistema estiver sob pressão de memória. Antes do Microsoft Direct3D 12, o orçamento é tratado pelo driver de modo de usuário na forma de notificações trim e falhas makeResident com STATUS_NO_MEMORY. As chamadas MakeResident com falha e notificação TrimToBudget retornam o orçamento mais recente na forma de um valor numBytesToTrim inteiro que indica quanto precisa ser cortado para se ajustar ao novo orçamento.