Re: reply
Striker said:
(And we can safely rule out GF FX 5200 from 'DX 9' since there have been numerous debates concerning whether they are 'compatible' or 'compliant'...)
There were numerous such debates in the months before NV34 was released. There certainly aren't any now.
DX9 compliance is entirely a matter of feature support, and the 5200 has exactly the same DX9 feature support as the 5900 or any other NV3x card. There is absolutely no question that the hardware is DX9 compliant. NV3x may lack support for some optional DX9 features like MRTs, but by the same token R3x0 lacks support for different optional DX9 features like PS 2.0_x, FP32, and partial precision. Some of Nvidia's drivers appear to be operating outside the bounds of the DX9 spec, but again that's not the hardware's fault, and it is true of the entire GF FX line.
The "only" problem with the 5200 is that it's slower than a tree sloth on Valium glued to the side of a barn. Well, that's fine, but it doesn't make it any less DX9 compliant. You could probably live out a full and rewarding life in the time it takes for the DX9 refrast to run through a complete 3DMark03 run, but no one is claiming that the refrast isn't DX9 compliant!
It's promising to me that ATI followed the typical DX 9 spec as much as possible so far (in this DX 9 generation) and thus can enable the feature Valve calls for in its drivers. If nVidia chose to follow a 'semi DX9, semi DX 8' route in their hardware, they are to blame.
Ok. First of all, this comment seems to misunderstand the DX standards setting process. You make it seem as if MS sits in a room on its own and comes up with some big list of features which they hand to Nvidia and ATI who then run off and try to design a part that conforms to that list. In reality, design cycles for an substantially redesigned GPU core run on the order of 3 years, and ATI and Nvidia would have both had the rough featuresets of NV3x/R3x0 set in stone well before MS released the DX9 standard. Instead, what happens is that Nvidia and ATI (and whoeever else) goes to MS with the rough featuresets of their upcoming cores, and tries to convince them to support those features in the API. MS chooses some subset of the features, based in part on what the IHVs will be supporting, and in part on what the IHVs can convince MS is worth supporting. The IHVs can then tweak their designs to best support the details of the upcoming spec. But it's generally too late to design in support for substantial new features, or to rebalance part to better fit the performance characteristics implied by the spec.
There's no denying that in terms of
implementation, R3x0 is a much better "DX9 oriented" design than NV3x. One might say fairly that the
implementation of NV30-34 is "semi DX9, semi DX8," because of the greater resources available for PS 1.1-1.3 shaders than PS 1.4+. But this is only a matter of performance issues, not of feature support. In terms of DX9 feature support, NV3x is at least on par with R3x0, and if you concentrate specifically on "forward-looking" DX9 features--ones that are not required for PS/VS 2.0 but will be for PS/VS 3.0--NV3x is clearly ahead. It is thus something of an anomaly that R3x0 has hardware support for centroid multisampling while NV3x does not. (Of course it's not so strange in the context of R3x0's much more capable multisampling implementation.)
In any case, it's no more a matter for praise or blame (in R3x0's context as a PS/VS 2.0 part) than NV3x's forward-looking featureset. I mean, at least NV3x's PS 2.0_x features can be enabled in DX; centroid sampling on the R3x0 cannot be, which drastically reduces its usefulness.
It's purely some hardware issue, and they never said nVidia can't try to fix the thing (they could emulate it or produce a similar result I suppose, but they won't be able to 100% fix it, hardware restrictions apply). Valve is a company wanting to sell games, remember? They wouldn't leave nvidia users high and dry, but I suppose AA will remain strictly DX9 related in that title, and since the NV3x architecture has many flaws, you can't blame Valve for that.
It seems doubtful that NV3x could be made to support centroid sampling. NV3x's MSAA implementation appears very hardwired and not very flexible. The only solution I can think of would be to perform multisampling via a pixel shader, which would be extraordinarily inefficient to say the least.
But it's utterly incomprehensible to try to blame Nvidia for not supporting centroid sampling in hardware that doesn't claim to be PS/VS 3.0 compliant. Centroid sampling isn't a part of the PS/VS 2.0 spec. It just isn't. The fact that a PS/VS 2.0 compliant architecture doesn't support it is absolutely in no way a "flaw".