Wie funktioniert ein Grafikkarten-Treiber?

MagicBase

Cadet 3rd Year
Registriert
Apr. 2008
Beiträge
37
Hi zusammen,

habe mir gerade diese Frage gestellt.
Dabei geht es darum, dass die Beta von BF3 plötlich anscheinend doppelt so schnell läuft mit der Version 2 des Preview-Treibers von AMD.
Wieso weshalb warum? Und wenn dem so ist, läßt sich das dann auch auf andere Spiele übertragen?
Ich denke dabei z.B. an Crysis 2, das läuft ja eher bescheiden im Vergleich zu BF3. Dafür wurde wohl auch der Treiber kaum angepaßt. (Ich selbst habe ne 6950er).


Nochmal zum Thema:
Was ist genau im Treiber, gibt es da z.B. für die Beta von BF3 einen eigenen Abschnitt, der den Programmcode optimiert ausführt? So könnte ich mir das vorstellen. Denn der Preview-Treiber bringt z.B. bei Crysis 2 keinen Unterschied.

Thanks!
 
MagicBase schrieb:
Was ist genau im Treiber, gibt es da z.B. für die Beta von BF3 einen eigenen Abschnitt, der den Programmcode optimiert ausführt?

Genau so wird es in der Regel sein. Normalerweise funktionieren die Optimierungen solcher angepassten Treiber nicht mehr, wenn man die exe-Datei des jeweiligen Spieles umbenennt. Das gleiche machen die Treiber ja auch ganz gerne mit Benchmarks.
 
nur wäre dann die Frage was läßt der Treiber in seinen Berechnungen weg? Denn irgendwoher muss ja der Performance Schub kommen.
 
Optimieren heißt nicht unbedingt weglassen...

Beispiel Summe von 1 bis 100.

1) du rechnest 1+2+3+4+5....+100 dauert sehr lange

2) du rechnest 100 * (100+1) / 2 und hast das selbe

Es könnte ja auch sein dass der Treiber gewisse Abläufe ändert und dadurch Performance gewinnt
 
Nunja, mit der Gefahr, dass ich nicht alles korrekt weiss:

Ein Treiber besagt im Grundsatz, wie das Betriebssystem oder sonstige Programme mit der Hardware kommunizieren müssen.

Die Technik dahinter ist, dass ein Treiber nichts anderes als ein Übersetzer ist, der die Befehle von der Anwendungssoftware in den für die Hardware verständliche Befehle umsetzt - und dies so effizient wie möglich.

Geschrieben sind Treiber nach meinem Wissen meistens in C, und eingebettet im C - Code ist noch ziemlich viel Assembler, aufgrund der Geschwindigkeitsvorteilen.

Wenn z.b. ein Game viele gerade Linien verwendet (nur ein Beispiel!), wird im Besten Fall im Grafiktreiber berücksichtigt, dass genau DIESES Game viele gerade Linien hat und der Treiber versucht dem entsprechend gerade Linien möglichst schnell darzustellen. Dies geht unter Umständen auf Kosten anderer Dinge und deshalb würde ein anderes Game mit denselben "geradelinien - Optimierungen" wahrscheinlich sogar langsamer laufen.

Moderne Treiber haben deshalb mittlerweile sogenannte Profile, in denen beschrieben ist, welche Optimierungen für welches Game gelten. Wenn dann die ensprechende EXE gestartet wird (z.b. Crysis.exe), übernimmt der Treiber die Optimierungen, die im Crysis - Profil (vom Treiber!) stehen.

Vortreil von solchen Profilen ist, dass für ein neues Game oder optimierungen für ein Game nicht zwingend ein komplett neurer Treiber nötig ist, sondern nur die Profile erneuert werden können (sind meines Wissens meistens einfache XML Dateien..)

Hoffe ich konnte etwas helfen :)
 
Das mit dem Umbenennen der .exe hat in den seltensten Fällen eine Auswirkung und ist auch nur dann relevant, wenn Spiele schlecht programmiert sind, z. B. ausschließlich für nVidia oder ausschließlich für AMD und sich nicht auf Standards beziehen. Wenn dann Änderungen im Treiber sind, funkioniert die Hälfte nicht mehr.
Ansonsten beziehen sich die Spiele ja auf Schnittstellen wie DirectX und OpenGL und die Optimierung bezieht sich auf die Priorisierung und Verarbeitung bestimmter Befehle. So hat Direct3D ja einen bestimmten Befehlssatz, aber nicht jeder der Befehle wird gleich genutzt... und wenn die Hersteller einen Befehl bevorzugen, wird beim neuen Treiber einfach die Prio geändert. Sind meist Kleinigkeiten.
Der Treiber übersetzt die Befehle nur in eine Sprache, die der Prozessor der Karte versteht. Die Arbeit findet dann ausschließlich auf der Karte statt.
Ergänzung ()

PS: Soweit ich weiß stehen in diesen Profilen meist die dlls des Spiels, da diese seltener geändert werden.
Oder vertue ich mich da gerade? :)
 
Ja da muss was dran sein an den Profilen.

Ich glaube da gab es erst letztens bei einem Spiel die Möglichkeit, dass es besser läuft, wenn man die .exe entsprechend umbenennt.

Ist ja echt interessant! Ich meine, man denkt ja oft daran sich ne schnellere Grafikkarte zu kaufen, wenn ein Spiel zu lahm läuft, und stattdessen liese sich mit entsprechenden Treiber-Optimierungen wohl noch einiges rausholen.

Schade, dass dies bei AMD nicht so konsequent gemacht wird wie bei Nvidia. Ich denke dabei auch wieder an Crysis 2, welches wohl nur für Nvidia-Karten optimiert wurde.

Wäre bestimmt interessant, was sich aus den aktuellen Grafikkarten rausholen lässt, wenn man sie wirklich richitig per Treiber ausnutzt! Mich wundert immer wieder, dass ein Spiel wie NfS Hot Pursuit hin und wieder ruckelt, selbst mit nem i5-2400 und ner 6950er, da hätte eine Treiber-Optimierung wohl die letzten Probleme aus dem Weg geräumt...
 
Jap bei FEAR war das damals z.B. so, dass es besser lief wenn man die fear.exe in irgendwas anderes umbenannt hat. Da war wohl die "Optimierung" im Driver etwas schiefgelaufen.
 
Zurück
Oben