Patch: ATi und nVidia cheaten im 3DMark03

Thomas Hübner
214 Kommentare

Bereits mit dem Release des neuen Detonator 44.03 wurden Stimmen laut, nach denen nVidia im 3DMark03 künstlich die Reihenfolge des Renderings umändert, um so Rechenleistung sparen zu können. Auch Futuremark, die Entwicklerschmiede hinter 3DMark, hat sich das Verhalten der nVidia Treiber näher angesehen.

Hierbei konnte man in der Tat eine Manipulation feststellen und hat aus diesem Grund heute ein neues 3DMark03 Patch auf Version 3.3.0 veröffentlicht, das diesem Cheaten Einhalt gebieten soll.

In our testing, all identified detection mechanisms stopped working when we altered the benchmark code just trivially and without changing any of the actual benchmark workload. With this altered benchmark, NVIDIA“s certain products had a performance drop of as much as 24.1% while competition“s products performance drop stayed within the margin of error of 3%. To our knowledge, all drivers with these detection mechanisms were published only after the launch of 3DMark03. According to industry“s terminology, this type of driver design is defined as ‘driver cheats“.


GeForce FX 5900 Ultra
    • 3DMark 03 v3.2.0
      5.806
    • 3DMark 03 v3.3.0
      4.679
Einheit: Punkte

Insgesamt geht es mit 24,1 Prozent sehr deutlich in der Leistung des GeForce 5900 Ultra nach Unten. Das kommt aber nicht von ungefähr, schließlich konnte Futuremark acht verschiedene Optimierungen im neuesten nVidia entdecken:

Futuremark“s audit revealed cheats in NVIDIA Detonator FX 44.03 and 43.51 WHQL drivers. Earlier GeForceFX drivers include only some of the cheats listed below.

  • The loading screen of the 3DMark03 test is detected by the driver. This is used by the driver to disregard the back buffer clear command that 3DMark03 gives. This incorrectly reduces the workload. However, if the loading screen is rendered in a different manner, the driver seems to fail to detect 3DMark03, and performs the back buffer clear command as instructed.
  • A vertex shader used in game test 2 (P_Pointsprite.vsh) is detected by the driver. In this case the driver uses instructions contained in the driver to determine when to obey the back buffer clear command and when not to. If the back buffer would not be cleared at all in game test 2, the stars in the view of outer space in some cameras would appear smeared as have been reported in the articles mentioned earlier. Back buffer clearing is turned off and on again so that the back buffer is cleared only when the default benchmark cameras show outer space. In free camera mode one can keep the camera outside the spaceship through the entire test, and see how the sky smearing is turned on and off.
  • A vertex shader used in game test 4 (M_HDRsky.vsh) is detected. In this case the driver adds two static clipping planes to reduce the workload. The clipping planes are placed so that the sky is cut out just beyond what is visible in the default camera angles. Again, using the free camera one can look at the sky to see it abruptly cut off. Screenshot of this view was also reported in the ExtremeTech and Beyond3D articles. This cheat was introduced in the 43.51 drivers as far as we know.
  • In game test 4, the water pixel shader (M_Water.psh) is detected. The driver uses this detection to artificially achieve a large performance boost - more than doubling the early frame rate on some systems. In our inspection we noticed a difference in the rendering when compared either to the DirectX reference rasterizer or to those of other hardware. It appears the water shader is being totally discarded and replaced with an alternative more efficient shader implemented in the drivers themselves. The drivers produce a similar looking rendering, but not an identical one.
  • In game test 4 there is detection of a pixel shader (m_HDRSky.psh). Again it appears the shader is being totally discarded and replaced with an alternative more efficient shader in a similar fashion to the water pixel shader above. The rendering looks similar, but it is not identical.
  • A vertex shader (G_MetalCubeLit.vsh) is detected in game test 1. Preventing this detection proved to reduce the frame rate with these drivers, but we have not yet determined the cause.
  • A vertex shader in game test 3 (G_PaintBaked.vsh) is detected, and preventing this detection drops the scores with these drivers. This cheat causes the back buffer clearing to be disregarded; we are not yet aware of any other cheats.
  • The vertex and pixel shaders used in the 3DMark03 feature tests are also detected by the driver. When we prevented this detection, the performance dropped by more than a factor of two in the 2.0 pixel shader test.

Doch es ist nicht nur nVidia, bei denen man Optimierungen feststellen konnte. Auch beim neuen ATi-Treiber geht es in der Leistung mit dem Futuremark Patch nach Unten. Allerdings hat ATi nur kleine Treiberoptimierungen für den vierten Gametest vorgenommen: Hier sinkt die Performance um 8,2 Prozent und wirkt sich auf das Endergebnis mit nur 2 Prozent weniger negativ aus.

A test system with GeForceFX 5900 Ultra and the 44.03 drivers gets 5806 3DMarks with 3DMark03 build 320. The new build 330 of 3DMark03 in which 44.03 drivers cannot identify 3DMark03 or the tests in that build gets 4679 3DMarks - a 24.1% drop.

Our investigations reveal that some drivers from ATI also produce a slightly lower total score on this new build of 3DMark03. The drop in performance on the same test system with a Radeon 9800 Pro using the Catalyst 3.4 drivers is 1.9%. This performance drop is almost entirely due to 8.2% difference in the game test 4 result, which means that the test was also detected and somehow altered by the ATI drivers. We are currently investigating this further.

Nicht vergessen sollte man allerdings, dass die GeForce FX5900 in einer Reihe an Spielen bewiesen hat, dass sie mit der Radeon 9800 Pro mithalten und sie teilweise gar überflügeln kann. Dass der Patch im 3DMark03 nun einen derartigen Einbruch bedeutet, hat mit der Performance in Spielen nichts zu tun. Hier gehören beide Karten weiterhin zur absoluten Leistungsspitze. Im Grunde genommen muss man somit zumindest indirekt einem Großteil der Käufer eine gewisse Mitschuld an dieser Misere in zuschreiben. Solange Benchmarks wie der 3DMark als beinahe einziges Kaufkriterium gedultet werden, obwohl sie mit der realen Performance wenig gemeinsam haben, solange werden Firmen darauf angewiesen sein, sich die Ergebnisse "zurecht zu rücken", um ihr anfürsich gutes Produkte durch eine vollkommen falsche Interpretation einer einzigen Anwendung nicht ins Abseits manövrieren zu lassen. Gerechtfertig ist ein solches Verhalten dadurch jedoch noch lange nicht.

Ein Download des letzten 3DMark03 Patch ist bei Futuremark oder direkt bei uns möglich.