aaronspink
Veteran
DaveBaumann said:The fundamental stumbling block here for people is how do you rationalise pushing for "mathematically equivelent" shader optimiatsions (via compilers), but then not push for mathematically equivelent (but potentially imperceptibly different) texture stage optimisations.
The fundamental issue isn't "mathematically equivelent". When dealing with floating point, changing the order of operations or combining seperate operations into something like a MAC_MAC_ACC, do leave to non mathematically equivelent results. This has been known for some time, and generally enforcing strick mathematical equivelence will result in slower performance ( this can be seen in the SPEC benchmarks where they specifically have an exception to the mathematically correct result requirements with margin in the result for the error caused by operation re-ordering doing compilation).
The fundamental issue is if the "performance enhancement" relies on explicit knowledge (AKA clarivoyance or ESP) of the application in order to generate its result. In this case you've jumped the snark from a general optimization that may only work in some cases to a specific optimization that may or may not work in one or a few cases and is fragile enough that it can be broken easily resulting in either an incorrect result or a significant performance differential.
IF ATI is telling the truth, then this appears to be a general case optimization that applies to most uses of the hardware. There appear to be no known cases of it breaking and should apply in general to all software and the permiations of said software. So it appears to be fairly resilent.
Though I do await more detailed analysis on its effect to actual image quality, and I'm sure that any issues with quickly come to light.
Aaron Spink
speaking for myself inc.