Mengelola Memori Multiple-Head

Mengatur bit kemampuan DDSCAPS2_ADDITIONALPRIMARY di anggota dwCaps2 dari struktur DDSCAPS2 untuk setiap permukaan di kepala bawahan memberi tahu bahwa kepala bahwa permukaan ini adalah permukaan terakhir yang dialokasikan dari memori video yang ditetapkan untuk kepala itu. Kepala bawahan kemudian harus melepaskan kontrol alokasi memori videonya ke kepala master karena kepala bawahan dijamin tidak menerima panggilan DdCreateSurface berikutnya selama masa pakai aplikasi.

Driver harus memastikan bahwa kepala master mampu mengalokasikan memori yang terkait dengan kepala bawahan.

Ketika runtime memanggil fungsi DdDestroySurface driver untuk menghancurkan permukaan pada kepala bawahan tempat bit kemampuan DDSCAPS2_ADDITIONALPRIMARY diatur, driver diberi tahu bahwa kepala bawahan kembali memegang kendali atas manajemen memori videonya.

Sebagian besar, pilihan kepala yang memiliki memori video melekat dalam proses DirectDraw yang ada. Khususnya:

  • Runtime menjamin bahwa tidak ada permintaan alokasi berikutnya yang dibuat pada kepala subordinat setelah panggilan DdCreateSurface dilakukan menggunakan bit DDSCAPS2_ADDITIONALPRIMARY. Oleh karena itu, driver tidak diharuskan untuk membatasi alokasi dari kumpulan memori videonya sendiri kapan saja.

  • Ketika aplikasi dihentikan atau diminimalkan, semua permukaan dihancurkan. Oleh karena itu, semua tekstur yang dibuat oleh kepala utama dari kumpulan kepala bawahan dibersihkan.

  • Jika bit DDSCAPS2_ADDITIONALPRIMARY tidak diatur untuk permukaan pada kepala bawahan, maka kepala tersebut terus mengalokasikan memori video seolah-olah mereka kepala berdiri sendiri. Bahkan, kepala bawahan tersebut secara fungsional identik dengan adaptor multi-monitor lainnya.

  • Driver diperlukan untuk memberikan implementasi di mana kepala master mengalokasikan memori dari kumpulan kepala bawahan, termasuk penentuan tentang kapan sumber daya tertentu dapat dialokasikan dari kumpulan kepala bawahan. Perhatikan bahwa kepala master tidak memiliki informasi itu sendiri tentang apakah ia berpartisipasi dalam skenario multi-kepala. Ketika kepala master kehabisan memori videonya sendiri, kepala bawahan harus melintasi semua kepala bawahan dalam grupnya untuk menentukan apakah salah satu kepala ini memiliki kumpulan yang dapat digunakan oleh master (dengan kata lain, untuk menentukan apakah salah satu kepala bawahan menerima panggilan DdCreateSurface dengan set bit DDSCAPS2_ADDITIONALPRIMARY).

  • Terakhir, perhatikan bahwa runtime menjamin bahwa semua kepala dalam grup berpartisipasi dalam skenario multi-kepala. Oleh karena itu, driver hanya boleh mempertahankan satu bit status yang menunjukkan apakah saat ini dalam mode multi-kepala.