jimmyjames123 said:
NV uses mixed precision modes because it is advisable to use as low a precision as possible as long as no visual anomolies or errors are present. NV's decision to use mixed FP16/FP32 precision makes sense in this light. Also, I believe that there are some instances where FP24 will result in errors vs FP32.
Just as there are instances where fp16 will show rendering errors when fp24 will not. My point is that while fp16 makes sense for nVidia's architecture, because fp32 isn't fast enough, ATi's fp24 implementation is at least as fast as nV's fp16, which is why the ATi architecture doesn't need an fp16 fall back. IE, fp24 kills two birds with one stone--precision (more of it than fp16), and performance (at least equal to fp 16, and faster than fp32.)
Keep in mind that the entire industry is moving towards FP32.
What I'm saying is that at some point in the future most likely fp32 will be exceeded by fp48, fp64, etc. Color rendering precision in the pipeline is a moving target--there is no absolute ceiling for it--fp32 is not it anymore than fp24. The target has been moving since 3dfx shipped the V1. Current ceilings are dictated by architecture, which is in turn impacted by yield projections based on current manufacturing processes, and how those factors are weighed by the individual IHVs.
FP24 will not be the standard moving forwards for DirectX 9.0c and beyond.
But for DX9, which is what I'm talking about, fp24 is the baseline for full precision, despite how that baseline may move up in DX10, 11, etc., in the future. If for DX9.0b the baseline for sm2.0 full precision is fp24, then in DX9.0c the "partial" precision fp24 in sm3.0 is the same level of precision considered "full" in DX9.0c sm2.0, which strikes me as an inconsistency--if that in fact is the way that ps3.0 will be implemented by M$ in DX9.0c. I just don't see any point whatever in changing the terminology--because that's what you'd be doing, and that's all you'd be doing.
IE, it isn't relative to ps3.0 in DX9 to change the baseline of "full precision" in the sm from fp24 to fp32, since the distinguishing features of sm3.0 under DX9 compared to sm2.0 are features *other* than color precision in the pipeline (since M$ has already established that fp24 is the baseline for full precision in DX9 sm2.0, which ATi meets with fp24 and nVidia meets with fp32. Of course, all of this will change with DX10 and beyond, no question.) So, the actual hardware color precision levels are still the same for nV40 and R420 under all of DX9, regardless of sm, as they were for R3x0 and nV3x under sm2.0--fp16/32 for nVidia, fp24 for ATi. I can only see that we're *calling* them something different under 3.0 than we did under 2.0, which strikes me as inconsistent. But that's just my opinion...
I believe that FP24 was a very practical choice for the R3xx cards given the general performance limitations of the hardware in that generation, but in the future FP24 will be considered partial precision.
Even though I'm trying to stay somewhat in the present with DX9, I can only say that it's also possible that at some point in the future that fp32 will be considered "partial precision." I don't think it is any wiser to cap color precision absolutely at fp32 than it is to cap it at fp24...
Apparently, the NV40 should have FP32 performance that approaches the FP16 performance once the compiler is more up to speed. But again, in any situation where the higher precision is not needed and no visual errors are present, then it makes sense to use lower precision.
OK, but if, as you say, "NV40 should have FP32 performance that approaches the FP16 performance once the compiler is more up to speed," then fp16 really won't be needed anymore, for the same reason ATi doesn't need it with fp24...
As I said, nVidia thinks they will need it, obviously, and I don't expect to see it fall off nV architecture until such time as they think they no longer do.