DXGK_BUILDPAGINGBUFFER_UPDATEPAGETABLE struttura (d3dkmddi.h)
DXGK_BUILDPAGINGBUFFER_UPDATEPAGETABLE viene usato come parte di un'operazione di aggiornamento della tabella di pagina.
Sintassi
typedef struct _DXGK_BUILDPAGINGBUFFER_UPDATEPAGETABLE {
UINT PageTableLevel;
HANDLE hAllocation;
DXGK_PAGETABLEUPDATEADDRESS PageTableAddress;
DXGK_PTE *pPageTableEntries;
UINT StartIndex;
UINT NumPageTableEntries;
UINT Reserved0;
DXGK_UPDATEPAGETABLEFLAGS Flags;
UINT64 DriverProtection;
UINT64 AllocationOffsetInBytes;
HANDLE hProcess;
DXGK_PAGETABLEUPDATEMODE UpdateMode;
DXGK_PTE *pPageTableEntries64KB;
D3DGPU_VIRTUAL_ADDRESS FirstPteVirtualAddress;
} DXGK_BUILDPAGINGBUFFER_UPDATEPAGETABLE;
Members
PageTableLevel
Livello di una tabella di pagina, aggiornata.
hAllocation
Gestione driver in modalità kernel di un'allocazione, mappata dalle voci della tabella di pagina. L'handle viene restituito dal driver in modalità kernel da DxgkDdiCreateAllocation. L'handle può essere NULL per le allocazioni, che non hanno un handle driver in modalità kernel (tabelle di pagina, directory di pagina e così via).
PageTableAddress
Indirizzo della tabella di pagina da aggiornare. Se DXGK_VIRTUALADDRESSCAPS:: PageTableUpdateMode è DXGK_PAGETABLEUPDATE_CPU_VIRTUAL, l'indirizzo virtuale della CPU si trova nel campo CpuVirtual . Se DXGK_VIRTUALADDRESSCAPS:: PageTableUpdateMode è DXGK_PAGETABLEUPDATE_GPU_VIRTUAL, l'indirizzo virtuale della GPU si trova nel campo GpuVirtual . Se DXGK_VIRTUALADDRESSCAPS:: PageTableUpdateMode è DXGK_PAGETABLEUPDATE_GPU_PHYSICAL, l'indirizzo fisico della GPU si trova nel campo GpuPhysical .
pPageTableEntries
Le voci che devono essere copiate. L'indice zero nella matrice pPageTableEntries corrisponde alla matrice di voci della tabella della pagina del driver.
StartIndex
Indice iniziale di una voce di tabella di pagina all'interno della tabella di pagina in cui le voci devono essere copiate. L'indice della matrice di voci della tabella di pagina è basato su zero.
NumPageTableEntries
Numero di voci che devono essere copiate.
Reserved0
Questo membro è riservato e deve essere impostato su zero.
Flags
DXGK_UPDATEPAGETABLEFLAGS struttura che descrive l'operazione di aggiornamento.
DriverProtection
Passato da UMD in MapGpuVirtualAddressRangeCb.
AllocationOffsetInBytes
Quando hAllocation non è NULL, questo campo specifica l'offset relativo, in byte, dall'inizio dell'allocazione alla prima pagina destinata a questa operazione di aggiornamento. Se la destinazione dell'aggiornamento è più pagine da hAllocation, queste pagine devono essere sequenziali. Ad esempio, la gestione memoria video può aggiornare un indirizzo virtuale GPU alla pagina 4,5,6,7 in hAllocation. Non ci sarà mai un caso in cui un driver visualizzerebbe un'unica operazione di aggiornamento che punta a pagine non sequenziali (ad esempio 4,5,7). Si noti che, sebbene le pagine siano sequenziali dal punto di vista dell'allocazione, potrebbero non essere fisicamente contigue in memoria.
hProcess
Gestione del processo del driver in modalità kernel per il processo di cui vengono aggiornate le voci della tabella di pagina. Questo è il valore restituito da DxgkDdiCreateProcess.
UpdateMode
Definisce il significato di PageTableAddress. Quando si inizializzano le tabelle di pagina per il processo di paging, la modalità di aggiornamento è sempre DXGK_PAGETABLEUPDATE_CPU_VIRTUAL e pDmaBuffer è impostata su NULL. In questo caso, il driver deve aggiornare immediatamente le tabelle di pagina. In altri casi updateMode è impostato sul valore specificato in DXGK_VIRTUALADDRESSCAPS::GpuMmu.PageTableUpdateMode.
Quando si aggiornano le voci della tabella di pagina per una tabella di pagine foglia, gestione memoria video presuppone che ogni voce copre una pagina di 4 KB. Se una pagina GPU è più grande (4 KB * 2n), la gestione memoria video fornirà le voci nella matrice, che puntano all'interno delle pagine GPU. Il driver in modalità kernel potrebbe dover inizializzare solo le voci della tabella di pagina, che puntano all'inizio delle pagine DELLA GPU. La figura seguente illustra questa situazione per il caso in cui la pagina GPU è 16 KB.
pPageTableEntries64KB
Le voci che devono essere copiate dalle tabelle di pagina 64 KB. L'indice zero nella matrice pPageTableEntries corrisponde alla matrice di voci della tabella della pagina del driver. La matrice deve essere usata solo quando viene impostato il limite DXGK_GPUMMUCAPS::D ualPteSupported .
FirstPteVirtualAddress
Indirizzo virtuale GPU mappato dalla prima voce della tabella di pagina aggiornata.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 10 |
Server minimo supportato | Windows Server 2016 |
Intestazione | d3dkmddi.h (include D3dkmddi.h) |