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) |