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) |