PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Carmack über Treiber-Optimierung


Pengo
2001-11-18, 21:21:35
"Making any automatic optimization based on a benchmark name is wrong. It subverts the purpose of benchmarking, which is to gauge how a similar class of applications will perform on a tested configuration, not just how the single application chosen as representative performs.

It is never acceptable to have the driver automatically make a conformance tradeoff, even if they are positive that it won't make any difference. The reason is that applications evolve, and there is no guarantee that a future release won't have different assumptions, causing the upgrade to misbehave. We have seen this in practice with Quake3 and derivatives, where vendors assumed something about what may or may not be enabled during a compiled vertex array call. Most of these are just mistakes, or, occasionally, laziness.

Allowing a driver to present a non-conformant option for the user to select is an interesting question. I know that as a developer, I would get hate mail from users when a point release breaks on their whiz-bang optimized driver, just like I do with overclocked CPUs, and I would get the same "but it works with everything else!" response when I tell them to put it back to normal. On the other hand, being able to tweak around with that sort of think is fun for technically inclined users. I lean towards frowning on it, because it is a slippery slope from there down in to "cheating drivers" of the see-through-walls variety."

Das komplette Statement ist hier zu finden:

http://www.bluesnews.com/cgi-bin/finger.pl?id=1&time=20011117012727

Doomtrain
2001-11-18, 22:01:33
Originally posted by Pengo
"Making any automatic optimization based on a benchmark name is wrong. It subverts the purpose of benchmarking, which is to gauge how a similar class of applications will perform on a tested configuration, not just how the single application chosen as representative performs.

It is never acceptable to have the driver automatically make a conformance tradeoff, even if they are positive that it won't make any difference. The reason is that applications evolve, and there is no guarantee that a future release won't have different assumptions, causing the upgrade to misbehave. We have seen this in practice with Quake3 and derivatives, where vendors assumed something about what may or may not be enabled during a compiled vertex array call. Most of these are just mistakes, or, occasionally, laziness.

Allowing a driver to present a non-conformant option for the user to select is an interesting question. I know that as a developer, I would get hate mail from users when a point release breaks on their whiz-bang optimized driver, just like I do with overclocked CPUs, and I would get the same "but it works with everything else!" response when I tell them to put it back to normal. On the other hand, being able to tweak around with that sort of think is fun for technically inclined users. I lean towards frowning on it, because it is a slippery slope from there down in to "cheating drivers" of the see-through-walls variety."

Das komplette Statement ist hier zu finden:

http://www.bluesnews.com/cgi-bin/finger.pl?id=1&time=20011117012727

Schön, das du das hier noch mal reinschreibst, aber wirklich verstehen tut diesen Text keiner.

Pengo
2001-11-18, 22:17:14
Wieso? Der Text ist kaum technisch gehalten (zumindestens der kurze Auszug den ich gepostet habe) und leicht verständlich.

Doomtrain
2001-11-18, 22:21:04
Originally posted by Pengo
Wieso? Der Text ist kaum technisch gehalten (zumindestens der kurze Auszug den ich gepostet habe) und leicht verständlich.

Naja, vielleicht liegts auch an meinem Englisch. So einfach ist der Text aber wirklich nicht.

aths
2001-11-19, 23:48:14
Also ich finde, den Text konnte man ganz gut lesen.

John Carmack ist hier anderer Meinung, als ich. Ein Spiel ist ein Spiel und kein Benchmark. Man kann ein Spiel benchmarken. Spezielle Optimierungen verfälschen das Ergebnis, sicher.

Doch der Kunde könnte von speziellen Optimierungen (sofern sie nicht deutlich auf die Qualität gehen) profitieren. Daher halte ich das nicht für schlimm.

Haarmann
2001-11-19, 23:51:25
Wenn alle bei der Vielfalt der Spiele halt nur eines benchen, dann is das Pech... Das schreit nach optimierungen, wenn bereits bei 1% Unterscheid so geschrien wird...

Und wenn ihr mal wieder beim Inquirer seit schaut mal den Knilch auf der linken Seite genauer an ;-).

Unregistered
2001-11-19, 23:58:53
Er schreibt das er optimierung in reinen benchmarks ( wie 3dmurks) mal salopp ausgedrückt scheisse findet ...

StefanV
2001-11-20, 00:13:13
Die beste Methode ist doch sozusagen mehrere Treiber in einen zu stecken.

Warum??

Weil man nur so alle Spiele ans Laufen bekommt!!

Sozusagen einen Treiber, der sich EXAKT an die DX/OGL Spezi hält und nur laufen muss.

Und halt für jedes Spiel manuell Optimieren (ähnlich PowerVR).

Pengo
2001-11-20, 00:27:29
Originally posted by Stefan Payne
Die beste Methode ist doch sozusagen mehrere Treiber in einen zu stecken.

Warum??

Weil man nur so alle Spiele ans Laufen bekommt!!

Sozusagen einen Treiber, der sich EXAKT an die DX/OGL Spezi hält und nur laufen muss.

Und halt für jedes Spiel manuell Optimieren (ähnlich PowerVR).

Ich finde es wäre eine Katasrophe, ein Treiber hat mit allen Spielen zu laufen, es ist zwar schwierig zu erreichen, aber NVidia kommt schon nah ran, also ist es nicht unmöglich.

Haarmann
2001-11-20, 00:30:55
Pengo - ein Spiel sollte sich auch an die API halten... und trotzdem tuns viele nicht... Da wird dann halt gemurkst.
Ich nehme als BSP Ghost Recon, geht auf der V5 nicht solange beide Chips aktiv sind... Wäre das Game echt in DX8 gemacht, würde es laufen ;-).

Was wllste denn da anders tun als murksen?

P.S. Wenn ein gemurkstes Game auf NV geproggt wurde, dann wärs auch saupeinlich wenns nedmals auf NV liefe ;-).

Pengo
2001-11-20, 00:51:16
Klar können Programmierer was verbocken, vor allem wenn sie nur auf NVidia HW entwickeln, ich habe auch nichts dagegen wenn dann z.B. ATI in den Treibern den Fehler der Programmierer durch einen Work-Around ausbadet, aber nur wenn die Programmierer nicht bereit sind diesen selbst durch einen Patch zu beheben. Optimierungen auf bestimmte Spiele die den ganzen Treiber ändern bürgen immer die Gefahr daß man andere Spiele dadurch nicht mehr korrekt zum laufen bekommt. Mich würde mal interessieren 20 ältere Spiele auf der 8500er mit neuen Treibern laufen zu lassen, würde mich nicht überraschen wenn 30% fehlerhaft läuft.

Wenn ich erst Presets erzeugen muß um Spiele optimal laufen zu lassen habe ich entweder was bei der Treiberentwicklung verbockt oder meine Technik ist so anders in Vergleich zu dem was eine API erwartet daß ich ständig fummeln muß.

StefanV
2001-11-20, 00:54:45
Originally posted by Pengo


Ich finde es wäre eine Katasrophe, ein Treiber hat mit allen Spielen zu laufen, es ist zwar schwierig zu erreichen, aber NVidia kommt schon nah ran, also ist es nicht unmöglich.

1. sind genug Spiele 'unsauber' Geschrieben (also an DX vorbei)
2. MÜSSTEN alle Spiele unter W2k laufen, WENN sie sich an die APIs halten würden
3. kann eine Optimierung für Spiel A bewirken, daß 10 andere Spiele nicht laufen.
4. ist es bei OGL Karten ein Zeugnis von Qualität, wenn es für jede APP einen angepassten Treiber gibt.
5. Würde dann ATI NV meilenweit hinter sich lassen

6. funzt bei NV Chips der Overlay nicht besonders gut.

Pengo
2001-11-20, 01:07:26
Daß ATI Treiber an bestimmte Spiele und nicht auf die API optimiert wurden zeigt sich daran wie schlecht diese in OpenGL-Anwendungen laufen. UT ist auch ein gutes Beispiel dafür, die Performance ist nur so schlecht in diesem Spiel auf der 8500 weil ATI noch nicht die Zeit gefunden hat manuell an das Spiel zu optimieren, kommt sicher noch. Wenn ich bei vielen neuen Spielen Zeit investieren muß um diese richtig gut zum laufen zu bekommen, sollte ich gleich anfangen den Treiber neu zu programmieren, diesmal aber richtig.

Und im oberen Posting hat der Stefan vergessen daß einige 3D-Anwendungen eine eigene API haben und somit einen separaten Treiber brauchen.

StefanV
2001-11-20, 01:13:14
@Pengo

Was ist wichtiger, Performance, oder ein Treiber der läuft??

ATI wird wohl ersteinmal auf sicherheit gehen, oder??

Pengo
2001-11-20, 01:21:08
Natürlich ist es wichtiger daß die Spiele laufen und deshalb kann ich überhaupt nicht verstehen wieso man bei ATI auf die Idee kommt für Q3 zu 'optimieren' und nicht zuerst schaut das alles läuft. Besonders die Stabilität des XP Treibers läßt so viel zu wünschen übrig daß ATI wirklich von Performance-Optimierungen vorerst die Finger lassen sollte.

Xmas
2001-11-20, 01:26:13
Originally posted by Stefan Payne
4. ist es bei OGL Karten ein Zeugnis von Qualität, wenn es für jede APP einen angepassten Treiber gibt.
Das ist ja auch ein ganz anderes Gebiet. Wieviele Apps gibt es denn, für die Treiber angepasst werden? Und wieviele Spiele erscheinen dagegen Monat für Monat?
Außerdem geben die Programmierer von 3D-Software ja dann auch bekannt, welche Funktionen denn besonders schnell laufen sollten und welche unwichtig sind. Bei einem Spiel kann das schon ein Patch ändern...

Nichtsdestotrotz halte ich den Ansatz von PowerVR für sehr gut. Man hat vorgefertigte Settings für Spiele, die hier allerdings notwendig sind, um Fehler zu vermeiden. Aber man hat die Kontrolle darüber.

StefanV
2001-11-20, 01:34:01
Originally posted by Pengo
Natürlich ist es wichtiger daß die Spiele laufen und deshalb kann ich überhaupt nicht verstehen wieso man bei ATI auf die Idee kommt für Q3 zu 'optimieren' und nicht zuerst schaut das alles läuft. Besonders die Stabilität des XP Treibers läßt so viel zu wünschen übrig daß ATI wirklich von Performance-Optimierungen vorerst die Finger lassen sollte.

Kennst du einen guten XP Treiber einer Grafikkarte??
Die, die ich kenne laufen auch unter W2k!(NV)

PowerVR hat es ja auch noch nicht hinbekommen.

StefanV
2001-11-20, 01:48:29
Originally posted by Xmas

Das ist ja auch ein ganz anderes Gebiet. Wieviele Apps gibt es denn, für die Treiber angepasst werden? Und wieviele Spiele erscheinen dagegen Monat für Monat?
Außerdem geben die Programmierer von 3D-Software ja dann auch bekannt, welche Funktionen denn besonders schnell laufen sollten und welche unwichtig sind. Bei einem Spiel kann das schon ein Patch ändern...

Nichtsdestotrotz halte ich den Ansatz von PowerVR für sehr gut. Man hat vorgefertigte Settings für Spiele, die hier allerdings notwendig sind, um Fehler zu vermeiden. Aber man hat die Kontrolle darüber.

1. Ja, PowerVR ist das beste Beispiel, und so ähnlich meinte ich es auch ;)

Sozusagen:
Auto Use Optimisation, Manual (mit Pull Down menü) und Optimisation disabled.

2. Für Spiele wäre eine Spezielle GameAPI nicht schlecht, bei der die Anwendung sagt, was sie will ;) (nein, nix wie Glide, etwas, das sagt, welche Optionen es gesetzt haben möchte, wie etwas gerendert werden soll usw. ;))

4. Das mit OGL Apps ist mir eigentlich auch klar.
ABER: Die Open GL Apps halten sich idR auch an OGL!
Mit einem 'normalen' ICD sollte Jede Dieser Anw. Laufen (nicht schnell, aber funzt ;))

Das Problem sind halt die Games, die an den APIs vorbei geschrieben wurden.

z.B. ALLE Games, die nicht unter W2k laufen sind nicht ganz Sauber geschrieben.

Was da für Scherze drin sind möchte ich allerdings nicht erst wissen...

Exxtreme
2001-11-20, 09:16:30
Originally posted by Pengo

Daß ATI Treiber an bestimmte Spiele und nicht auf die API optimiert wurden zeigt sich daran wie schlecht diese in OpenGL-Anwendungen laufen. UT ist auch ein gutes Beispiel dafür, die Performance ist nur so schlecht in diesem Spiel auf der 8500 weil ATI noch nicht die Zeit gefunden hat manuell an das Spiel zu optimieren, kommt sicher noch.
Also ich habe mit das zweite Review bei Anandtech angeschaut.
http://www.anandtech.com/video/showdoc.html?i=1558&p=4
Hmm, 85 fps und 60 fps. Ziemlicher Zufall so gerade Zahlen zu bekommen. Ich würde eher sagen es sieht nach einen VSync-Problem aus.

Originally posted by Pengo

Wenn ich bei vielen neuen Spielen Zeit investieren muß um diese richtig gut zum laufen zu bekommen, sollte ich gleich anfangen den Treiber neu zu programmieren, diesmal aber richtig.
Das hast du wohl recht. Die Frage ist wie sich Spiele verhalten, die wie Stefan Payne treffend sagte, an den 3D-APIs vorbei programmiert wurden. Da wird sicherlich wieder ein Workaround nötig sein, damit solche Spiele richtig laufen. Bei sowas hilft unter Umständen auch ein sauber programmierter Treiber nichts.

Originally posted by Pengo

Und im oberen Posting hat der Stefan vergessen daß einige 3D-Anwendungen eine eigene API haben und somit einen separaten Treiber brauchen.
Dies kann schon sein.

Gruß
Alex

Labberlippe
2001-11-20, 09:49:09
Originally posted by Pengo
Daß ATI Treiber an bestimmte Spiele und nicht auf die API optimiert wurden zeigt sich daran wie schlecht diese in OpenGL-Anwendungen laufen. UT ist auch ein gutes Beispiel dafür, die Performance ist nur so schlecht in diesem Spiel auf der 8500 weil ATI noch nicht die Zeit gefunden hat manuell an das Spiel zu optimieren, kommt sicher noch. Wenn ich bei vielen neuen Spielen Zeit investieren muß um diese richtig gut zum laufen zu bekommen, sollte ich gleich anfangen den Treiber neu zu programmieren, diesmal aber richtig.

Und im oberen Posting hat der Stefan vergessen daß einige 3D-Anwendungen eine eigene API haben und somit einen separaten Treiber brauchen.

Was meinst Du mit richtig?
Ich glaube kaum das jemand von uns beurteilen kann, was richtig ist.
nVIDIA hat laut Ihrer HP Modifizierungen beim IO Subsystem vorgenommen.
Was rausgekommen ist, haben wir alle gesehen.
Mehr Ärger als Recht war.

Wobei halt immer die Frage bleibt, wer macht was richtig.
Siehe Thread AF da ist man sich auch unschlüssig.

Aber wegen ein paar fps welche minimal sind einen Aufstand.

Gruss Labberlippe

nggalai
2001-11-20, 11:23:27
Labberlippe,

Frage:Ich glaube kaum das jemand von uns beurteilen kann, was richtig ist. nVIDIA hat laut Ihrer HP Modifizierungen beim IO Subsystem vorgenommen. Was rausgekommen ist, haben wir alle gesehen.
Mehr Ärger als Recht war.Von welchem Ärger sprichst Du? Ich habe diese Aussage schon des öfteren gelesen, konnte aber keinen belegten Fall eines tatsächlichen Problemes finden. (kein Sarkasmus, ich bin wirklich an Info interessiert.)

ta,
-Sascha.rb

ow
2001-11-20, 19:41:08
Originally posted by Stefan Payne

1. sind genug Spiele 'unsauber' Geschrieben (also an DX vorbei)



Kein Wunder für einen ,der schon mal D3D-Code gesehen hat;).


2. MÜSSTEN alle Spiele unter W2k laufen, WENN sie sich an die APIs halten würden



Nein, da pfuscht M$ selbst viel zu sehr an den APis rum, ausserdem ist der OS-Kernel nicht derselbe (->tausende Fehlerquellen).


3. kann eine Optimierung für Spiel A bewirken, daß 10 andere Spiele nicht laufen.



Jein, nichtlaufen eher weniger, aber schlechter oder fehlerhaft schon;)


4. ist es bei OGL Karten ein Zeugnis von Qualität, wenn es für jede APP einen angepassten Treiber gibt.



Nein, das ist ein Zeugnis des Preises;).
Wenn man $20000 für eine App hinlegt, dann darf auch die spezielle Treiberentwicklung was kosten.
Im übrigen halte ich das dennoch nicht für sonderlich vorteilhaft.


5. Würde dann ATI NV meilenweit hinter sich lassen


???


6. funzt bei NV Chips der Overlay nicht besonders gut.

Inwiefern? (Hab da keine Erfahrung mit Overlays)

Unregistered
2001-11-21, 15:29:52
Originally posted by Haarmann
Pengo - ein Spiel sollte sich auch an die API halten... und trotzdem tuns viele nicht... Da wird dann halt gemurkst.
Ich nehme als BSP Ghost Recon, geht auf der V5 nicht solange beide Chips aktiv sind... Wäre das Game echt in DX8 gemacht, würde es laufen ;-).

Was wllste denn da anders tun als murksen?

P.S. Wenn ein gemurkstes Game auf NV geproggt wurde, dann wärs auch saupeinlich wenns nedmals auf NV liefe ;-).

also bei mir läuft es mit ner voodoo5, windows98, athlon1333 und den 1.8xxx treibern ganz ordentlich auch mit beiden chips,Allerdings flimmern die wände ziemlich stark wenn man texturendetails ganz hoch und texturkompression anstellt.

Doc
2001-11-21, 19:14:08
Bei mir liefs auch anständig. Habs zwar nur kurz angespielt, hatte aber keinerlei Probleme. Win2k/1.04.00