Menginisialisasi Penggunaan Segmen Memori

Segmen memori, dalam konteks model driver tampilan untuk Windows Vista dan yang lebih baru (WDDM), menjelaskan ruang alamat unit pemrosesan grafis (GPU) kepada manajer memori video. Segmen memori menggeneralisasi dan memvirtualisasikan sumber daya memori video. Segmen memori dikonfigurasi sesuai dengan jenis memori yang didukung perangkat keras (misalnya, memori buffer bingkai atau bukaan memori sistem).

Untuk menginisialisasi cara menggunakan segmen memori, subsistem kernel grafis Microsoft DirectX (Dxgkrnl.sys) memanggil fungsi DxgkDdiQueryAdapterInfo driver miniport tampilan. Untuk mengarahkan driver miniport tampilan untuk mengembalikan informasi tentang segmen memori dari panggilan DxgkDdiQueryAdapterInfo , subsistem grafis menentukan nilai DXGKQAITYPE_QUERYSEGMENT atau DXGKQAITYPE_QUERYSEGMENT3 dalam anggota Jenis dari struktur DXGKARG_QUERYADAPTERINFO .

Subsistem grafis memanggil fungsi DxgkDdiQueryAdapterInfo driver miniport dua kali untuk informasi segmen. Panggilan pertama ke DxgkDdiQueryAdapterInfo mengambil jumlah segmen yang didukung oleh driver, dan panggilan kedua mengambil informasi terperinci tentang setiap segmen. Dalam panggilan ke DxgkDdiQueryAdapterInfo, driver menunjuk anggota pOutputDatadari DXGKARG_QUERYADAPTERINFO ke struktur DXGK_QUERYSEGMENTOUT yang diisi (untuk versi driver sebelum Windows Display Driver Model (WDDM) 1.2) atau ke struktur DXGK_QUERYSEGMENTOUT3 yang diisi (untuk WDDM 1.2 dan driver yang lebih baru).

Dalam panggilan pertama, anggota pSegmentDescriptordari DXGK_QUERYSEGMENTOUT (untuk versi driver sebelum WDDM 1.2) atau DXGK_QUERYSEGMENTOUT3 (untuk driver WDDM 1.2 dan yang lebih baru) diatur ke NULL. Driver hanya boleh mengisi anggota NbSegmentdari DXGK_QUERYSEGMENTOUT atau DXGK_QUERYSEGMENTOUT3 dengan jumlah jenis segmen yang didukungnya. Nomor ini juga menunjukkan jumlah DXGK_SEGMENTDESCRIPTOR yang tidak terisi (untuk versi driver sebelum WDDM 1.2) atau DXGK_SEGMENTDESCRIPTOR3 (untuk driver WDDM 1.2 dan yang lebih baru) yang diperlukan driver dari panggilan kedua ke DxgkDdiQueryAdapterInfo.

Pada panggilan kedua, pengemudi harus mengisi semua anggota DXGK_QUERYSEGMENTOUT atau DXGK_QUERYSEGMENTOUT3. Dalam panggilan kedua, driver harus mengisi array ukuran NbSegment struktur DXGK_SEGMENTDESCRIPTOR atau DXGK_SEGMENTDESCRIPTOR3 di anggota pSegmentDescriptorDXGK_QUERYSEGMENTOUT atau DXGK_QUERYSEGMENTOUT3 dengan informasi tentang segmen yang didukung driver.

Dalam kedua panggilan ke DxgkDdiQueryAdapterInfo, anggota pInputDataDXGKARG_QUERYADAPTERINFO menunjuk ke struktur DXGK_QUERYSEGMENTIN yang berisi informasi tentang lokasi dan properti bukaan AGP. Jika tidak ada bukaan AGP yang tersedia, atau jika ada tetapi tidak ada driver GART yang sesuai yang diinstal, informasi tentang bukaan AGP diatur ke nol. Jika tidak ada bukaan AGP, driver miniport tampilan tidak boleh menunjukkan, dalam array pSegmentDescriptordari DXGK_QUERYSEGMENTOUT atau DXGK_QUERYSEGMENTOUT3, bahwa ia mendukung segmen bukaan jenis AGP. Jika segmen aperture jenis AGP ditunjukkan dalam keadaan seperti itu, adaptor gagal menginisialisasi.

Selama inisialisasi, karena memori berlimpah, memori untuk penyangga halaman dapat dialokasikan dari segmen tertentu. Manajer memori video mengalokasikan memori untuk buffer halaman dari segmen yang ditentukan dalam anggota PagingBufferSegmentIddari DXGK_QUERYSEGMENTOUT atau DXGK_QUERYSEGMENTOUT3. Driver menunjukkan pengidentifikasi segmen paging-buffer dalam panggilan kedua ke DxgkDdiQueryAdapterInfo. Driver juga harus menentukan ukuran dalam byte yang harus dialokasikan untuk buffer halaman di anggota PagingBufferSize dari DXGK_QUERYSEGMENTOUT atau DXGK_QUERYSEGMENTOUT3.

Untuk informasi selengkapnya tentang segmen memori dan bekerja dengan buffer halaman, lihat Menangani Segmen Memori dan Paging Sumber Daya Memori Video.