PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : John Carmack on: Driver strategies (Optimization vs. Cheating)


Anárion
2003-05-29, 16:33:48
Hier (http://slashdot.org/comments.pl?sid=65617&cid=6051216) gefunden!


Rewriting shaders behind an application's back in a way that changes the output under non-controlled circumstances is absolutely, positively wrong and indefensible.

Rewriting a shader so that it does exactly the same thing, but in a more efficient way, is generally acceptable compiler optimization, but there is a range of defensibility from completely generic instruction scheduling that helps almost everyone, to exact shader comparisons that only help one specific application. Full shader comparisons are morally grungy, but not deeply evil.

The significant issue that clouds current ATI / Nvidia comparisons is fragment shader precision. Nvidia can work at 12 bit integer, 16 bit float, and 32 bit float. ATI works only at 24 bit float. There isn't actually a mode where they can be exactly compared. DX9 and ARB_fragment_program assume 32 bit float operation, and ATI just converts everything to 24 bit. For just about any given set of operations, the Nvidia card operating at 16 bit float will be faster than the ATI, while the Nvidia operating at 32 bit float will be slower. When DOOM runs the NV30 specific fragment shader, it is faster than the ATI, while if they both run the ARB2 shader, the ATI is faster.

When the output goes to a normal 32 bit framebuffer, as all current tests do, it is possible for Nvidia to analyze data flow from textures, constants, and attributes, and change many 32 bit operations to 16 or even 12 bit operations with absolutely no loss of quality or functionality. This is completely acceptable, and will benefit all applications, but will almost certainly induce hard to find bugs in the shader compiler. You can really go overboard with this -- if you wanted every last possible precision savings, you would need to examine texture dimensions and track vertex buffer data ranges for each shader binding. That would be a really poor architectural decision, but benchmark pressure pushes vendors to such lengths if they avoid outright cheating. If really aggressive compiler optimizations are implemented, I hope they include a hint or pragma for "debug mode" that skips all the optimizations.

John Carmack

ow
2003-05-29, 17:28:53
http://www.forum-3dcenter.de/vbulletin/showthread.php?s=&postid=938610#post938610

*closed*;)

Anárion
2003-05-29, 18:33:03
Original geschrieben von ow
http://www.forum-3dcenter.de/vbulletin/showthread.php?s=&postid=938610#post938610

*closed*;)

Dort ist das leider etwas untergegangen, zwischen all der Besserwisserei und Klugscheißerei ;).

Ein neuer Thread would have done the trick. ;)

ow
2003-05-29, 18:39:55
Original geschrieben von Anárion
Dort ist das leider etwas untergegangen, zwischen all der Besserwisserei und Klugscheißerei ;).

Ein neuer Thread would have done the trick. ;)

Soll mir recht sein. ich dachte halt, das thema waere schon erledigt.
*thread reopened*

Performer
2003-05-30, 14:55:52
Na dann löscht mal die etzten 3 Posts (jetzt 4) hier ..

Alfa
2003-05-30, 18:53:52
hey Jungs gibt da auch ne deutsche Übersetzung oder zumindest ne kurze Zusammenfassung?

Mein engl. ist nicht so perfekt daher wäre das nen riesen Kampf wenn ich Fehlinterprezionen ausschließen will ;)

mfg Alfa

Razor
2003-05-30, 20:44:56
IMO wurde dieses Thema schon zur genüge 'diskutiert', aber sei's drum...

JC sagt, dass es nicht OK ist, wenn das visuelle Ergebnis verändert wird, es aber durchaus OK ist, wenn 'optimierungen' dafür sorgen, dass es schneller läuft, aber gleich 'aussieht'...
(zumindest sinngemäß ;-)

Wurde alles schon behandelt...
*gäääähhhhnnnnn*

Razor

Razor
2003-05-30, 20:51:29
Ach ja... eines sollte man vielleicht noch sagen...

ARB2 schreibt 32-Bit-Operationen vor, die von ATI natürlich in 24-Bit umgesetzt werden (weil mehr geht nicht ;-). Auch nVidia kann 32-Bit-Operationen in 16-Bit oder gar 12-Bit(integer) umsetzen, ohne die Arbeitsweise oder gar das Ergebnis zu verfälschen.

Insofern kann es also gut sein, dass nVidia zukünftig auch im ARB2-Mode mit sehr viel besserer Performance 'glänzen' kann...

Bis denne

Razor