Nick said:
So what you're saying is that ATI's shader design is not an extra and Nvidia's design is, just because the former made it into the API without compromises and the latter was forced to write an optimizing compiler?
ATI has always had a general purpose shader compiler - it does things like reordering shaders to match their hardware. This makes sure the hardware is running the shader at the highest possible speed, whilst still mainitaining mathematical equivalence.
Design of the shader engines/optimisers are irrelevent to the API. The API provides a certain standard of performance the hardware must output. How it produces that output doesn't matter. If someone designs something to that standard that's fine. If someone designs something better that becomes part of the API later, that's great.
What Nvidia did was design something greater than the API standard (FP32) which they then couldn't run fast enough to be usable, and then something less than the API standard (FP16) which allowed their hardware to run faster, but is below the standard API spec.
When APIs are meant to drive the hardware towards better quality rendering (for the benefit of the consumer), it is no suprise that MS and the other IHV's who were part of the API discussion did not want to go backwards and allow the use of older FP16 (as we have been using for many years) to be part of that forward driving standard.
In fact it appears that even Nvidia, with their trumpeting of 32 bit rendering and "cinematic computing" at the launch of NV30 also did not see FP16 as a future technology, and only switched to marketing it as an "optimisation" when it became obvious that ATI was kicking Nvidia's butt in performance whilst still meeting the API standard spec that everyone is programming to.
Nick said:
(a) New features can always be categorized as either new capabilities or optimizations of other techniques. So I don't think everything is inherently slower.
It appears to be for the much used parts of the NV3x series when running DX9. Not good for a card strongly marketed as a DX9 part. Are there any benchmarks where Nvidia does not cheat that it even gets parity to the slower clocked ATI equivalent that's running on a larger process? The fact that Nvidia needs to cheat on all these tests as a matter of course should show you there are real performance issues that they cannot deal with using honest performance.
Nick said:
(b) But the API descisions were taken afterwards. So what you consider 'basic' features is what ATI considered optimal for their architecture. But I don't see they actually listened much to Nvidia's demands, did they?
Do you really think that Nvidia and ATI invested tens of millions in designing new, cutting edge DX9 parts without knowing far in advance what the major parts of the DX9 spec would be? Don't you think they had a 18 months heads up on the rest of us. Do you think either of these companies would spend huge sums of money on this kind of R&D with Microsoft telling them "we have a spec, but we won't tell you what it is for a couple of years?"
Nick said:
And since OpenGL 2.0 isn't expected any time soon Nvidia is quite stuck with specifications that are sub-optimal for their architecture.
That's because Nvidia was publicly and obviously trying to take control of the API and force developers into doing thing the Nvidia way. They failed to create a "NVGLide", and are now stuck with the results of this failed gamble - an architechture that does not fit the current APIs very well. Combined with gambles on programmable design and going to a new .13 process at the same time, Nvidia put all thier eggs in one basket. It was Nvidia's bad luck that their gambles failed at the same time as ATI brought out a groundbreaking part which Nvidia publicly said was impossible to make.
Nick said:
Exactly. That's why I think just as much that ATI shouldn't be making all the decisions now. I could be wrong about all this so please correct me if necessary...
You are wrong. Do you really think Microsoft allowed ATI to "make all the decisions"? Even if they did, don't you think a company the size, influence and history of Nvidia should have made sure they were working within those available standards?
It's like all the car and oil companies getting together to decide the future of the car/gas industry, and GM takes part and designs a good next generation car, while Ford blows off the conference thinking they are big enough to push the market where they want it to go. Ford then finds that no one wants to buy their substandard car a couple of years later. I'll let you guess which company is Nvidia and which is ATI.