That’s the way the GPU performs DirectX 9.0 shaders now, according to NVIDIA:
DirectX 9 pixel shaders are not directly fed to the graphics processor. The driver has a compiler that translates DirectX 9 shader code into GPU commands. The compiler “takes apart”, analyzes and then “puts back together” the shader rearranging the commands into pairs of texturing and math1ematical ones (this fits best for the GeForce FX architecture), reducing the number of involved registers and the overall number of commands. It also uses only those of commands, which are supported by the GeForce FX hardware.
The main optimization criterion is the maximum processing speed of the output code. Besides, the output parameters of original and the optimized shader should be in perfect coincidence. In other words, NVIDIA claims that the use of the optimizing compiler eliminates any possibility of quality worsening.
The new approach to the performance problem of the NV3x is acceptable since NVIDIA doesn’t now optimize for specific applications, but rather boosts the execution speed for DirectX 9.0 shaders anywhere they are used. The first try was not all perfect, though. The performance increasing, there are still some visual problems in certain games that have never been noticed before. Shadows suffer most: they vanish altogether or become distorted, to the level of plain black squares.
The new shader code compiler from the NVIDIA programmers seems to require some improvement yet. It is sure to get it and the future version of the ForceWare driver will be free from the disadvantages we see today. The arrival of the new driver is good in itself, allowing NVIDIA’s GPUs do fast enough where they used to slow down. People who want to play modern games comfortably are not limited in choice with VPUs from ATI Technologies only, as NVIDIA’s solutions have become competitive.
However, implementing the large-scale optimization, NVIDIA continues with its application-specific ones. Well, it is not as bad as it seems really, until it comes to benchmarks like 3DMark03. Back in summer Futuremark voiced its intention to fight such optimizations. The company remains true to its words releasing a patch in the middle of the fall which kicks off NVIDIA’s tricks for boosting the performance in Benchmark No.1.
Some NVIDIA’s partners are very negative about the new patch for 3DMark03 and try to slander the work of Futuremark. Particularly, a representative of Gainward said the new patch disabled NVIDIA’s shader optimizer and 3DMark03 was thus inappropriate for an objective testing. A little later, an NVIDIA spokesman refused these words saying that the optimizer was working correctly after installation of the new patch for 3DMark03.