So, we've established that NV30 has an integer and a floating point path at least. I'm hazy on this point: if a PS1.1/1.3 shader operates on NV30 will it use the (fast) integer path or the slower FP path?
DaveBaumann said:So, we've established that NV30 has an integer and a floating point path at least. I'm hazy on this point: if a PS1.1/1.3 shader operates on NV30 will it use the (fast) integer path or the slower FP path?
DaveBaumann said:So, we've established that NV30 has an integer and a floating point path at least. I'm hazy on this point: if a PS1.1/1.3 shader operates on NV30 will it use the (fast) integer path or the slower FP path?
(fixed fragment pipeline, register combiner mode/fragment combiner mode, and upto PS 1.3).
Joe DeFuria said:Any idea about PS 1.4? Do you think the integer formats are extended to support PS 1.4 calls, or do you think that the NV30 PS 2.0 paths (floating point) 'emulate' PS 1.4?
In short, do you think PS 1.4 utilized integer, or floating point formats?
Luminescent said:There are 2 register cominers per pipe in the NV30.
Hyp-X said:PS1.4 is likely using the FP pipeline only, because PS1.4 requires the support of pixel shader register values up to 8.0 and GFFX register combiners support upto 2.0 only. (GF1-4 supported 1.0).
http://msdn.microsoft.com/library/d...r1_X/architecture/pixelshaderarchitecture.aspRange
The range is the maximum and minimum register data value. The ranges vary based on the type of register. The ranges for some of the registers can be queried from the device caps using GetDeviceCaps.
Code:Name Type Range Versions cn Constant register -1 to +1 All versions rn Temporary register - MaxPixelShaderValue to + MaxPixelShaderValue All versions tn Texture register - MaxPixelShaderValue to + MaxPixelShaderValue 1_1 to 1_3 tn Texture register - MaxTextureRepeat to + MaxTextureRepeat 1_4 vn Color register 1_4
Early pixel shader hardware represents data in registers using a fixed-point number. This limits precision to a maximum of approximately eight bits for the fractional part of a number. Keep this in mind when designing a shader.
For pixel shader version 1_1 to 1_3, MaxTextureRepeat must be a minimum of one. For 1_4, MaxTextureRepeat must be a minimum of eight.
So the [-8,8] range is only for texture registers, which means that you can still use fx12 for the color calculations (the compiler can derive the operation range from the destination register).
Joe DeFuria said:1) Whether the NV30 architecture is flexible enough to do it that way,. (Or if it's using floating point for texture access must it use floating point for color calcs, due to hardware flexibility limitation.)
2) Irrespective if NV30 is that flexible, would doing the texture access via FP pipeline introduce a performance bottleneck? (Performance wise for NV30, does it matter if color calcs are integer or floating point, since the texture access is already floating point?)
Chalnoth said:That diagram really doesn't list two usable register combiners per pipe. It just looks like it's saying the FP and legacy pipes (which do apear to be separate there) use separate register combiner hardware.
Tonyo said:DaveBaumann said:So, we've established that NV30 has an integer and a floating point path at least. I'm hazy on this point: if a PS1.1/1.3 shader operates on NV30 will it use the (fast) integer path or the slower FP path?
The integer format from NV30 (called fx12) is a 12bit fixed point format (sign + 1bit integer + 10bit fraction). This is an extended version of the legacy mode supported by the register combiners (the register combiners used a 9bit S8 representation), so I guess it will be used most of the time in current apps (fixed fragment pipeline, register combiner mode/fragment combiner mode, and upto PS 1.3).
Tonyo said:The integer format from NV30 (called fx12) is a 12bit fixed point format (sign + 1bit integer + 10bit fraction). This is an extended version of the legacy mode supported by the register combiners (the register combiners used a 9bit S8 representation), so I guess it will be used most of the time in current apps (fixed fragment pipeline, register combiner mode/fragment combiner mode, and upto PS 1.3).