Bagikan melalui


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)

Lihat juga

DDSCAPS

DrvGetDirectDrawInfo