DXGK_GPUMMUCAPS struttura (d3dkmddi.h)

La struttura DXGK_GPUMMUCAPS viene usata dal driver in modalità kernel per esprimere le funzionalità di indirizzamento della memoria virtuale.

Sintassi

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;

Members

ReadOnlyMemorySupported

Se impostato su 1, il driver supporta la protezione di sola lettura nelle pagine di memoria.

NoExecuteMemorySupported

Se impostato su 1, il driver non supporta alcuna protezione di esecuzione nelle pagine di memoria.

ZeroInPteSupported

Se impostato su 1, la GPU supporta il flag Zero DXGK_PTE . Questo vale per tutti i livelli di tabella di pagina.

ExplicitPageTableInvalidation

Indica che tutte le voci di una tabella di pagina o una directory di pagine devono essere inserite in uno stato non valido in modo esplicito, tramite UpdatePageTable prima di essere liberato. Per impostazione predefinita, la gestione memoria video può liberare una tabella di pagine, che contiene voci valide in precedenza, se queste voci non sono più necessarie (ad esempio liberando un intervallo di indirizzi virtuali GPU di grandi dimensioni che comporta la distruzione delle tabelle di pagina sottostanti).

Nota

Questi flag vengono in genere usati da un driver software che deve emulare la tabella delle pagine e devono tenere traccia delle informazioni in base a una voce di tabella di pagina e richiedono una coppia init/deinit chiara per tutti gli aggiornamenti delle voci della tabella di pagina.

CacheCoherentMemorySupported

Indica che il driver supporta i bit CacheCoherent nella voce della tabella di pagina e può eseguire il trasferimento coerente di I/O alla memoria di sistema.

PageTableUpdateRequireAddressSpaceIdle

Indica che la GPU non supporta l'aggiornamento delle voci della tabella di pagina o l'invalidazione del buffer di ricerca della traduzione per uno spazio indirizzi attualmente usato da un motore. Quando questo flag viene impostato, gestione memoria video garantisce che tutti i contesti che condividono lo spazio degli indirizzi vengano sospesi quando le voci della tabella di pagina vengono modificate e quando il buffer di ricerca della traduzione non è valido.

LargePageSupported

Se impostato su 1, tutti i livelli delle tabelle di pagina, ad eccezione della foglia, supportano pagine di grandi dimensioni (bit LargePage in DXGK_PTE).

DualPteSupported

Se impostato su 1, la GPU supporta due puntatori a tabelle di pagina nella tabella di una pagina di livello (tabella di pagina 4 KB e tabella di pagina 64 KB).

AllowNonAlignedLargePageAddress

Se impostato su 1, il sistema operativo è in grado di impostare il flag LargePage quando l'indirizzo fisico della voce di pagina di grandi dimensioni non è allineato alla copertura della tabella della pagina foglia. Disponibile a partire da Windows 10 versione 1607 (WDDM 2.1).

SysMem64KBPageSupported

Il driver fornisce la gestione dei segmenti di memoria a 64 KB. Disponibile a partire da Windows 10 versione 1607 (WDDM 2.1).

InvalidTlbEntriesNotCached

Quando questo bit è impostato, il driver non riceverà chiamate a DxgkDdiBuildPagingBuffer per le richieste FlushTlb per intervalli VA che passano da uno stato non valido a uno stato valido. Si prevede che il TLB dell'hardware non memorizza nella cache traduzioni non valide

Disponibile a partire da Windows 10 versione 1903 (WDDM 2.6).

SysMemLargePageSupported

Il driver offre supporto di grandi pagine. Disponibile a partire da Windows Server 2022 (WDDM 2.9).

CachedPageTables

Le tabelle di pagina memorizzate nella cache sono supportate. Disponibile a partire da WDDM 3.1.

Reserved

Riservato per l'uso del sistema; non usare.

Value

Valore della struttura dell'unione espressa come intero.

PageTableUpdateMode

Definisce il tipo di indirizzi usati nelle operazioni DxgkDdiUpdatePageTable . Quando DXGK_PAGETABLEUPDATE_GPU_VIRTUAL è impostato, tutte le operazioni di paging si verificheranno nello spazio indirizzi virtuale del contesto di sistema. Quando le directory di pagina si trovano in un segmento di memoria GPU locale, la modalità di aggiornamento non può essere impostata su DXGK_PAGETABLEUPDATE_CPU_VIRTUAL.

VirtualAddressBitCount

Numero di bit nell'indirizzo virtuale della GPU.

LeafPageTableSizeFor64KPagesInBytes

Dimensioni di una tabella di pagine foglia quando vengono usate pagine da 64 KB. Le dimensioni devono essere un multiplo di dimensioni della pagina della CPU (4096).

PageTableLevelCount

Numero di livelli di tabella di pagina supportati. Il valore minimo è 2 (definito come DXGK_MIN_PAGE_TABLE_LEVEL_COUNT). Il valore massimo è DXGK_MAX_PAGE_TABLE_LEVEL_COUNT.

Quando PageTableLevelCount è 2, la tabella della pagina radice è ridimensionabile dinamicamente e le dimensioni della tabella di pagina vengono determinate tramite DxgkDdiGetRootPageTableSize. Quando PageTableLevelCount è maggiore di 2, tutti i livelli di tabella di pagina hanno dimensioni fisse, descritte tramite DXGK_PAGE_TABLE_LEVEL_DESC::P TableSizeInBytes.

LegacyBehaviors

LegacyBehaviors.SourcePageTableVaInTransfer

Se impostato su 1, gestione memoria video imposta l'indirizzo SourcePageTable in TransferVirtual durante la rimozione dell'allocazione.

LegacyBehaviors.Reserved

Riservati; non usare.

Requisiti

Requisito Valore
Client minimo supportato Windows 10
Server minimo supportato Windows Server 2016
Intestazione d3dkmddi.h (include D3dkmddi.h)