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