Freigeben über


DXGK_BUILDPAGINGBUFFER_UPDATEPAGETABLE Struktur (d3dkmddi.h)

DXGK_BUILDPAGINGBUFFER_UPDATEPAGETABLE wird als Teil eines Seitentabellenaktualisierungsvorgangs verwendet.

Syntax

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;

Angehörige

PageTableLevel

Ebene einer Seitentabelle, die aktualisiert wird.

hAllocation

Kernelmodustreiberhandle einer Zuordnung, die von den Seitentabelleneinträgen zugeordnet wird. Das Handle wird vom Kernelmodustreiber von DxgkDdiCreateAllocationzurückgegeben. Das Handle kann NULL- für Zuordnungen sein, die keinen Kernelmodustreiberhandle haben (Seitentabellen, Seitenverzeichnisse usw.).

PageTableAddress

Adresse der zu aktualisierenden Seitentabelle. Wenn DXGK_VIRTUALADDRESSCAPS:: PageTableUpdateModeDXGK_PAGETABLEUPDATE_CPU_VIRTUAList, befindet sich die virtuelle CPU-Adresse im Feld CpuVirtual. Wenn DXGK_VIRTUALADDRESSCAPS:: PageTableUpdateModeDXGK_PAGETABLEUPDATE_GPU_VIRTUAList, befindet sich die virtuelle GPU-Adresse im Feld GpuVirtual. Wenn DXGK_VIRTUALADDRESSCAPS:: PageTableUpdateModeDXGK_PAGETABLEUPDATE_GPU_PHYSICAList, befindet sich die physische GPU-Adresse im Feld GpuPhysical.

pPageTableEntries

Die Einträge, die kopiert werden müssen. Der Index null in der pPageTableEntries Array entspricht dem StartIndex- im Eintragsarray der Treiberseite.

StartIndex

Der Startindex eines Seitentabelleneintrags in der Seitentabelle, in den die Einträge kopiert werden sollen. Der Arrayindex für die Seitentabelleneingabe ist nullbasiert.

NumPageTableEntries

Die Anzahl der Einträge, die kopiert werden müssen.

Reserved0

Dieses Element ist reserviert und sollte auf Null festgelegt werden.

Flags

DXGK_UPDATEPAGETABLEFLAGS Struktur, die den Aktualisierungsvorgang beschreibt.

DriverProtection

Übergeben von UMD in MapGpuVirtualAddressRangeCb.

AllocationOffsetInBytes

Wenn hAllocation- ungleich NULL ist, gibt dieses Feld den relativen Offset (in Byte) vom Anfang der Zuordnung zur ersten Seite an, auf die dieser Aktualisierungsvorgang ausgerichtet wird. Wenn das Update auf mehrere Seiten von hAllocationausgerichtet ist, sind diese Seiten garantiert sequenziell. Beispielsweise kann der Videospeicher-Manager eine virtuelle GPU-Adresse auf Seite 4,5,6,7 in hAllocation-aktualisieren. Es wird nie ein Fall geben, in dem ein Treiber einen einzelnen Aktualisierungsvorgang sehen würde, der nicht sequenzielle Seiten (z. B. 4,5,7) anvisiere. Beachten Sie, dass die Seiten zwar aus Sicht der Zuordnung sequenziell sind, aber möglicherweise nicht physisch zusammenhängend sind.

hProcess

Kernelmodus-Treiberprozesshandle für den Prozess, dessen Seitentabelleneinträge aktualisiert werden. Dies ist der von DxgkDdiCreateProcesszurückgegebene Wert.

UpdateMode

Definiert die Bedeutung von PageTableAddress. Beim Initialisieren von Seitentabellen für den Pagingprozess wird der Aktualisierungsmodus immer DXGK_PAGETABLEUPDATE_CPU_VIRTUAL und pDmaBuffer- auf NULL-festgelegt. In diesem Fall muss der Treiber Seitentabellen sofort aktualisieren. In anderen Fällen wird die UpdateMode- auf den Wert festgelegt, der in DXGK_VIRTUALADDRESSCAPS::GpuMmu.PageTableUpdateModeangegeben wird.

Beim Aktualisieren von Seitentabelleneinträgen für eine Blattseitentabelle geht der Videospeicher-Manager davon aus, dass jeder Eintrag eine 4 KB-Seite abdeckt. Wenn eine GPU-Seite größer ist (4 KB * 2n), stellt der Videospeicher-Manager Einträge im Array bereit, die auf GPU-Seiten verweisen. Der Kernelmodustreiber muss möglicherweise nur Seitentabelleneinträge initialisieren, die auf den Anfang der GPU-Seiten verweisen. Die folgende Abbildung zeigt dies für den Fall, wenn die GPU-Seite 16 KB beträgt.

pPageTableEntries64KB

Die Einträge, die aus den 64 KB Seitentabellen kopiert werden müssen. Der Index null in der pPageTableEntries Array entspricht dem StartIndex- im Eintragsarray der Treiberseite. Das Array sollte nur verwendet werden, wenn die DXGK_GPUMMUCAPS::D ualPteSupported Cap festgelegt ist.

FirstPteVirtualAddress

Die virtuelle GPU-Adresse, die vom ersten aktualisierten Seitentabelleneintrag zugeordnet wird.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Windows 10
mindestens unterstützte Server- Windows Server 2016
Header- d3dkmddi.h (einschließlich D3dkmddi.h)