Partager via


structure DXGK_GPUMMUCAPS (d3dkmddi.h)

La structure DXGK_GPUMMUCAPS est utilisée par le pilote en mode noyau pour exprimer les fonctionnalités d’adressage de la mémoire virtuelle.

Syntaxe

typedef struct _DXGK_GPUMMUCAPS {
  union {
    struct {
      UINT ReadOnlyMemorySupported : 1;
      UINT NoExecuteMemorySupported : 1;
      UINT ZeroInPteSupported : 1;
      UINT ExplicitPageTableInvalidation : 1;
      UINT CacheCoherentMemorySupported : 1;
      UINT PageTableUpdateRequireAddressSpaceIdle : 1;
      UINT LargePageSupported : 1;
      UINT DualPteSupported : 1;
      UINT AllowNonAlignedLargePageAddress : 1;
      UINT SysMem64KBPageSupported : 1;
      UINT InvalidTlbEntriesNotCached : 1;
      UINT SysMemLargePageSupported : 1;
      UINT CachedPageTables : 1;
#if ...
      UINT Reserved : 19;
#elif
      UINT Reserved : 20;
#elif
      UINT Reserved : 21;
#elif
      UINT Reserved : 22;
#else
      UINT Reserved : 24;
#endif
    };
    UINT Value;
  };
  DXGK_PAGETABLEUPDATEMODE PageTableUpdateMode;
  UINT                     VirtualAddressBitCount;
  UINT                     LeafPageTableSizeFor64KPagesInBytes;
  UINT                     PageTableLevelCount;
  struct {
    UINT SourcePageTableVaInTransfer : 1;
    UINT Reserved : 31;
  } LegacyBehaviors;
} DXGK_GPUMMUCAPS;

Membres

ReadOnlyMemorySupported

Lorsqu’il est défini sur 1, le pilote prend en charge la protection en lecture seule sur les pages mémoire.

NoExecuteMemorySupported

Lorsqu’il est défini sur 1, le pilote ne prend pas en charge la protection d’exécution sur les pages mémoire.

ZeroInPteSupported

Lorsqu’il est défini sur 1, le GPU prend en charge l’indicateur Zéro DXGK_PTE . Cela s’applique à tous les niveaux de table de page.

ExplicitPageTableInvalidation

Indique que toutes les entrées d’une table de pages ou d’un répertoire de pages doivent être placées dans un état non valide explicitement, via UpdatePageTable avant d’être libérées. Par défaut, le gestionnaire de mémoire vidéo peut libérer une table de pages, qui contient des entrées précédemment valides, si ces entrées ne sont plus nécessaires (par exemple, la libération d’une grande plage d’adresses virtuelles GPU entraînant la destruction des tables de pages sous-jacentes).

Notes

Ces indicateurs sont généralement utilisés par un pilote logiciel qui doit émuler la table de pages et doit effectuer le suivi des informations sur une base d’entrée de table par page et exiger une paire init/deinit claire pour toutes les mises à jour des entrées de table de page.

CacheCoherentMemorySupported

Indique que le pilote prend en charge les bits CacheCoherent dans l’entrée de la table de page et peut effectuer un transfert cohérent d’E/S vers la mémoire système.

PageTableUpdateRequireAddressSpaceIdle

Indique que le GPU ne prend pas en charge la mise à jour des entrées de table de page ou l’invalidation de la mémoire tampon de recherche de traduction pour un espace d’adressage actuellement utilisé par un moteur. Lorsque ces indicateurs sont définis, le gestionnaire de mémoire vidéo garantit que tout le contexte partageant l’espace d’adressage est suspendu lorsque ses entrées de table de page sont modifiées et lorsque la mémoire tampon de recherche de traduction est invalidée.

LargePageSupported

Quand la valeur est définie sur 1, tous les niveaux de tables de pages, à l’exception de la feuille, prennent en charge les grandes pages (bit LargePage dans DXGK_PTE).

DualPteSupported

Lorsqu’il est défini sur 1, le GPU prend en charge deux pointeurs vers les tables de pages de niveau 1 (table de pages de 4 Ko et table de pages de 64 Ko).

AllowNonAlignedLargePageAddress

Lorsqu’il est défini sur 1, le système d’exploitation peut définir l’indicateur LargePage lorsque l’adresse physique de l’entrée de grande page n’est pas alignée sur la couverture de la table feuille. Disponible à partir de Windows 10 version 1607 (WDDM 2.1).

SysMem64KBPageSupported

Le pilote fournit la gestion des segments de mémoire à 64 Ko. Disponible à partir de Windows 10 version 1607 (WDDM 2.1).

InvalidTlbEntriesNotCached

Lorsque ce bit est défini, le pilote ne reçoit pas d’appels à DxgkDdiBuildPagingBuffer pour les demandes FlushTlb pour les plages d’AUTHENTIFICATION qui passent d’un état non valide à un état valide. Il est prévu que l’équilibrage de charge du matériel ne met pas en cache les traductions non valides

Disponible à partir de Windows 10 version 1903 (WDDM 2.6).

SysMemLargePageSupported

Le pilote prend en charge les grandes pages. Disponible à partir de Windows Server 2022 (WDDM 2.9).

CachedPageTables

Les tables de pages mises en cache sont prises en charge. Disponible à partir de WDDM 3.1.

Reserved

Réservé à l’utilisation du système ; n’utilisez pas.

Value

Valeur de la structure de l’union exprimée sous forme d’entier.

PageTableUpdateMode

Définit le type d’adresses utilisées dans les opérations DxgkDdiUpdatePageTable . Lorsque DXGK_PAGETABLEUPDATE_GPU_VIRTUAL est défini, toutes les opérations de pagination se produisent dans l’espace d’adressage virtuel du contexte système. Lorsque les répertoires de pages se trouvent dans un segment de mémoire GPU local, le mode de mise à jour ne peut pas être défini sur DXGK_PAGETABLEUPDATE_CPU_VIRTUAL.

VirtualAddressBitCount

Nombre de bits dans l’adresse virtuelle GPU.

LeafPageTableSizeFor64KPagesInBytes

Taille d’une table feuille lorsque des pages de 64 Ko sont utilisées. La taille doit être un multiple de la taille de page du processeur (4096).

PageTableLevelCount

Nombre de niveaux de table de page pris en charge. La valeur minimale est 2 (définie comme DXGK_MIN_PAGE_TABLE_LEVEL_COUNT). La valeur maximale est DXGK_MAX_PAGE_TABLE_LEVEL_COUNT.

Lorsque PageTableLevelCount a la valeur 2, la table de pages racine est redimensionnable dynamiquement et la taille de la table de pages est déterminée via DxgkDdiGetRootPageTableSize. Lorsque PageTableLevelCount est supérieur à 2, tous les niveaux de table de page ont une taille fixe, qui est décrite dans DXGK_PAGE_TABLE_LEVEL_DESC ::P ageTableSizeInBytes.

LegacyBehaviors

LegacyBehaviors.SourcePageTableVaInTransfer

Lorsqu’il est défini sur 1, le gestionnaire de mémoire vidéo définit l’adresse SourcePageTable dans TransferVirtual pendant l’éviction de l’allocation.

LegacyBehaviors.Reserved

Réservé ; ne pas utiliser.

Configuration requise

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