Pagination des ressources de mémoire vidéo

Contrairement au modèle de pilote d’affichage Microsoft Windows 2000, le modèle de pilote d’affichage Windows Vista permet de créer plus de ressources de mémoire vidéo que la quantité totale de mémoire vidéo physique disponible, qui sont ensuite paginées dans et hors de la mémoire vidéo si nécessaire. En d’autres termes, toutes les ressources de mémoire vidéo ne sont pas en mémoire vidéo simultanément.

Le GPU peut avoir plusieurs mémoires tampons DMA dans son pipeline. Les ressources de mémoire vidéo référencées par ces mémoires tampons DMA actives doivent être en mémoire vidéo. D’autres ressources de mémoire vidéo inactives peuvent être paginées dans la mémoire système.

Avant que le planificateur GPU puisse appeler la fonction DxgkDdiSubmitCommand du pilote miniport d’affichage pour envoyer une mémoire tampon DMA au GPU, le planificateur doit s’assurer que toutes les ressources de mémoire vidéo utilisées par la mémoire tampon DMA sont réellement dans la mémoire vidéo. Si certaines ressources ne sont pas en mémoire vidéo, elles doivent être paginées à partir de la mémoire système. Le planificateur GPU doit appeler le gestionnaire de mémoire vidéo pour trouver de l’espace dans la mémoire vidéo afin de transférer les données de ressources de mémoire vidéo nécessaires de la mémoire système à la mémoire vidéo. Lorsque la demande de mémoire vidéo est élevée, le planificateur GPU doit appeler le gestionnaire de mémoire vidéo pour transférer les données de ressources de mémoire vidéo inactives vers la mémoire système afin de libérer de la place pour les données de ressources de mémoire vidéo requises. Les mémoires tampons DMA à usage spécial qui contiennent les commandes de transfert de données entre la vidéo et la mémoire système sont appelées mémoires tampons de pagination. Le gestionnaire de mémoire vidéo appelle la fonction DxgkDdiBuildPagingBuffer du pilote miniport d’affichage pour créer des mémoires tampons de pagination dans lesquelles le pilote écrit des commandes de transfert de données spécifiques au matériel.