Richtige Methode zur Auswahl der Grafikkarten des Benutzers?


8

Mein Spiel verwendet DirectX 10 und ich habe ein Problem, bei dem Benutzer melden, dass mein Spiel nicht auf ihrer Grafikkarte gespeichert ist. Stattdessen wird es lieber auf der integrierten Intel-Karte ausgeführt, was die Leistung beeinträchtigt. Möglicherweise hängt dies mit Windows 8 zusammen. Dies kann auch mit mobilen Karten zusammenhängen.

Bis jetzt habe ich das DirectX 10-Gerät ohne angegebenen Adapter erstellt (wie ich bisher in allen Beispielen / Demos gesehen habe), damit DirectX seinen eigenen Adapter auswählen kann. Anscheinend muss ich das ändern.

Ich habe bereits eine Funktion, die alle verfügbaren Adapter durchläuft und den mit der höchsten Menge an dediziertem Speicher auswählt. Das funktioniert gut, um das Problem zu beheben, aber ist es im Allgemeinen richtig?

Leider kann ich mich nicht darauf verlassen, dass die Karte einen gültigen Videoausgang hat (dh einen angeschlossenen Monitor), da die von diesem Problem betroffenen Computer keine Ausgänge für die gewünschte Karte melden.

Welchen Algorithmus kann ich verwenden, um den mit DirectX zu verwendenden Adapter richtig auszuwählen?


Antworten:


11

Die Auswahl des Adapters mit dem höchsten verfügbaren dedizierten Speicher funktioniert in vielen Fällen möglicherweise. In einigen Fällen verfügt eine GPU mit weniger Rechenleistung jedoch möglicherweise über mehr dedizierten Speicher, und Ihr Spiel wird weiterhin auf dem "falschen" Adapter ausgeführt.

Dies bringt mich zu einer Gegenfrage: Was ist der richtige Adapter? Der mit der größten Rechenleistung? Der mit dem meisten Gedächtnis? Der, an dem das Hauptdisplay angebracht ist? Derjenige, der am wenigsten Strom verbraucht? Alle diese Fragen haben wahrscheinlich unterschiedliche Antworten pro Benutzer. Jemand, der einen Laptop verwendet, zieht möglicherweise eine lange Akkulaufzeit einer besseren Grafik vor. Jemand könnte es vorziehen, stattdessen auf seinem sekundären Monitor (z. B. einem Fernseher) zu spielen.

Daher können Benutzer bei vielen Spielen entscheiden, welche GPU sie verwenden möchten. Die meisten GPU-Hersteller haben Bedienfelder, in denen die bevorzugte GPU (auch pro Anwendung) ausgewählt werden kann. Einige Spiele verfügen über einen Startdialog, in dem der Benutzer die bevorzugte GPU explizit auswählen kann. Dieser Startdialog wird oft nur beim ersten Start oder nach Abstürzen angezeigt, sodass er auch als nützliches Wiederherstellungstool fungieren kann.

Nvidia bevorzugte GPU-Auswahl , AMD bevorzugte GPU-Auswahl , Flatout 2 bevorzugte GPU-Auswahl


Letztendlich denke ich, dass ich das tun muss. Ich vermisse hier immer noch etwas Wichtiges - andere Spiele scheinen den richtigen Adapter auszuwählen, während meiner dies nicht tut - aber ich denke, das Beste, was ich jetzt tun kann, ist, den Spielern nur die Kontrolle zu geben.
Raptormeat

3
@Raptormeat: Die Treiber enthalten normalerweise "Profile", mit denen sie das Standardgerät für die Anwendung für bekannte Spiele auswählen. Dies ist einer der Gründe, warum sich andere Spiele wie erwartet verhalten, Ihre jedoch nicht. Es gibt auch Hacks wie stackoverflow.com/questions/10535950/…, aber das funktioniert nur für NVIDIA (und andere GPU-Anbieter haben keine Entsprechungen).
Sean Middleditch

1
Ein anderer Ansatz besteht darin, ein paar repräsentative Frames (Verwendung Flushund ein Dummy-Ziel anstelle Presenteiner Swap-Kette) für jeden auszuführen und den Standard auszuwählen, der am schnellsten abgeschlossen ist. Sie sollten den Benutzern dennoch die Auswahl erlauben, da sie sich möglicherweise dafür entscheiden, die Framerate zu opfern, um eine bessere Akkulaufzeit zu erzielen.
MooseBoys

3

Ich würde dem Player erlauben, die zu verwendende Grafikkarte auszuwählen, dh über eine Dropdown-Liste im Optionsmenü. Sie können die GPU mit dem höchsten erkannten VRAM, der höchsten Taktrate usw. als vernünftige Standardeinstellung verwenden. Sie können noch weiter gehen und den Spieler auffordern, beim ersten Start des Spiels standardmäßig zwischen "Hochleistung" und "Energieeinsparung" (wählt die Karte mit der niedrigsten Spezifikation) zu wählen und sie dann bei ihrer Auswahl genauer festlegen das Optionsmenü.

Dies ist eine einfache Lösung, die den Player auch nicht stört, wenn er die unerwünschte Grafikkarte auswählt, da er sie leicht ändern kann, wenn er die falsche ausgewählt hat.


2

Wenn Sie den Adapter basierend auf dem mit dem meisten Speicher auswählen, haben Sie möglicherweise Probleme, die von Intel HD Graphics verwendete Speichermenge genau zu ermitteln. Intel HD Graphics hat Zugriff auf zwei Speicherbänke. eine dedizierte und eine gemeinsam mit der CPU. Die Größe der beiden Bänke wird in der Struktur DXGI_ADAPTER_DESC als DedicatedVideoMemory und SharedSystemMemory wiedergegeben. Zum Vergleich mit anderen Adaptern verwenden Sie möglicherweise nur die dedizierte Bank oder beide.

Intel verfügt über ein GPU-Erkennungsbeispiel , das auch zeigt, wie beide Speicherbänke gemessen werden.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.