structure DXGK_SEGMENTDESCRIPTOR (d3dkmddi.h)

La structure DXGK_SEGMENTDESCRIPTOR contient des informations sur un segment pris en charge par le pilote.

Syntaxe

typedef struct _DXGK_SEGMENTDESCRIPTOR {
  [out] PHYSICAL_ADDRESS  BaseAddress;
  [out] PHYSICAL_ADDRESS  CpuTranslatedAddress;
  [out] SIZE_T            Size;
  [out] UINT              NbOfBanks;
  [out] SIZE_T            *pBankRangeTable;
  [out] SIZE_T            CommitLimit;
  [out] DXGK_SEGMENTFLAGS Flags;
} DXGK_SEGMENTDESCRIPTOR;

Membres

[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 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 donné.

[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.

[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.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows Vista
En-tête d3dkmddi.h (inclure D3dkmddi.h)

Voir aussi

D3DDDICB_LOCKFLAGS

DXGKARG_QUERYADAPTERINFO

DXGK_ALLOCATIONINFO

DXGK_QUERYSEGMENTIN

DXGK_QUERYSEGMENTOUT

DXGK_SEGMENTFLAGS

DxgkDdiQueryAdapterInfo

pfnLockCb