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)