Metodo corretto per la scelta delle schede video dell'utente?


8

Il mio gioco utilizza DirectX 10 e sto riscontrando un problema a causa del quale gli utenti segnalano che il mio gioco non viene rilevato dalla loro scheda grafica. Invece preferisce funzionare sulla loro scheda Intel integrata, rovinando le prestazioni. È possibile che ciò sia correlato a Windows 8. Potrebbe anche essere correlato a schede mobili.

Fino ad ora, ho creato il dispositivo DirectX 10 senza alcun adattatore specificato (come ho visto in tutti gli esempi / demo finora), per consentire a DirectX di scegliere il proprio adattatore. Apparentemente dovrò cambiarlo.

Ho già una funzione che attraversa tutti gli adattatori disponibili e sceglie quello con la massima quantità di memoria dedicata. Funziona benissimo per correggere il problema, ma è corretto in generale?

Sfortunatamente, non posso fare affidamento sul fatto che la scheda abbia un'uscita video valida (ovvero: un monitor collegato) in quanto le macchine interessate da questo problema non segnalano output per la scheda desiderata.

Quale algoritmo posso usare per scegliere correttamente quale adattatore usare con DirectX?


Risposte:


11

La selezione dell'adattatore con la memoria dedicata disponibile più alta potrebbe funzionare in molti casi, ma in alcuni casi una GPU con meno potenza di elaborazione potrebbe avere più memoria dedicata e il tuo gioco continuerà a funzionare con l'adattatore "sbagliato".

Questo mi porta a una contro-domanda, qual è l'adattatore giusto? Quello con il maggior potere computazionale? Quello con più memoria? Quello a cui è collegato il display principale? Quello che consuma meno energia? Tutte queste domande probabilmente hanno risposte diverse per utente. Qualcuno che utilizza un laptop potrebbe preferire una lunga durata della batteria rispetto a una grafica migliore. Qualcuno potrebbe preferire giocare sul suo monitor secondario (ad esempio una TV) invece.

Pertanto, molti giochi consentono all'utente di decidere quale GPU desidera utilizzare. La maggior parte dei produttori di GPU dispone di pannelli di controllo in cui è possibile scegliere la GPU preferita (anche per applicazione). Alcuni giochi hanno una finestra di avvio che consente all'utente di selezionare esplicitamente la GPU preferita. Questa finestra di avvio viene spesso visualizzata solo alla prima esecuzione o dopo gli arresti anomali, quindi può anche fungere da piacevole strumento di recupero.

Nvidia ha preferito la selezione della GPU , AMD ha preferito la selezione della GPU , Flatout 2 ha preferito la selezione della GPU


In definitiva, penso che questo sia ciò che devo fare. Mi manca ancora qualcosa di importante qui - altri giochi sembrano scegliere l'adattatore giusto mentre il mio non riesce - ma penso che la cosa migliore da fare in questo momento sia solo dare il controllo ai giocatori.
Raptormeat

3
@Raptormeat: i driver di solito includono "profili" che usano per selezionare il dispositivo predefinito per l'applicazione per giochi noti, motivo per cui altri giochi si comportano come previsto, ma i tuoi no. Ci sono anche hack come stackoverflow.com/questions/10535950/… ma questo funziona solo per NVIDIA (e altri fornitori di GPU non hanno equivalenti).
Sean Middleditch,

1
Un altro approccio è quello di eseguire alcuni frame rappresentativi (utilizzare Flushe un target fittizio invece che Presentsu una catena di scambio) su ciascuno e scegliere quello che completa il più veloce come predefinito. Dovresti comunque consentire agli utenti di scegliere, poiché possono scegliere di sacrificare il framerate per ottenere una migliore durata della batteria.
MooseBoys,

3

Consentirei al giocatore di scegliere quale scheda video utilizzare, ovvero tramite un elenco a discesa nel menu delle opzioni. È possibile utilizzare la GPU con la VRAM più alta rilevata, la velocità di clock, ecc. Come impostazione predefinita sana. Potresti andare oltre e chiedere al giocatore di scegliere tra "alte prestazioni" e "risparmio energetico" (sceglie la carta con le specifiche più basse) per impostazione predefinita al primo avvio del gioco, e poi lascia che siano più specifici con la loro scelta in il menu delle opzioni.

Questa è una soluzione semplice che non infastidisce il lettore se sceglie la scheda video indesiderata, in quanto è abbastanza facile per loro cambiarla se ha scelto quella sbagliata.


2

Se scegli l'adattatore in base a quello con più memoria, potresti avere problemi a rilevare con precisione la quantità di memoria utilizzata da Intel HD Graphics. Intel HD Graphics ha accesso a due banchi di memoria; uno dedicato e uno condiviso con la CPU. Le dimensioni dei due banchi si riflettono nella struttura DXGI_ADAPTER_DESC come DedicatedVideoMemory e SharedSystemMemory. Ai fini del confronto con altri adattatori, è possibile utilizzare solo la banca dedicata o è possibile utilizzare entrambi.

Intel ha un campione di rilevamento GPU che mostra anche come misurare entrambi i banchi di memoria.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.