Game saya menggunakan DirectX 10, dan saya mengalami masalah ketika pengguna melaporkan bahwa game saya tidak mengambil kartu grafis mereka. Alih-alih itu lebih suka berjalan pada kartu Intel terintegrasi mereka, merusak kinerja. Mungkin ini terkait dengan Windows 8. Bisa juga terkait dengan kartu seluler.
Sampai sekarang, saya telah membuat perangkat DirectX 10 tanpa adaptor yang ditentukan (seperti yang saya lihat di semua contoh / demo sejauh ini), untuk memungkinkan DirectX memilih adaptornya sendiri. Rupanya saya harus mengubahnya.
Saya sudah memiliki fungsi yang berjalan melalui semua adapter yang tersedia, dan memilih yang dengan jumlah memori khusus tertinggi. Itu bagus untuk memperbaiki masalah, tetapi apakah itu benar secara umum?
Sayangnya, saya tidak dapat mengandalkan kartu yang memiliki output video yang valid (yaitu: monitor yang terhubung) karena mesin yang terkena masalah ini melaporkan tidak ada output untuk kartu yang diinginkan.
Algoritma apa yang dapat saya gunakan untuk memilih adaptor mana yang akan digunakan dengan DirectX?
Jawaban:
Memilih adaptor dengan memori khusus tertinggi yang tersedia mungkin berfungsi dalam banyak kasus, tetapi dalam beberapa kasus GPU dengan daya pemrosesan lebih sedikit mungkin memiliki memori lebih khusus, dan game Anda masih akan berjalan pada adaptor "salah".
Ini membawa saya pada pertanyaan tandingan, apa adaptor yang tepat? Yang memiliki kekuatan komputasi paling besar? Yang memiliki memori terbanyak? Di mana layar utama terpasang? Yang mengkonsumsi daya paling sedikit? Semua pertanyaan ini mungkin memiliki jawaban berbeda untuk setiap pengguna. Seseorang yang menggunakan laptop mungkin lebih suka daya tahan baterai lebih lama daripada grafik yang lebih baik. Seseorang mungkin lebih suka bermain di monitor sekundernya (misalnya TV).
Karenanya, banyak gim yang memungkinkan pengguna memutuskan GPU apa yang ingin mereka gunakan. Sebagian besar produsen GPU memiliki panel kontrol di mana GPU pilihan (bahkan per aplikasi) dapat dipilih. Beberapa game memiliki dialog startup yang memungkinkan pengguna untuk secara eksplisit memilih GPU yang disukai. Dialog startup ini sering hanya ditampilkan pada jalankan pertama atau setelah crash, sehingga juga dapat bertindak sebagai alat pemulihan yang bagus.
Nvidia memilih GPU , AMD memilih GPU , Flatout 2 memilih GPU
sumber
Flush
dan target tiruan alih-alihPresent
pada rantai swap) pada masing-masing dan pilih mana yang menyelesaikan paling cepat sebagai default. Anda tetap harus mengizinkan pengguna untuk memilih, karena mereka dapat memilih untuk mengorbankan framerate untuk mendapatkan masa pakai baterai yang lebih baik.Saya akan mengizinkan pemain untuk memilih kartu video mana yang akan digunakan, yaitu melalui daftar drop-down di menu opsi. Anda dapat menggunakan GPU dengan VRAM yang terdeteksi tertinggi, kecepatan clock, dll. Sebagai standar yang waras. Anda bisa melangkah lebih jauh dan meminta pemain untuk memilih antara "kinerja tinggi" dan "hemat daya" (memilih kartu dengan spesifikasi terendah) untuk default ketika permainan pertama kali dimulai, dan kemudian biarkan mereka lebih spesifik dengan pilihan mereka di menu opsi.
Ini adalah solusi sederhana yang juga tidak akan mengganggu pemain jika memilih kartu video yang tidak diinginkan, karena cukup mudah bagi mereka untuk mengubahnya jika memilih yang salah.
sumber
Jika Anda memilih adaptor berdasarkan yang memiliki memori terbanyak, Anda mungkin mengalami masalah dalam mendeteksi jumlah memori yang digunakan oleh Intel HD Graphics dengan akurat. Intel HD Graphics memiliki akses ke dua bank memori; satu didedikasikan dan satu dibagikan dengan CPU. Ukuran kedua bank tercermin dalam struktur DXGI_ADAPTER_DESC sebagai DedicatedVideoMemory dan SharedSystemMemory. Untuk tujuan perbandingan dengan adaptor lain, Anda dapat menggunakan hanya bank khusus atau Anda dapat menggunakan keduanya.
Intel memiliki sampel pendeteksi GPU yang juga menunjukkan cara mengukur kedua bank memori.
sumber