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