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