Segments de Aperture-Space linéaires

Un segment d’espace d’ouverture linéaire est similaire à un segment d’espace mémoire linéaire ; Toutefois, le segment d’espace d’ouverture n’est qu’un espace d’adressage et ne peut pas contenir de bits. Pour contenir les bits, les pages de mémoire système doivent être allouées et la plage d’espace d’adressage doit être redirigée pour faire référence à ces pages. Le pilote de miniport d’affichage doit implémenter la fonction DxgkDdiBuildPagingBuffer pour DXGK_OPERATION_MAP_APERTURE_SEGMENT et DXGK_OPERATION_UNMAP_APERTURE_SEGMENT types d’opérations pour gérer la redirection et doit exposer cette fonction comme décrit dans DriverEntry of Display Miniport Driver. La fonction DxgkDdiBuildPagingBuffer reçoit la plage à rediriger et la MDL qui référence les pages de mémoire système physique qui ont été allouées.

Le pilote de miniport d’affichage effectue généralement la redirection de la plage d’espace d’adressage en programmant une table de pages, qui est inconnue du gestionnaire de mémoire vidéo.

Le pilote doit définir l’indicateur de champ binaire Aperture dans le membre Indicateurs de la structure DXGK_SEGMENTDESCRIPTOR pour spécifier un segment d’espace d’ouverture linéaire. Le pilote peut également définir les indicateurs de champ binaire suivants pour indiquer une prise en charge supplémentaire du segment :

  • CpuVisible pour indiquer que le segment est accessible par le processeur.

  • CacheCoherent pour indiquer que le segment conserve la cohérence du cache avec le processeur pour les pages vers lesquelles le segment redirige.

La figure suivante montre une représentation visuelle d’un segment d’espace d’ouverture linéaire.

Diagramme illustrant un segment d’espace d’ouverture linéaire.