Partager via


Initialisation de l’utilisation des segments de mémoire

Les segments de mémoire, dans le contexte du modèle de pilote d’affichage pour Windows Vista et versions ultérieures (WDDM), décrivent l’espace d’adressage de l’unité de traitement graphique (GPU) au gestionnaire de mémoire vidéo. Les segments de mémoire généralisent et virtualisent les ressources de mémoire vidéo. Les segments de mémoire sont configurés en fonction des types de mémoire pris en charge par le matériel (par exemple, la mémoire tampon d’image ou l’ouverture de la mémoire système).

Pour initialiser l’utilisation des segments de mémoire, le sous-système du noyau graphique Microsoft DirectX (Dxgkrnl.sys) appelle la fonction DxgkDdiQueryAdapterInfo du pilote miniport d’affichage. Pour diriger le pilote miniport d’affichage pour retourner des informations sur les segments de mémoire à partir de l’appel DxgkDdiQueryAdapterInfo , le sous-système graphique spécifie le DXGKQAITYPE_QUERYSEGMENT ou la valeur DXGKQAITYPE_QUERYSEGMENT3 dans le membre Type de la structure DXGKARG_QUERYADAPTERINFO .

Le sous-système graphique appelle la fonction DxgkDdiQueryAdapterInfo du pilote d’affichage à deux reprises pour obtenir des informations de segment. Le premier appel à DxgkDdiQueryAdapterInfo récupère le nombre de segments pris en charge par le pilote, et le deuxième appel récupère des informations détaillées sur chaque segment. Dans les appels à DxgkDdiQueryAdapterInfo, le pilote pointe le membre pOutputData de DXGKARG_QUERYADAPTERINFO vers des structures DXGK_QUERYSEGMENTOUT renseignées (pour une version de pilote antérieure à Windows Display Driver Model (WDDM) 1.2) ou vers des structures DXGK_QUERYSEGMENTOUT3 remplies (pour un pilote WDDM 1.2 et versions ultérieures).

Dans le premier appel, le membre pSegmentDescriptor de DXGK_QUERYSEGMENTOUT (pour une version de pilote antérieure à WDDM 1.2) ou DXGK_QUERYSEGMENTOUT3 (pour un pilote WDDM 1.2 et versions ultérieures) a la valeur NULL. Le pilote doit remplir uniquement le membre NbSegment de DXGK_QUERYSEGMENTOUT ou DXGK_QUERYSEGMENTOUT3 avec le nombre de types de segments qu’il prend en charge. Ce nombre indique également le nombre de structures non remplies DXGK_SEGMENTDESCRIPTOR (pour une version de pilote antérieure à WDDM 1.2) ou DXGK_SEGMENTDESCRIPTOR3 (pour un pilote WDDM 1.2 et versions ultérieures) dont le pilote a besoin à partir du deuxième appel à DxgkDdiQueryAdapterInfo.

Dans le deuxième appel, le pilote doit remplir tous les membres de DXGK_QUERYSEGMENTOUT ou DXGK_QUERYSEGMENTOUT3. Dans le deuxième appel, le pilote doit remplir un tableau de la taille de NbSegment des structures DXGK_SEGMENTDESCRIPTOR ou DXGK_SEGMENTDESCRIPTOR3 dans le membre pSegmentDescriptor de DXGK_QUERYSEGMENTOUT ou DXGK_QUERYSEGMENTOUT3 avec des informations sur les segments pris en charge par le pilote.

Dans les deux appels à DxgkDdiQueryAdapterInfo, le membre pInputData de DXGKARG_QUERYADAPTERINFO pointe vers une structure DXGK_QUERYSEGMENTIN qui contient des informations sur l’emplacement et les propriétés de l’ouverture AGP. Si aucune ouverture AGP n’est disponible ou si une ouverture est présente, mais qu’aucun pilote GART approprié n’est installé, les informations sur l’ouverture AGP sont définies sur zéro. Si aucune ouverture AGP n’est présente, le pilote miniport d’affichage ne doit pas indiquer, dans le tableau pSegmentDescriptor de DXGK_QUERYSEGMENTOUT ou DXGK_QUERYSEGMENTOUT3, qu’il prend en charge un segment d’ouverture de type AGP. Si un segment d’ouverture de type AGP est indiqué dans de telles circonstances, l’initialisation de l’adaptateur échoue.

Pendant l’initialisation, comme la mémoire est abondante, la mémoire pour la mémoire tampon de pagination peut être allouée à partir d’un segment spécifique. Le gestionnaire de mémoire vidéo alloue de la mémoire mémoire pour la mémoire tampon de pagination à partir du segment spécifié dans le membre PagingBufferSegmentId de DXGK_QUERYSEGMENTOUT ou DXGK_QUERYSEGMENTOUT3. Le pilote indique l’identificateur du segment de mémoire tampon de paging dans le deuxième appel à DxgkDdiQueryAdapterInfo. Le pilote doit également spécifier la taille en octets qui doit être allouée pour la mémoire tampon de pagination dans le membre PagingBufferSize de DXGK_QUERYSEGMENTOUT ou DXGK_QUERYSEGMENTOUT3.

Pour plus d’informations sur les segments de mémoire et l’utilisation des tampons de pagination, consultez Gestion des segments de mémoire et pagination des ressources de mémoire vidéo.