Méthode correcte pour choisir les cartes vidéo de l'utilisateur?


8

Mon jeu utilise DirectX 10, et j'ai un problème où les utilisateurs signalent que mon jeu ne capte pas sur leur carte graphique. Au lieu de cela, il préfère fonctionner sur leur carte Intel intégrée, ce qui ruine les performances. Il est possible que cela soit lié à Windows 8. Il pourrait également être lié aux cartes mobiles.

Jusqu'à présent, j'ai créé le périphérique DirectX 10 sans adaptateur spécifié (comme je l'ai vu dans tous les exemples / démos jusqu'à présent), pour permettre à DirectX de choisir son propre adaptateur. Apparemment, je vais devoir changer cela.

J'ai déjà une fonction qui parcourt tous les adaptateurs disponibles et choisit celle avec la plus grande quantité de mémoire dédiée. Cela fonctionne très bien pour corriger le problème, mais est-ce correct en général?

Malheureusement, je ne peux pas compter sur la carte ayant une sortie vidéo valide (c'est-à-dire: un moniteur branché) car les machines affectées par ce problème ne signalent aucune sortie pour la carte souhaitée.

Quel algorithme puis-je utiliser pour choisir correctement l'adaptateur à utiliser avec DirectX?


Réponses:


11

La sélection de l'adaptateur avec la mémoire dédiée la plus élevée disponible peut fonctionner dans de nombreux cas, mais dans certains cas, un GPU avec moins de puissance de traitement peut avoir plus de mémoire dédiée, et votre jeu fonctionnera toujours sur le "mauvais" adaptateur.

Cela m'amène à une contre-question, quel est le bon adaptateur? Celui qui a le plus de puissance de calcul? Celui qui a le plus de mémoire? Celui auquel l'écran principal est attaché? Celui qui consomme le moins d'énergie? Toutes ces questions ont probablement des réponses différentes par utilisateur. Une personne utilisant un ordinateur portable pourrait préférer une longue durée de vie de la batterie à de meilleurs graphismes. Quelqu'un pourrait préférer jouer sur son moniteur secondaire (par exemple un téléviseur) à la place.

Par conséquent, de nombreux jeux permettent à l'utilisateur de décider du GPU qu'il souhaite utiliser. La plupart des fabricants de GPU ont des panneaux de contrôle où le GPU préféré (même par application) peut être choisi. Certains jeux ont une boîte de dialogue de démarrage qui permet à l'utilisateur de sélectionner explicitement le GPU préféré. Cette boîte de dialogue de démarrage est souvent affichée uniquement lors de la première exécution ou après des plantages, elle peut donc également être un bon outil de récupération.

Sélection de GPU Nvidia préféré , AMD sélection GPU préféré , Flatout 2 sélection de GPU préféré


En fin de compte, je pense que c'est ce que je dois faire. Il me manque encore quelque chose d'important ici - d'autres jeux semblent choisir le bon adaptateur alors que le mien ne le fait pas - mais je pense que la meilleure chose à faire en ce moment est simplement de donner aux joueurs le contrôle.
Raptormeat

3
@Raptormeat: les pilotes incluent généralement des "profils" qu'ils utilisent pour sélectionner le périphérique par défaut pour l'application pour les jeux connus, ce qui est une raison pour laquelle les autres jeux se comportent comme prévu, mais pas le vôtre. Il existe également des hacks comme stackoverflow.com/questions/10535950/… mais cela ne fonctionne que pour NVIDIA (et d'autres fournisseurs de GPU n'ont pas d'équivalents).
Sean Middleditch

1
Une autre approche consiste à exécuter quelques images représentatives (utiliser Flushet une cible factice au lieu d' Presentune chaîne d'échange) sur chacune et choisir celle qui se termine le plus rapidement par défaut. Cependant, vous devez toujours permettre aux utilisateurs de choisir, car ils peuvent choisir de sacrifier la fréquence d'images pour améliorer la durée de vie de la batterie.
MooseBoys

3

Je permettrais au lecteur de choisir la carte vidéo à utiliser, c'est-à-dire via une liste déroulante dans le menu des options. Vous pouvez utiliser le GPU avec la VRAM, la vitesse d'horloge, etc. la plus élevée détectée par défaut. Vous pouvez aller plus loin et inciter le joueur à choisir entre "haute performance" et "économie d'énergie" (choisit la carte la moins spécifiée) pour la valeur par défaut au démarrage du jeu, puis laissez-les être plus précis avec leur choix dans le menu des options.

Il s'agit d'une solution simple qui n'ennuiera pas non plus le joueur s'il choisit la carte vidéo indésirable, car il est assez facile pour eux de la changer s'il a choisi la mauvaise.


2

Si vous choisissez l'adaptateur en fonction de celui qui a le plus de mémoire, vous pouvez rencontrer des problèmes pour détecter avec précision la quantité de mémoire utilisée par Intel HD Graphics. Intel HD Graphics a accès à deux banques de mémoire; un dédié et un partagé avec le CPU. La taille des deux banques est reflétée dans la structure DXGI_ADAPTER_DESC en tant que DedicatedVideoMemory et SharedSystemMemory. À des fins de comparaison avec d'autres adaptateurs, vous pouvez utiliser uniquement la banque dédiée ou vous pouvez utiliser les deux.

Intel a un échantillon de détection de GPU qui montre également comment mesurer les deux banques de mémoire.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.