DXGK_BUILDPAGINGBUFFER_UPDATEPAGETABLE Struktur (d3dkmddi.h)
DXGK_BUILDPAGINGBUFFER_UPDATEPAGETABLE wird als Teil eines Aktualisierungsvorgangs für Seitentabellen 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;
Member
PageTableLevel
Ebene einer Seitentabelle, die aktualisiert wird.
hAllocation
Kernelmodustreiberhandle einer Zuordnung, die durch die Seitentabelleneinträge zugeordnet wird. Das Handle wird vom Kernelmodustreiber von DxgkDdiCreateAllocation zurückgegeben. Das Handle kann NULL für Zuordnungen sein, die kein Kernelmodustreiberhandle (Seitentabellen, Seitenverzeichnisse usw.) aufweisen.
PageTableAddress
Adresse der zu aktualisierenden Seitentabelle. Wenn DXGK_VIRTUALADDRESSCAPS:: PageTableUpdateModeDXGK_PAGETABLEUPDATE_CPU_VIRTUAL ist, befindet sich die virtuelle CPU-Adresse im Feld CpuVirtual . Wenn DXGK_VIRTUALADDRESSCAPS:: PageTableUpdateModeDXGK_PAGETABLEUPDATE_GPU_VIRTUAL ist, befindet sich die virtuelle GPU-Adresse im Feld GpuVirtual . Wenn DXGK_VIRTUALADDRESSCAPS:: PageTableUpdateModeDXGK_PAGETABLEUPDATE_GPU_PHYSICAL ist, befindet sich die physische GPU-Adresse im Feld GpuPhysical .
pPageTableEntries
Die Einträge, die kopiert werden müssen. Der Index null im pPageTableEntries-Array entspricht dem StartIndex im Tabelleneintragsarray der Treiberseite.
StartIndex
Der Startindex eines Seitentabelleneintrags in der Seitentabelle, in die die Einträge kopiert werden sollen. Der Seitentabelleneintragsarrayindex ist nullbasiert.
NumPageTableEntries
Die Anzahl der Einträge, die kopiert werden müssen.
Reserved0
Dieser Member ist reserviert und sollte auf null festgelegt werden.
Flags
DXGK_UPDATEPAGETABLEFLAGS Struktur, die den Aktualisierungsvorgang beschreibt.
DriverProtection
Wird von UMD in MapGpuVirtualAddressRangeCb übergeben.
AllocationOffsetInBytes
Wenn hAllocation nicht NULL ist, gibt dieses Feld den relativen Offset in Bytes vom Anfang der Zuordnung bis zur ersten Seite an, auf die dieser Aktualisierungsvorgang abzielt. Wenn das Update mehrere Seiten aus hAllocation anzielt, wird garantiert, dass diese Seiten sequenziell sind. Beispielsweise aktualisiert der Videospeicher-Manager möglicherweise eine virtuelle GPU-Adresse auf Seite 4,5,6,7 in hAllocation. Es wird nie einen Fall geben, in dem einem Treiber ein einzelner Aktualisierungsvorgang angezeigt wird, der auf nicht sequenzielle Seiten ausgerichtet ist (z. B. 4,5,7). Beachten Sie, dass die Seiten zwar vom Standpunkt der Zuordnung her garantiert sequenziell sind, aber möglicherweise nicht physisch im Arbeitsspeicher zusammenhängend sind.
hProcess
Kernelmodustreiberprozesshandle für den Prozess, dessen Seitentabelleneinträge aktualisiert werden. Dies ist der von DxgkDdiCreateProcess zurückgegebene Wert.
UpdateMode
Definiert die Bedeutung von PageTableAddress. Beim Initialisieren von Seitentabellen für den Pagingprozess ist der Aktualisierungsmodus immer DXGK_PAGETABLEUPDATE_CPU_VIRTUAL und pDmaBuffer auf NULL festgelegt. In diesem Fall muss der Treiber die Seitentabellen sofort aktualisieren. In anderen Fällen wird der UpdateMode auf den Wert festgelegt, der in DXGK_VIRTUALADDRESSCAPS::GpuMmu.PageTableUpdateMode angegeben wird.
Beim Aktualisieren von Seitentabelleneinträgen für eine Blattseitentabelle geht der Videospeicher-Manager davon aus, dass jeder Eintrag eine Seite mit 4 KB abdeckt. Wenn eine GPU-Seite größer ist (4 KB * 2n), stellt der Videospeicher-Manager Einträge im Array bereit, die innerhalb der GPU-Seiten zeigen. Der Kernelmodustreiber muss möglicherweise nur Seitentabelleneinträge initialisieren, die auf den Anfang von GPU-Seiten verweisen. Die folgende Abbildung veranschaulicht 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 im pPageTableEntries-Array entspricht dem StartIndex im Tabelleneintragsarray der Treiberseite. Das Array sollte nur verwendet werden, wenn die DXGK_GPUMMUCAPS::D ualPteSupported-Obergrenze festgelegt ist.
FirstPteVirtualAddress
Die virtuelle GPU-Adresse, die durch den ersten aktualisierten Seitentabelleneintrag zugeordnet wird.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows 10 |
Unterstützte Mindestversion (Server) | Windows Server 2016 |
Kopfzeile | d3dkmddi.h (einschließlich D3dkmddi.h) |