DXGK_BUILDPAGINGBUFFER_UPDATEPAGETABLE structure (d3dkmddi.h)
DXGK_BUILDPAGINGBUFFER_UPDATEPAGETABLE est utilisé dans le cadre d’une opération de mise à jour de la table de pages.
Syntaxe
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;
Membres
PageTableLevel
Niveau d’une table de pages, qui est mis à jour.
hAllocation
Handle du pilote en mode noyau d’une allocation, qui est mappée par les entrées de table de pages. Le handle est retourné par le pilote en mode noyau de DxgkDdiCreateAllocation. Le handle peut être NULL pour les allocations, qui n’ont pas de handle de pilote en mode noyau (tables de pages, répertoires de pages, etc.).
PageTableAddress
Adresse de la table de pages à mettre à jour. Si DXGK_VIRTUALADDRESSCAPS :: PageTableUpdateMode est DXGK_PAGETABLEUPDATE_CPU_VIRTUAL, l’adresse virtuelle du processeur se trouve dans le champ CpuVirtual . Si DXGK_VIRTUALADDRESSCAPS :: PageTableUpdateMode est DXGK_PAGETABLEUPDATE_GPU_VIRTUAL, l’adresse virtuelle GPU se trouve dans le champ GpuVirtual . Si DXGK_VIRTUALADDRESSCAPS :: PageTableUpdateMode est DXGK_PAGETABLEUPDATE_GPU_PHYSICAL, l’adresse physique GPU se trouve dans le champ GpuPhysical .
pPageTableEntries
Entrées qui doivent être copiées. L’index zéro dans le tableau pPageTableEntries correspond au startIndex dans le tableau d’entrée de la page de pilotes.
StartIndex
Index de départ d’une entrée de table de pages dans la table de pages où les entrées doivent être copiées. L’index du tableau d’entrée de la table de pages est de base zéro.
NumPageTableEntries
Nombre d’entrées qui doivent être copiées.
Reserved0
Ce membre est réservé et doit être défini sur zéro.
Flags
DXGK_UPDATEPAGETABLEFLAGS structure décrivant l’opération de mise à jour.
DriverProtection
Passé par UMD dans MapGpuVirtualAddressRangeCb.
AllocationOffsetInBytes
Lorsque hAllocation n’a pas la valeur NULL, ce champ spécifie le décalage relatif, en octets, entre le début de l’allocation et la première page ciblée par cette opération de mise à jour. Si la mise à jour cible plusieurs pages de hAllocation, ces pages sont garanties séquentielles. Par exemple, le gestionnaire de mémoire vidéo peut mettre à jour une adresse virtuelle GPU vers la page 4,5,6,7 dans hAllocation. Il n’y aura jamais de cas où un pilote verrait une seule opération de mise à jour ciblant des pages non séquentielles (par exemple, 4, 5, 7). Notez que bien qu’il soit garanti que les pages soient séquentielles du point de vue de l’allocation, elles peuvent ne pas être physiquement contiguës en mémoire.
hProcess
Handle de processus du pilote en mode noyau pour le processus dont les entrées de table de pages sont mises à jour. Il s’agit de la valeur retournée par DxgkDdiCreateProcess.
UpdateMode
Définit la signification de PageTableAddress. Lors de l’initialisation des tables de pages pour le processus de pagination, le mode de mise à jour est toujours DXGK_PAGETABLEUPDATE_CPU_VIRTUAL et pDmaBuffer est défini sur NULL. Dans ce cas, le pilote doit mettre à jour immédiatement les tables de pages. Dans d’autres cas, updateMode est défini sur la valeur spécifiée dans DXGK_VIRTUALADDRESSCAPS ::GpuMmu.PageTableUpdateMode.
Lors de la mise à jour des entrées de table de page pour une table de pages feuilles, le gestionnaire de mémoire vidéo suppose que chaque entrée couvre une page de 4 Ko. Si une page GPU est plus grande (4 Ko * 2n), le gestionnaire de mémoire vidéo fournit des entrées dans le tableau, qui pointent dans les pages GPU. Le pilote en mode noyau peut avoir uniquement besoin d’initialiser des entrées de table de pages, qui pointent vers le début des pages GPU. La figure suivante illustre cela dans le cas où la page GPU est de 16 Ko.
pPageTableEntries64KB
Entrées qui doivent être copiées à partir des tables de pages de 64 Ko. L’index zéro dans le tableau pPageTableEntries correspond au startIndex dans le tableau d’entrée de la page de pilotes. Le tableau doit être utilisé uniquement lorsque la limite DXGK_GPUMMUCAPS ::D ualPteSupported est définie.
FirstPteVirtualAddress
Adresse virtuelle GPU mappée par la première entrée de table de pages mise à jour.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows 10 |
Serveur minimal pris en charge | Windows Server 2016 |
En-tête | d3dkmddi.h (include D3dkmddi.h) |