struktur DXGK_BUILDPAGINGBUFFER_UPDATEPAGETABLE (d3dkmddi.h)
DXGK_BUILDPAGINGBUFFER_UPDATEPAGETABLE digunakan sebagai bagian dari operasi pembaruan tabel halaman.
Sintaks
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;
Anggota
PageTableLevel
Tingkat tabel halaman, yang diperbarui.
hAllocation
Handel driver mode kernel dari alokasi, yang dipetakan oleh entri tabel halaman. Handel dikembalikan oleh driver mode kernel dari DxgkDdiCreateAllocation. Handel dapat berupa NULL untuk alokasi, yang tidak memiliki handel driver mode kernel (tabel halaman, direktori halaman, dll.).
PageTableAddress
Alamat tabel halaman yang akan diperbarui. Jika DXGK_VIRTUALADDRESSCAPS:: PageTableUpdateModeDXGK_PAGETABLEUPDATE_CPU_VIRTUAL, alamat virtual CPU berada di bidang CpuVirtual . Jika DXGK_VIRTUALADDRESSCAPS:: PageTableUpdateModeDXGK_PAGETABLEUPDATE_GPU_VIRTUAL, alamat virtual GPU berada di bidang GpuVirtual . Jika DXGK_VIRTUALADDRESSCAPS:: PageTableUpdateModeDXGK_PAGETABLEUPDATE_GPU_PHYSICAL, alamat fisik GPU berada di bidang GpuPhysical .
pPageTableEntries
Entri yang perlu disalin. Indeks nol dalam array pPageTableEntries sesuai dengan StartIndex di array entri tabel halaman driver.
StartIndex
Indeks awal entri tabel halaman dalam tabel halaman tempat entri harus disalin. Indeks array entri tabel halaman berbasis nol.
NumPageTableEntries
Jumlah entri yang perlu disalin.
Reserved0
Anggota ini dicadangkan dan harus diatur ke nol.
Flags
DXGK_UPDATEPAGETABLEFLAGS struktur yang menjelaskan operasi pembaruan.
DriverProtection
Diteruskan oleh UMD di MapGpuVirtualAddressRangeCb.
AllocationOffsetInBytes
Ketika hAllocation non-NULL, bidang ini menentukan offset relatif, dalam byte, dari awal alokasi ke halaman pertama yang ditargetkan oleh operasi pembaruan ini. Jika pembaruan menargetkan beberapa halaman dari hAllocation, halaman tersebut dijamin berurutan. Misalnya, manajer memori video mungkin memperbarui alamat virtual GPU ke halaman 4,5,6,7 dalam hAllocation. Tidak akan pernah ada kasus di mana driver akan melihat satu operasi pembaruan yang menargetkan halaman non berurutan (misalnya 4,5,7). Perhatikan bahwa meskipun halaman dijamin berurutan dari sudut pandang alokasi, halaman tersebut mungkin tidak berdampingan secara fisik dalam memori.
hProcess
Handel proses driver mode kernel untuk proses yang entri tabel halamannya diperbarui. Ini adalah nilai yang dikembalikan dari DxgkDdiCreateProcess.
UpdateMode
Menentukan arti PageTableAddress. Saat menginisialisasi tabel halaman untuk proses paging, mode pembaruan selalu DXGK_PAGETABLEUPDATE_CPU_VIRTUAL dan pDmaBuffer diatur ke NULL. Dalam hal ini driver harus segera memperbarui tabel halaman. Dalam kasus lain UpdateMode diatur ke nilai , yang ditentukan dalam DXGK_VIRTUALADDRESSCAPS::GpuMmu.PageTableUpdateMode.
Saat memperbarui entri tabel halaman untuk tabel halaman daun, manajer memori video mengasumsikan bahwa setiap entri mencakup halaman 4KB. Jika halaman GPU lebih besar (4 KB * 2n), manajer memori video akan menyediakan entri dalam array, yang menunjuk dalam halaman GPU. Driver mode kernel mungkin hanya perlu menginisialisasi entri tabel halaman, yang menunjuk ke awal halaman GPU. Gambar berikut mengilustrasikan ini untuk kasus ketika halaman GPU adalah 16 KB.
pPageTableEntries64KB
Entri yang perlu disalin dari tabel halaman 64KB. Indeks nol dalam array pPageTableEntries sesuai dengan StartIndex di array entri tabel halaman driver. Array harus digunakan hanya ketika batas DXGK_GPUMMUCAPS::D ualPteSupported diatur.
FirstPteVirtualAddress
Alamat virtual GPU yang dipetakan oleh entri tabel halaman pertama yang diperbarui.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows 10 |
Server minimum yang didukung | Server Windows 2016 |
Header | d3dkmddi.h (termasuk D3dkmddi.h) |