Struktur VIDEOMEMORY (ddrawint.h)
Struktur VIDEOMEMORY memungkinkan driver untuk mengelola memori tampilannya ke dalam tumpukan.
Sintaks
typedef struct _VIDEOMEMORY {
DWORD dwFlags;
FLATPTR fpStart;
union {
FLATPTR fpEnd;
DWORD dwWidth;
};
DDSCAPS ddsCaps;
DDSCAPS ddsCapsAlt;
union {
#if ...
_VMEMHEAP *lpHeap;
#else
struct _VMEMHEAP *lpHeap;
#endif
DWORD dwHeight;
};
} VIDEOMEMORY;
Anggota
dwFlags
Menentukan sekumpulan bendera yang menjelaskan bagian khusus memori tampilan ini. Anggota ini bisa menjadi bitwise ATAU dari salah satu nilai berikut:
Bendera | Makna |
---|---|
VIDMEM_ISLINEAR | Memori tampilan adalah blok memori yang berdampingan. |
VIDMEM_ISRECTANGULAR | Memori tampilan berbentuk persegi panjang. |
VIDMEM_ISHEAP | Bendera ini disediakan untuk penggunaan sistem dan harus diabaikan oleh driver. |
VIDMEM_ISNONLOCAL | Tumpukan berada dalam memori nonlokal (AGP). |
VIDMEM_ISWC | Driver telah mengaktifkan write-combining pada memori tampilan dalam tumpukan ini. Write-combining adalah mode penembolokan khusus dalam prosesor kelas Pentium Pro yang batch menulis ke baris cache yang sama sehingga dapat ditransfer dalam satu jam bus. Penggabungan tulis tidak mempertahankan pemesanan tulisan, tradeoff yang biasanya dapat diterima untuk buffer bingkai. Lihat dokumentasi Intel untuk informasi selengkapnya tentang penggabungan tulis. Bendera ini tidak dapat digunakan kecuali bendera VIDMEM_ISNONLOCAL juga diatur. |
VIDMEM_HEAPDISABLED | Runtime Microsoft DirectDraw menggunakan bendera ini untuk menonaktifkan timbunan saat inisialisasi heap gagal. Ini kemungkinan besar terjadi dengan tumpukan AGP. Driver tidak boleh mengatur bit ini. |
fpStart
Menunjuk ke alamat awal rentang memori dalam heap.
fpEnd
Menunjuk ke alamat akhir rentang memori jika timbunan linier. Alamat ini inklusif, yaitu, menentukan alamat terakhir yang valid dalam rentang. Dengan demikian, jumlah byte yang ditentukan oleh fpStart dan fpEnd adalah (fpEnd - fpStart + 1).
dwWidth
Menentukan lebar dalam byte dari bagian memori yang ditujukkan oleh fpStart. Anggota ini hanya boleh digunakan untuk menggambarkan wilayah memori persegi panjang.
ddsCaps
Menentukan struktur DDSCAPS di mana driver mengembalikan kemampuan di mana bagian memori ini tidak dapat digunakan.
ddsCapsAlt
Menentukan struktur DDSCAPS di mana driver mengembalikan kemampuan di mana gugus memori ini tidak dapat digunakan ketika tidak ada memori lain yang ditemukan pada pass pertama.
lpHeap
Dicadangkan untuk penggunaan sistem dan harus diabaikan oleh driver.
dwHeight
Menentukan tinggi gugus memori tempat fpStart menunjuk. Anggota ini hanya boleh digunakan untuk menggambarkan wilayah memori persegi panjang.
Keterangan
Pada Microsoft Windows 2000 dan yang lebih baru struktur data disebut VIDEOMEMORY dan pada Windows 98/Me struktur data disebut VIDMEM.
GDI mengalokasikan dan meneruskan array struktur VIDEOMEMORY ke panggilan kedua fungsi DrvGetDirectDrawInfo driver. Driver harus mengisi anggota yang sesuai dari setiap struktur untuk menjelaskan setiap bagian memori tertentu. Daftar ini memberikan deskripsi lengkap tentang memori di luar layar driver.
DirectDraw memindai untuk mengalokasikan permukaannya dalam urutan tumpukan memori tampilan tercantum. Tumpukan dikelola dalam array struktur VIDEOMEMORY. Memori yang dialokasikan terlebih dahulu akan menjadi memori yang diakses terlebih dahulu. Struktur VIDEOMEMORY mengatur titik awal tertentu, dan menentukan jumlah memori di permukaan dan apa yang tidak dapat dilakukan dengan permukaan. DirectDraw mengelolanya dengan menyuburkan dan membatalkan alokasi memori, yaitu menciptakan dan menghancurkan permukaan di bawah yurisdiksi setiap timbunan. Batas fisik menentukan cara menyiapkan atribut ini.
Manajer tumpukan DirectDraw membuat dua melewati struktur VIDEOMEMORY. Anggota ddsCaps menunjukkan kepada DirectDraw untuk apa memori dalam tumpukan tidak dapat digunakan pada pass pertama. Misalnya, jika tumpukan cukup besar untuk buffer belakang, sprite dapat dikecualikan agar tidak dialokasikan pada pass pertama dengan mengatur bendera DSCAPS_OFFSCREENPLAIN dalam struktur DDSCAPS . Dengan begitu, permukaan lain akan terisi dengan sprite, sambil mempertahankan buffer belakang untuk membalik halaman. Anggota ddsCapsAlt dapat diatur untuk mengizinkan sprite pada pass kedua (dengan menghapus bendera DSCAPS_OFFSCREENPLAIN). Ini memungkinkan timbunan digunakan lebih disukai untuk penggunaan tertinggi dan terbaik mereka, tanpa memutuskan penggunaan alternatif. Dengan memilih urutan alokasi dengan hati-hati (misalnya, dengan mencantumkan buffer belakang terakhir), kebutuhan untuk mengurutkan menurut ddsCaps dan ddsCapsAlt terkadang dapat dihilangkan.
Persyaratan
Header | ddrawint.h (termasuk Winddi.h) |