Metode yang benar untuk memilih kartu video pengguna?

8

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?

Raptormeat
sumber

Jawaban:

11

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

Miklas
sumber
Pada akhirnya saya pikir inilah yang harus saya lakukan. Saya masih kehilangan sesuatu yang penting di sini - permainan lain tampaknya memilih adaptor yang tepat sementara milik saya gagal - tapi saya pikir hal terbaik untuk dilakukan saat ini adalah hanya memberikan kontrol pemain.
Raptormeat
3
@Raptormeat: driver biasanya menyertakan "profil" yang mereka gunakan untuk memilih perangkat default untuk aplikasi untuk game yang dikenal, yang merupakan salah satu alasan permainan lain berperilaku seperti yang diharapkan tetapi Anda tidak. Ada juga peretasan seperti stackoverflow.com/questions/10535950/… tapi itu hanya berfungsi untuk NVIDIA (dan vendor GPU lainnya tidak memiliki padanan).
Sean Middleditch
1
Pendekatan lain adalah menjalankan beberapa frame representatif (gunakan Flushdan target tiruan alih-alih Presentpada 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.
MooseBoys
3

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.

jmegaffin
sumber
2

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.

Brad Werth
sumber