Freigeben über


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)