Condividi tramite


struttura DXGK_GPUMMUCAPS (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;

Membri

ReadOnlyMemorySupported

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

NoExecuteMemorySupported

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

ZeroInPteSupported

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

ExplicitPageTableInvalidation

Indica che tutte le voci di una tabella di pagina o di una directory di pagine devono essere inserite in uno stato non valido in modo esplicito, tramite UpdatePageTable prima di essere liberate. Per impostazione predefinita, la gestione della 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 con conseguente distruzione delle tabelle di pagine sottostanti).

Nota

Questi flag vengono in genere usati da un driver software che deve emulare la tabella di pagine e devono tenere traccia delle informazioni in base alle voci della 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 è impostato, gestione memoria video garantirà che tutto il contesto che condivide lo spazio indirizzi venga sospeso quando le voci della tabella di pagina vengono modificate e quando il buffer di ricerca della traduzione viene invalidato.

LargePageSupported

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

DualPteSupported

Se impostata su 1, la GPU supporta due puntatori alle tabelle di pagine nella tabella di livello 1 (tabella di pagine di 4 KB e tabella di pagine da 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 gli intervalli va va che passano da uno stato non valido a quello valido. È previsto che il bilanciamento del carico di rete dell'hardware non memorizza nella cache le traduzioni non valide

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

SysMemLargePageSupported

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

CachedPageTables

Sono supportate le tabelle di pagine memorizzate nella cache. Disponibile a partire da WDDM 3.1.

Reserved

Riservato per l'uso del sistema; non usare.

Value

Valore della struttura dell'unione espressa come numero intero.

PageTableUpdateMode

Definisce il tipo di indirizzi utilizzati in operazioni dxgkDdiUpdatePageTable. Quando viene impostata DXGK_PAGETABLEUPDATE_GPU_VIRTUAL, tutte le operazioni di paging si verificheranno nello spazio di 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 utilizzate pagine da 64 KB. Le dimensioni devono essere multiple di dimensioni della pagina 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 di 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 delle pagine hanno una dimensione fissa, descritta tramite DXGK_PAGE_TABLE_LEVEL_DESC::P ageTableSizeInBytes.

LegacyBehaviors

LegacyBehaviors.SourcePageTableVaInTransfer

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

LegacyBehaviors.Reserved

Riservato; non usare.

Fabbisogno

Requisito Valore
client minimo supportato Windows 10
server minimo supportato Windows Server 2016
intestazione d3dkmddi.h (include D3dkmddi.h)