DXGK_GPUMMUCAPS Struktur (d3dkmddi.h)

Die DXGK_GPUMMUCAPS-Struktur wird vom Kernelmodustreiber verwendet, um Die Adressierungsfunktionen des virtuellen Arbeitsspeichers 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;

Member

ReadOnlyMemorySupported

Wenn er auf 1 festgelegt ist, unterstützt der Treiber schreibgeschützten Schutz auf Speicherseiten.

NoExecuteMemorySupported

Wenn er auf 1 festgelegt ist, unterstützt der Treiber keinen Ausführungsschutz auf Speicherseiten.

ZeroInPteSupported

Wenn sie auf 1 festgelegt ist, 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 über UpdatePageTable in einen ungültigen Zustand versetzt werden sollen, bevor sie freigegeben werden. Standardmäßig kann der Videospeicher-Manager eine Seitentabelle frei geben, die zuvor gültige Einträge enthält, wenn diese Einträge nicht mehr benötigt werden (z. B. das Freigeben eines großen virtuellen GPU-Adressbereichs, der zur Zerstörung der zugrunde liegenden Seitentabellen führt).

Hinweis

Diese Flags werden in der Regel von einem Softwaretreiber verwendet, der die Seitentabelle emulieren muss und Informationen auf einer Basis von Seitentabelleneinträgen nachverfolgen muss und ein klares Init/Deinit-Paar für alle Aktualisierungen von Seitentabelleneinträgen erfordert.

CacheCoherentMemorySupported

Gibt an, dass der Treiber die CacheCoherent-Bits im Seitentabelleneintrag unterstützt und eine kohärente E/A-Übertragung in 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 einer Engine verwendet wird, nicht unterstützt. Wenn diese Flags festgelegt sind, stellt der Videospeicher-Manager sicher, dass der gesamte Kontext, der den Adressraum teilt, angehalten wird, wenn die Seitentabelleneinträge geändert und der Übersetzungs-Look-Aside-Puffer ungültig ist.

LargePageSupported

Wenn sie auf 1 festgelegt ist, unterstützen alle Ebenen von Seitentabellen mit Ausnahme der Blatttabellen große Seiten (LargePage-Bit in DXGK_PTE).

DualPteSupported

Wenn sie auf 1 festgelegt ist, unterstützt die GPU zwei Zeiger auf Seitentabellen in der Tabelle der Ebene 1 (4 KB Seitentabelle und 64 KB Seitentabelle).

AllowNonAlignedLargePageAddress

Wenn auf 1 festgelegt ist, kann das Betriebssystem das LargePage-Flag festlegen, wenn die physische Adresse des Eintrags für große Seiten nicht an der Abdeckung der Blattseitentabelle ausgerichtet ist. Verfügbar ab Windows 10 Version 1607 (WDDM 2.1).

SysMem64KBPageSupported

Der Treiber ermöglicht die Speichersegmentverwaltung mit 64 KB. Verfügbar ab Windows 10 Version 1607 (WDDM 2.1).

InvalidTlbEntriesNotCached

Wenn dieses Bit festgelegt ist, empfängt der Treiber keine Aufrufe von DxgkDdiBuildPagingBuffer für FlushTlb-Anforderungen für VA-Bereiche, die von einem ungültigen in einen gültigen Zustand übergehen. 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

Für die Systemnutzung reserviert; nicht verwenden.

Value

Der Wert der Unionsstruktur, der als ganze Zahl ausgedrückt wird.

PageTableUpdateMode

Definiert den Typ der Adressen, die in DxgkDdiUpdatePageTable-Vorgängen verwendet werden. Wenn DXGK_PAGETABLEUPDATE_GPU_VIRTUAL festgelegt ist, werden alle Auslagerungsvorgänge im virtuellen Adressraum des Systemkontexts ausgeführt. Wenn sich Seitenverzeichnisse in einem lokalen GPU-Speichersegment befinden, kann der Aktualisierungsmodus nicht auf DXGK_PAGETABLEUPDATE_CPU_VIRTUAL festgelegt werden.

VirtualAddressBitCount

Die Anzahl der Bits in der virtuellen GPU-Adresse.

LeafPageTableSizeFor64KPagesInBytes

Die Größe einer Blattblatttabelle, wenn Seiten mit 64 KB 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, kann die Stammseitentabelle dynamisch geändert werden, und die Größe der Seitentabelle wird durch DxgkDdiGetRootPageTableSize bestimmt. Wenn PageTableLevelCount größer als 2 ist, weisen alle Seitentabellenebenen eine feste Größe auf, die durch DXGK_PAGE_TABLE_LEVEL_DESC::P ageTableSizeInBytes beschrieben wird.

LegacyBehaviors

LegacyBehaviors.SourcePageTableVaInTransfer

Wenn auf 1 festgelegt ist, legt der Videospeicher-Manager die SourcePageTable-Adresse in TransferVirtual während der Zuweisungsentfernung fest.

LegacyBehaviors.Reserved

Reserviert; nicht verwenden.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 10
Unterstützte Mindestversion (Server) Windows Server 2016
Kopfzeile d3dkmddi.h (einschließlich D3dkmddi.h)