structure DXGK_BUILDPAGINGBUFFER_UPDATEPAGETABLE (d3dkmddi.h)
DXGK_BUILDPAGINGBUFFER_UPDATEPAGETABLE est utilisé dans le cadre d’une opération de mise à jour de 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, mise à jour.
hAllocation
Handle de pilote en mode noyau d’une allocation, qui est mappée par les entrées de la 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 de l’UC 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 table de pilotes.
StartIndex
Index de départ d’une entrée de table de page dans la table de pages où les entrées doivent être copiées. L’index du tableau d’entrée de table de pages est basé sur zéro.
NumPageTableEntries
Nombre d’entrées à copier.
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’est pas NULL, ce champ spécifie le décalage relatif, en octets, du début de l’allocation à 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 d’être séquentielles. Par exemple, le gestionnaire de mémoire vidéo peut mettre à jour une adresse virtuelle GPU à la page 4,5,6,7 dans hAllocation . Il n’y aura jamais de cas où un pilote voit une seule opération de mise à jour qui cible les pages non séquentielles (par exemple, 4 5,7). Notez que même si les pages sont garanties d’être 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 page 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, le 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 pages 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 du mode noyau peut uniquement avoir besoin d’initialiser les entrées de table de pages, qui pointent vers le début des pages GPU. La figure suivante illustre cela pour 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 table de pilotes. Le tableau ne doit être utilisé que lorsque la limite de DXGK_GPUMMUCAPS ::D ualPteSupported est définie.
FirstPteVirtualAddress
Adresse virtuelle GPU mappée par la première entrée de table de page mise à jour.
Exigences
Exigence | Valeur |
---|---|
client minimum pris en charge | Windows 10 |
serveur minimum pris en charge | Windows Server 2016 |
d’en-tête | d3dkmddi.h (include D3dkmddi.h) |