DXGK_GPUMMUCAPS Struktur (d3dkmddi.h)
Die DXGK_GPUMMUCAPS-Struktur wird vom Kernelmodustreiber verwendet, um die Adressierungsfunktionen des virtuellen Speichers auszudrücken.
Syntax
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;
Angehörige
ReadOnlyMemorySupported
Wenn dieser auf 1 festgelegt ist, unterstützt der Treiber schreibgeschützten Schutz auf Speicherseiten.
NoExecuteMemorySupported
Wenn dieser auf 1 festgelegt ist, unterstützt der Treiber keine Ausführung Schutz auf Speicherseiten.
ZeroInPteSupported
Bei Festlegung auf 1 unterstützt die GPU das Flag "Zero DXGK_PTE". Dies gilt für alle Seitentabellenebenen.
ExplicitPageTableInvalidation
Gibt an, dass alle Einträge einer Seitentabelle oder eines Seitenverzeichnisses explizit in einen ungültigen Zustand versetzt werden sollen, über UpdatePageTable-, bevor sie freigegeben werden. Standardmäßig kann der Videospeicher-Manager eine Seitentabelle freigeben, die zuvor gültige Einträge enthält, wenn diese Einträge nicht mehr benötigt werden (z. B. Freigeben eines großen virtuellen GPU-Adressbereichs, was zur Zerstörung zugrunde liegenden Seitentabellen führt).
Anmerkung
Diese Flags werden in der Regel von einem Softwaretreiber verwendet, der die Seitentabelle emulieren muss und informationen pro Seitentabelleneintragsbasis nachverfolgen muss und für alle Aktualisierungen der Seitentabelleneingabe ein klares Init/Deinit-Paar erfordert.
CacheCoherentMemorySupported
Gibt an, dass der Treiber die CacheCoherent- Bits im Seitentabelleneintrag unterstützt und eine kohärente E/A-Übertragung an den Systemspeicher durchführen kann.
PageTableUpdateRequireAddressSpaceIdle
Gibt an, dass die GPU das Aktualisieren von Seitentabelleneinträgen oder das Ungültigstellen des Übersetzungs-Look-Aside-Puffers für einen Adressraum, der derzeit von einem Modul verwendet wird, nicht unterstützt. Wenn diese Kennzeichnungen festgelegt sind, stellt der Videospeicher-Manager sicher, dass alle Kontextfreigaben des Adressraums angehalten werden, wenn die Seitentabelleneinträge geändert werden und der Übersetzungs-Look-Aside-Puffer ungültig ist.
LargePageSupported
Bei Festlegung auf 1 unterstützen alle Seitentabellenebenen mit Ausnahme des Blatts große Seiten (LargePage- Bit in DXGK_PTE).
DualPteSupported
Bei Festlegung auf 1 unterstützt die GPU zwei Zeiger auf Seitentabellen in der Tabelle der ersten Ebene (4 KB Seitentabelle und 64 KB Seitentabelle).
AllowNonAlignedLargePageAddress
Bei Festlegung auf 1 kann das Betriebssystem das LargePage- Flag festlegen, wenn die physische Adresse des Eintrags für große Seiten nicht an der Blattseitentabellenabdeckung ausgerichtet ist. Verfügbar ab Windows 10, Version 1607 (WDDM 2.1).
SysMem64KBPageSupported
Der Treiber bietet Speichersegmentverwaltung bei 64 KB. Verfügbar ab Windows 10, Version 1607 (WDDM 2.1).
InvalidTlbEntriesNotCached
Wenn dieses Bit festgelegt ist, empfängt der Treiber keine Aufrufe an DxgkDdiBuildPagingBuffer für FlushTlb-Anforderungen für VA-Bereiche, die von einem ungültigen in den gültigen Zustand wechseln. Es wird erwartet, dass die TLB der Hardware ungültige Übersetzungen nicht zwischenspeichert.
Verfügbar ab Windows 10, Version 1903 (WDDM 2.6).
SysMemLargePageSupported
Der Treiber bietet Unterstützung für große Seiten. Verfügbar ab Windows Server 2022 (WDDM 2.9).
CachedPageTables
Zwischengespeicherte Seitentabellen werden unterstützt. Verfügbar ab WDDM 3.1.
Reserved
Reserviert für die Systemnutzung; nicht verwenden.
Value
Der Wert der Struktur der Union, ausgedrückt als ganze Zahl.
PageTableUpdateMode
Definiert den Typ der Adressen, die in DxgkDdiUpdatePageTable--Vorgängen verwendet werden. Wenn DXGK_PAGETABLEUPDATE_GPU_VIRTUAL festgelegt ist, erfolgt der gesamte Auslagerungsvorgang im virtuellen Adressraum des Systemkontexts. Wenn sich Seitenverzeichnisse in einem lokalen GPU-Speichersegment befinden, kann der Aktualisierungsmodus nicht auf DXGK_PAGETABLEUPDATE_CPU_VIRTUALfestgelegt werden.
VirtualAddressBitCount
Die Anzahl der Bits in der virtuellen GPU-Adresse.
LeafPageTableSizeFor64KPagesInBytes
Die Größe einer Blattseitentabelle, wenn 64 KB Seiten verwendet werden. Die Größe muss ein Vielfaches der CPU-Seitengröße (4096) sein.
PageTableLevelCount
Die Anzahl der unterstützten Seitentabellenebenen. Der Mindestwert ist 2 (definiert als DXGK_MIN_PAGE_TABLE_LEVEL_COUNT). Der Maximalwert ist DXGK_MAX_PAGE_TABLE_LEVEL_COUNT.
Wenn PageTableLevelCount 2 ist, wird die Größe der Stammseitentabelle dynamisch geändert, und die Größe der Seitentabelle wird durch DxgkDdiGetRootPageTableSizebestimmt. Wenn PageTableLevelCount- größer als 2 ist, weisen alle Seitentabellenebenen eine feste Größe auf, die durch DXGK_PAGE_TABLE_LEVEL_DESC::P ageTableSizeInBytesbeschrieben wird.
LegacyBehaviors
LegacyBehaviors.SourcePageTableVaInTransfer
Bei Festlegung auf 1 legt der Videospeicher-Manager SourcePageTable- Adresse in TransferVirtual- während der Zuordnungserteilung fest.
LegacyBehaviors.Reserved
Reserviert; nicht verwenden.
Anforderungen
Anforderung | Wert |
---|---|
mindestens unterstützte Client- | Windows 10 |
mindestens unterstützte Server- | Windows Server 2016 |
Header- | d3dkmddi.h (einschließlich D3dkmddi.h) |