struktur DXGK_GPUMMUCAPS (d3dkmddi.h)
Struktur DXGK_GPUMMUCAPS digunakan oleh driver mode kernel untuk mengekspresikan kemampuan alamat memori virtual.
Sintaks
typedef struct _DXGK_GPUMMUCAPS {
union {
struct {
UINT ReadOnlyMemorySupported : 1;
UINT NoExecuteMemorySupported : 1;
UINT ZeroInPteSupported : 1;
UINT ExplicitPageTableInvalidation : 1;
UINT CacheCoherentMemorySupported : 1;
UINT PageTableUpdateRequireAddressSpaceIdle : 1;
UINT LargePageSupported : 1;
UINT DualPteSupported : 1;
UINT AllowNonAlignedLargePageAddress : 1;
UINT SysMem64KBPageSupported : 1;
UINT InvalidTlbEntriesNotCached : 1;
UINT SysMemLargePageSupported : 1;
UINT CachedPageTables : 1;
#if ...
UINT Reserved : 19;
#elif
UINT Reserved : 20;
#elif
UINT Reserved : 21;
#elif
UINT Reserved : 22;
#else
UINT Reserved : 24;
#endif
};
UINT Value;
};
DXGK_PAGETABLEUPDATEMODE PageTableUpdateMode;
UINT VirtualAddressBitCount;
UINT LeafPageTableSizeFor64KPagesInBytes;
UINT PageTableLevelCount;
struct {
UINT SourcePageTableVaInTransfer : 1;
UINT Reserved : 31;
} LegacyBehaviors;
} DXGK_GPUMMUCAPS;
Anggota
ReadOnlyMemorySupported
Ketika diatur ke 1, driver mendukung perlindungan baca-saja pada halaman memori.
NoExecuteMemorySupported
Ketika diatur ke 1, driver tidak mendukung perlindungan eksekusi pada halaman memori.
ZeroInPteSupported
Saat diatur ke 1, GPU mendukung bendera Zero DXGK_PTE . Ini berlaku untuk semua tingkat tabel halaman.
ExplicitPageTableInvalidation
Menunjukkan bahwa semua entri tabel halaman atau direktori halaman harus dimasukkan ke dalam status tidak valid secara eksplisit, melalui UpdatePageTable sebelum dibebaskan. Secara default, manajer memori video dapat membebaskan tabel halaman, yang berisi entri yang valid sebelumnya, jika entri ini tidak lagi diperlukan (mis. membebaskan rentang alamat virtual GPU besar yang mengakibatkan penghancuran tabel halaman yang mendasar).
Catatan
Bendera ini biasanya digunakan oleh driver perangkat lunak yang perlu meniru tabel halaman dan perlu melacak informasi berdasarkan entri tabel per halaman dan memerlukan pasangan init/deinit yang jelas untuk semua pembaruan entri tabel halaman.
CacheCoherentMemorySupported
Menunjukkan bahwa driver mendukung bit CacheCoherent dalam entri tabel halaman dan dapat melakukan transfer koheren I/O ke memori sistem.
PageTableUpdateRequireAddressSpaceIdle
Menunjukkan bahwa GPU tidak mendukung pembaruan entri tabel halaman atau membatalkan buffer look-aside terjemahan untuk ruang alamat yang saat ini digunakan oleh mesin. Ketika bendera ini diatur, manajer memori video akan memastikan bahwa semua konteks yang berbagi ruang alamat ditangguhkan ketika entri tabel halamannya dimodifikasi dan ketika buffer look-aside terjemahan tidak valid.
LargePageSupported
Saat diatur ke 1, semua tingkat tabel halaman, kecuali yang daun, mendukung halaman besar (bit LargePage di DXGK_PTE).
DualPteSupported
Saat diatur ke 1, GPU mendukung dua penunjuk ke tabel halaman di tabel halaman tingkat satu (tabel halaman 4 KB dan tabel halaman 64 KB).
AllowNonAlignedLargePageAddress
Ketika diatur ke 1, Sistem Operasi dapat mengatur bendera LargePage ketika alamat fisik entri halaman besar tidak selaras dengan cakupan tabel halaman daun. Tersedia mulai Windows 10 versi 1607 (WDDM 2.1).
SysMem64KBPageSupported
Driver menyediakan manajemen segmen memori pada 64KB. Tersedia mulai Windows 10 versi 1607 (WDDM 2.1).
InvalidTlbEntriesNotCached
Ketika bit ini diatur, driver tidak akan menerima panggilan ke DxgkDdiBuildPagingBuffer untuk permintaan FlushTlb untuk rentang VA yang beralih dari status yang tidak valid ke valid. Diharapkan bahwa TLB perangkat keras tidak menyimpan terjemahan yang tidak valid
Tersedia mulai Windows 10 versi 1903 (WDDM 2.6).
SysMemLargePageSupported
Driver menyediakan dukungan halaman besar. Tersedia mulai Windows Server 2022 (WDDM 2.9).
CachedPageTables
Tabel halaman singgahan didukung. Tersedia mulai dari WDDM 3.1.
Reserved
Dicadangkan untuk penggunaan sistem; jangan gunakan.
Value
Nilai struktur serikat yang dinyatakan sebagai bilangan bulat.
PageTableUpdateMode
Menentukan jenis alamat yang digunakan dalam operasi DxgkDdiUpdatePageTable . Ketika DXGK_PAGETABLEUPDATE_GPU_VIRTUAL diatur, semua operasi paging akan terjadi di ruang alamat virtual konteks sistem. Ketika direktori halaman terletak di segmen memori GPU lokal, mode pembaruan tidak dapat diatur ke DXGK_PAGETABLEUPDATE_CPU_VIRTUAL.
VirtualAddressBitCount
Jumlah bit dalam alamat virtual GPU.
LeafPageTableSizeFor64KPagesInBytes
Ukuran tabel halaman daun saat halaman 64KB digunakan. Ukurannya harus kelipatan ukuran halaman CPU (4096).
PageTableLevelCount
Jumlah tingkat tabel halaman yang didukung. Nilai minimum adalah 2 (didefinisikan sebagai DXGK_MIN_PAGE_TABLE_LEVEL_COUNT). Nilai maksimum adalah DXGK_MAX_PAGE_TABLE_LEVEL_COUNT.
Ketika PageTableLevelCount adalah 2, tabel halaman akar dapat diubah ukurannya secara dinamis dan ukuran tabel halaman ditentukan melalui DxgkDdiGetRootPageTableSize. Ketika PageTableLevelCount lebih besar dari 2, semua tingkat tabel halaman memiliki ukuran tetap, yang dijelaskan melalui DXGK_PAGE_TABLE_LEVEL_DESC::P ageTableSizeInBytes.
LegacyBehaviors
LegacyBehaviors.SourcePageTableVaInTransfer
Saat diatur ke 1, manajer memori video mengatur alamat SourcePageTable di TransferVirtual selama pengeluaran alokasi.
LegacyBehaviors.Reserved
Dipesan; jangan gunakan.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows 10 |
Server minimum yang didukung | Server Windows 2016 |
Header | d3dkmddi.h (termasuk D3dkmddi.h) |