Paginando recursos de memória de vídeo

Ao contrário do Modelo de Driver de Exibição do Microsoft Windows 2000, o modelo de driver de exibição do Windows Vista permite que mais recursos de memória de vídeo sejam criados do que a quantidade total de memória de vídeo física disponível, que são então paginadas dentro e fora da memória de vídeo, conforme necessário. Em outras palavras, nem todos os recursos de memória de vídeo estão na memória de vídeo simultaneamente.

A GPU pode ter vários buffers de DMA em seu pipeline. Os recursos de memória de vídeo referenciados por esses buffers de DMA ativos devem estar na memória de vídeo. Outros recursos de memória de vídeo ociosos podem ser colocados na memória do sistema.

Antes que o agendador de GPU possa chamar a função DxgkDdiSubmitCommand do driver de miniporta de exibição para enviar um buffer de DMA para a GPU, o agendador deve garantir que todos os recursos de memória de vídeo usados pelo buffer de DMA estejam realmente na memória de vídeo. Se alguns recursos não estiverem na memória de vídeo, eles deverão ser paginado na memória do sistema. O agendador de GPU deve chamar o gerenciador de memória de vídeo para encontrar espaço na memória de vídeo para transferir os dados necessários de recursos de memória de vídeo da memória do sistema para a memória de vídeo. Quando a demanda de memória de vídeo é alta, o agendador de GPU deve chamar o gerenciador de memória de vídeo para transferir dados de recursos de memória de vídeo ociosos para a memória do sistema para abrir espaço para os dados de recursos de memória de vídeo necessários. Os buffers de DMA de finalidade especial que contêm os comandos para transferir dados entre vídeo e memória do sistema são conhecidos como buffers de paginação. O gerenciador de memória de vídeo chama a função DxgkDdiBuildPagingBuffer do driver de miniporta de exibição para criar buffers de paginação aos quais o driver grava comandos de transferência de dados específicos de hardware.