Visão geral da residência
Visão geral
Hoje, o driver de modo de usuário cria informações de lista de localização de patch e alocação, juntamente com cada buffer de comando que ele compila. Essas informações são usadas pelo gerenciador de memória de vídeo para duas finalidades:
- A lista de alocação e a lista de locais de patch são usadas para corrigir buffers de comando com endereços de segmento reais antes de serem enviados para um mecanismo de GPU (unidade de processamento gráfico). O suporte a endereços virtuais de GPU no WDDM (Modelo de Driver de Exibição do Windows) v2 elimina a necessidade dessa aplicação de patch.
- A lista de alocação e a lista de locais de patch são usadas pelo gerenciador de memória de vídeo para controlar a residência da alocação. O gerenciador de memória de vídeo garante que todas as alocações referenciadas por um buffer de comando sejam feitas residentes antes que o buffer de comando seja enviado para execução para um mecanismo específico.
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.
Para gerenciar a residência, o driver de modo de usuário terá acesso a duas novas DDIs (interfaces de driver de dispositivo), MakeResident e Remove, bem como será necessário para implementar um novo retorno de chamada TrimResidency . MakeResident adicionará uma ou mais alocações a uma lista de requisitos de residência do dispositivo. A remoção removerá uma das mais alocações dessa lista. O retorno de chamada TrimResidency será chamado pelo gerenciador de memória de vídeo quando precisar que o driver de modo de usuário reduza seu requisito de residência.
MakeResident e Remove também foram atualizados para manter uma contagem de referência interna, o que significa que várias chamadas para MakeResident exigirão um número igual de chamadas de Despejo para realmente remover a alocação.
No novo modelo de residência, a alocação de buffer por comando e a lista de locais de patch estão sendo eliminadas lentamente. Embora essas listas existam em alguns cenários, elas não terão mais controle sobre a residência.
Importante A residência no WDDM v2 é controlada exclusivamente pela lista de requisitos de residência do dispositivo. Isso é verdadeiro em todos os mecanismos da GPU e para cada API.
Eliminação da alocação e da lista de locais de patch
A função da lista de localização de patch e alocação será significativamente reduzida com a introdução do novo modelo de residência e, na verdade, desaparecerá completamente com a introdução do agendamento assistido por hardware.
No modelo de agendamento baseado em pacotes, a lista de alocação continuará a existir da seguinte maneira:
- Para mecanismos que não dão suporte ao endereçamento virtual de GPU, a lista de alocação e a lista de locais de patch continuarão a existir, no entanto, eles serão usados puramente para fins de aplicação de patch e não terão mais controle sobre a residência. A lista de alocação e a lista de locais de patch serão fornecidas ao driver de modo de usuário e ao driver do modo kernel nos vários DDIs usuais, mas qualquer referência a alocações que não sejam residentes fará com que o agendador de GPU rejeite o envio e coloque o dispositivo em erro (perdido). Esse modo de operação é considerado herdado e esperamos que todos os mecanismos de GPU obtenham suporte para endereçamento virtual de GPU em versões futuras de hardware. Espera-se que esse modo de operação seja descartado em versões futuras do WDDM.
- Para mecanismos que dão suporte ao endereçamento virtual de GPU, um novo sinalizador de criação de contexto (DXGK_CONTEXTINFO_NO_PATCHING_REQUIRED) é adicionado para indicar que o contexto específico não requer nenhuma aplicação de patch. Quando esse sinalizador for especificado, nenhuma lista de locais de patch será alocada e apenas uma lista de alocação muito pequena (16 entradas) será alocada. A lista de alocação será usada para controlar referências de gravação em superfícies primárias e para nenhuma outra finalidade. O agendador de GPU precisa saber quando um buffer de comando específico está sendo escrito em uma superfície primária, de modo que ele possa sincronizar corretamente a execução desse buffer em relação à inversão potencialmente ocorrendo na superfície primária.
Da mesma forma, a lista de alocação é usada no driver de modo kernel Apresentar caminho hoje para passar informações ao driver sobre a origem e o destino da operação Present . Nesse contexto, a lista de alocação continuará a existir para passar parâmetros, no entanto, a lista de alocação não será usada para residência. Em GPUs que exigem a aplicação de patch, a lista De alocação presente conterá informações de pré-patch como hoje e o pacote Present será remendado antes de ser agendado se qualquer um dos recursos se mover na memória entre o momento em que eles são enfileirados para o agendador e a hora em que estão agendados para execução na GPU.
A tabela a seguir resume quando um driver WDDM v2 deve esperar receber uma lista de localização de alocação e patch em vários DDIs de driver de modo de usuário e driver de modo kernel.
Mecanismo de GPU | Lista de alocação? | Lista de Locais de Patch? |
---|---|---|
Sem suporte a endereço virtual de GPU (exigir aplicação de patch, padrão) | Sim, tamanho total, mas puramente usado para fins de aplicação de patch. Qualquer referência à alocação que não seja residente resultará no erro (perdido) no dispositivo de envio e no envio rejeitado pelo agendador. |
Sim, tamanho total. |
Suporte a endereço virtual de GPU (conjunto de sinalizadores de DXGK_CONTEXTINFO_NO_PATCHING_REQUIRED ) | Sim, 16 entradas. Faz referência à superfície primária, se houver, sendo gravada pelo buffer de comando. Usado pelo agendador de GPU para sincronização com lábios que ocorrem no controlador de exibição. A superfície primária já deve estar na lista de requisitos de residência do dispositivo ou a referência será rejeitada. |
No |
Suporte a endereço virtual de GPU + agendamento de hardware | No | Não |