structure DXGK_SEGMENTDESCRIPTOR3 (d3dkmddi.h)

La structure DXGK_SEGMENTDESCRIPTOR3 contient des informations sur un segment pris en charge par le pilote qui est composé à la fois de mémoire réservée au BIOS (qui est vidée lors d’une transition vers un état de faible consommation) et de mémoire réservée au pilote.

Syntaxe

typedef struct _DXGK_SEGMENTDESCRIPTOR3 {
  [out] DXGK_SEGMENTFLAGS Flags;
  [out] PHYSICAL_ADDRESS  BaseAddress;
  [out] PHYSICAL_ADDRESS  CpuTranslatedAddress;
  [out] SIZE_T            Size;
  [out] UINT              NbOfBanks;
  [out] SIZE_T            *pBankRangeTable;
  [out] SIZE_T            CommitLimit;
        SIZE_T            SystemMemoryEndAddress;
        SIZE_T            Reserved;
} DXGK_SEGMENTDESCRIPTOR3;

Membres

[out] Flags

Structure DXGK_SEGMENTFLAGS qui identifie les propriétés, dans les indicateurs de champ binaire, pour le segment.

Notez que pour un segment d’ouverture de type AGP, le pilote doit définir exclusivement le membre AGP de la structure dans l’union que contient DXGK_SEGMENTFLAGS. Bien que le segment d’ouverture de type AGP soit une ouverture et soit accessible au processeur, si d’autres membres sont définis, l’initialisation de l’adaptateur échoue.

[out] BaseAddress

Adresse de base du segment, telle que déterminée par l’unité de traitement graphique (GPU). L’adresse physique d’une allocation que le gestionnaire de mémoire vidéo a paginé dans le segment se voit attribuer une adresse GPU décalée par rapport à l’adresse de base spécifiée par BaseAddress .

Le gestionnaire de mémoire vidéo ignore l’adresse de base des segments d’ouverture de type AGP (où l’indicateur de champ de bits Agp est spécifié dans le membre Flags ) et utilise à la place l’adresse physique réelle du segment dans l’ouverture AGP, comme déterminé sur le bus où se trouve le GPU. Dans ce cas, le pilote peut utiliser des adresses que le gestionnaire de mémoire vidéo a générées directement pour l’allocation sans nécessiter de traduction.

[out] CpuTranslatedAddress

Adresse de base du segment, par rapport au bus sur lequel le GPU est connecté. Par exemple, lorsque le GPU est connecté sur le bus PCI, CpuTranslatedAddress est l’adresse de base de la plage utilisable spécifiée par un registre d’adresses de base (BAR) PCI. Le pilote spécifie cette adresse uniquement s’il spécifie un segment accessible au processeur en définissant l’indicateur de champ de bits CpuVisible dans le membre Flags .

Ce membre est ignoré pour les segments d’ouverture, y compris le segment d’ouverture de type AGP. La seule exception se produit lorsque le pilote d’affichage en mode utilisateur n’a pas configuré d’adresse virtuelle de remplacement pour une allocation principale (autrement dit, lorsque le pilote n’a pas défini UseAlternateVA dans le membre Flags de la structure D3DDDICB_LOCKFLAGS lors d’un appel à la fonction pfnLockCb ).

Avant que le gestionnaire de mémoire vidéo ne mappe une adresse virtuelle à la plage physique, le gestionnaire de mémoire vidéo traduit cette adresse physique en fonction de la vue processeur du bus et informe le pilote de l’opération afin que le pilote puisse configurer une ouverture pour accéder au contenu du segment à l’emplacement spécifié.

[out] Size

Taille, en octets, du segment. Cette taille doit être un multiple de la taille de la page hôte native (par exemple, 4 Ko sur l’architecture x86).

Pour les segments d’ouverture de type AGP (où l’indicateur de champ de bits Agp est spécifié dans le membre Indicateurs ), le gestionnaire de mémoire vidéo alloue autant d’espace d’ouverture que possible, de sorte que ce membre est ignoré.

[out] NbOfBanks

Nombre de banques dans le segment, si la banque est utilisée (autrement dit, si l’indicateur de champ bit UseBanking est défini dans le membre Indicateurs ).

[out] pBankRangeTable

Tableau de valeurs qui indique les plages qui délimitent chaque banque du segment. Le pilote spécifie ce tableau uniquement s’il définit également l’indicateur de champ bit UseBanking dans le membre Flags .

Le tableau spécifie les adresses de fin de la première banque via la banque NbOfBanks(autrement dit, les décalages de fin dans le segment pour chaque banque). Notez les points suivants :

  • Les banques sont contiguës.

  • La première banque démarre au décalage zéro du segment.

  • La dernière banque se termine à la fin du segment. Le pilote n’est donc pas tenu de spécifier l’adresse de fin de la dernière banque.

[out] CommitLimit

Nombre maximal d’octets pouvant être validés sur le segment. Pour un segment de mémoire, la limite de validation est toujours la même que la taille du segment, qui est spécifiée dans le membre Size . Pour un segment d’ouverture, le pilote peut limiter la quantité de mémoire qui peut être validée sur le segment sur des systèmes avec de petites quantités de mémoire physique.

SystemMemoryEndAddress

Pour les segments partiellement composés de mémoire système, toutes les allocations qui commencent après cette adresse sont purgées dans une transition vers un état de mise en veille prolongée. Les allocations qui existent entièrement dans la mémoire système, où l’adresse de segment est inférieure ou égale à SystemMemoryEndAddress, ne sont pas supprimées dans cette transition.

Le pilote miniport d’affichage doit définir ce membre sur une valeur non NULL si le segment est partiellement conservé dans une transition vers un état de mise en veille prolongée, auquel cas le membre PartiellementPreservedDuringHibernate dans la structure DXGK_SEGMENTFLAGS doit être défini.

La mémoire réservée au pilote s’exécute à partir de l’adresse de segment 0 jusqu’à SystemMemoryEndAddress, inclus. La mémoire réservée au BIOS s’exécute à partir de (SystemMemoryEndAddress+1) jusqu’à la fin du segment.

Reserved

Ce membre est réservé et doit être défini sur zéro.

Remarques

Cette structure est utilisée par un miniport d’affichage WDDM 1.2 ou version ultérieure en mode noyau pour retourner des informations sur les segments de mémoire en réponse à un appel de fonction DxgkDdiQueryAdapterInfo dans lequel le sous-système graphique spécifie la valeur DXGKQAITYPE_QUERYSEGMENT3 dans le membre Type de la structure DXGKARG_QUERYADAPTERINFO .

Cette structure est pointée par le membre pSegmentDescriptor de la structure DXGK_QUERYSEGMENTOUT3 .

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 8
Serveur minimal pris en charge Windows Server 2012
En-tête d3dkmddi.h

Voir aussi

D3DDDICB_LOCKFLAGS

DXGKARG_QUERYADAPTERINFO

DXGK_QUERYSEGMENTOUT3

DXGK_SEGMENTFLAGS

DxgkDdiQueryAdapterInfo