Bagikan melalui


Memproses anggaran residensi

Dalam Windows Display Driver Model (WDDM) v2, proses akan diberi anggaran untuk berapa banyak memori yang dapat mereka simpan untuk penduduk. Anggaran ini dapat berubah dari waktu ke waktu, tetapi umumnya hanya akan dikenakan ketika sistem berada di bawah tekanan memori. Sebelum Microsoft Direct3D 12, anggaran ditangani oleh driver mode pengguna dalam bentuk pemberitahuan Pangkas dan kegagalan MakeResident dengan STATUS_NO_MEMORY. Pemberitahuan TrimToBudget, Pengeluaran, dan panggilan MakeResident yang gagal semuanya mengembalikan anggaran terbaru dalam bentuk nilai bilangan bulat NumBytesToTrim yang menunjukkan berapa banyak yang perlu dipangkas agar sesuai dengan anggaran baru.

Untuk aplikasi Direct3D 12, anggaran ditangani sepenuhnya oleh aplikasi. Ukuran anggaran dimaksudkan sebagai iseng untuk memberi tahu aplikasi apa yang harus diukur. Dengan menggunakan ukuran anggaran sebagai petunjuk, aplikasi dapat memutuskan berapa banyak sumber daya yang harus disimpan, resolusi dan kualitas sumber daya apa yang harus disimpan.

Untuk mengelola anggaran ini dengan benar, kernel perlu mengetahui memori apa yang harus berpartisipasi dalam anggaran. Ada bit ApplicationTarget baru dalam struktur DXGK_SEGMENTFLAGS2 yang perlu diatur pada segmen yang ingin disertakan oleh driver mode kernel dalam logika penganggahan. Misalnya, pada unit pemrosesan grafis (GPU) diskrit dengan 1 segmen VRAM yang cocok untuk penggunaan aplikasi, dan 1 segmen VRAM yang digunakan untuk sumber daya tujuan khusus secara otomatis, driver kemungkinan hanya akan menandai segmen VRAM utama sebagai ApplicationTarget. Untuk GPU terintegrasi, segmen bukaan utama biasanya akan menjadi yang ditandai. Tidak ada batasan berapa banyak segmen yang dapat ditandai sebagai ApplicationTarget. Kernel akan menggabungkan ini bersama-sama dan menyajikan aplikasi dengan ukuran terpadu.