Wait, wait, wait...
Are you guys implying the compiler is nothing but fraud? Not AFAIK.
The
real "unified compiler" can do the following thing:
- Reduce register usage by: reusing registers* and using swizzle**.
- Reorder instructions with the goal of exploiting parallelism ( Doing 2 TEX operations in a row as much as possible, for example )***.
*: Already done to an extent in the Detonator FX and 45 series.
**: Naive example of reducing register usage thanks to Swizzle: If, for two registers, you only access .xy - then it is possible to only use one register, by making the second register actually be the .zw part of the first register.
***: Fully introduced in the Det50s.
NVIDIA PR and Marketing however, seems to have decided to include "hand-made shader replacements" into their definition of the "unified compiler" technology. I suspect that in the case "hand-made shaders" are found to replace the standard shader, the real "unified compiler" technology is not used, as these shaders are already considered optimal.
This implies that:
1) NVIDIA will now describe their
unified compiler technology as a mix of automatic and manual shader optimizations with "no IQ degradations".
2) In the Detonator50s, many new techniques for automatic shader optimizations were added in the compiler. Such a compiler already existed, but in a very primitive form, in older driver sets. That was roughly similar to ATI having had a basic compiler in their drivers since the 3.6. release.
3) According to NVIDIA, any application preventing them from using "homemade shader replacements" disables their "Unified Compiler". In reality, it only disables part of it, and this part is exactly as FutureMark describes; it's pure and simple application detection, as prohibited by their guidelines.
Hope that makes it clearer!
Uttar