7800 have longer pixel programs?

DeanoC

Trust me, I'm a renderer person!
Veteran
Supporter
One thing I've heard (haven't confirmed it myself) is that 7x00 support longer pixel programs than 6x00's. On a 6x00 you can have 256 instruction looped 256 times (for a total of 65535 instruction), whereas 7800 has more.

Just hadn't heard about it before and wondered if anybody can confirm it.
 
Not with current driver.

Code:
MaxVShaderInstructionsExecuted               65.535
                  MaxPShaderInstructionsExecuted               65.535
                  MaxVertexShader30InstructionSlots            544
                  MaxPixelShader30InstructionSlots             4.096
 
Maybe 7800 can store a longer program in memory, e.g. work in steps of 512 instructions at a time.

Jawed
 
Actually that implies that 7800 can hold 4096 instructions at a time.
Actually, this implies that the max program counter is 4095, and not much more. The instruction cache may or may not be as large as the largest program that can execute. The instruction cache may or may not have grown from the GeForce 6800 U.
 
Presumably more instruction slots would be relevant if you had long if ... then ... else clauses.

Anyone got any idea what the penalty for switching between pages of instruction slots is?...

Jawed
 
Since NV4x/G7x executes one instruction for several hundred cycles, I don't think there's much need for a large instruction cache.
 
Xmas - agreed. In fact, I was under the impression that N4x supported pixel shader programs of "unlimited" length and that G70 extended this to vertex programs as well. Am I way off base or is this exposed in OpenGL only?
 
psurge said:
Xmas - agreed. In fact, I was under the impression that N4x supported pixel shader programs of "unlimited" length and that G70 extended this to vertex programs as well. Am I way off base or is this exposed in OpenGL only?
They advertised "unlimited length" vertex and pixel shaders for NV4x already. Why it's not exposed I don't know. IIRC they had even lower limits with an older driver.
 
Xmas said:
They advertised "unlimited length" vertex and pixel shaders for NV4x already. Why it's not exposed I don't know. IIRC they had even lower limits with an older driver.
Probably the same reason why its not exposed on the AIT raedon 9800.
 
I've had a reliable source state that his very long shader can run many more iterations on 7800 vs 6800. Its possible he's using beta drivers though so maybe its something that will be activated soon.

Interesting...
 
a bit OT: it seems also G70 has a larger temporary live registers space and/or a larger registe file read/write bandwith.
I used latest NVShaderPerf release to test some pixel shader performance and I observed on some shader NVShaderPerf rates G70 and NV40 on par using partial precision, but G70 is supposed to be faster than NV40 when full precision is used on eveything.

It's also nice to note that on many long shaders (100+ instructions) a single G70 pixel pipeline is significantly (clock per clock) faster than a NV40 pixel pipeline.
 
DeanoC said:
I've had a reliable source state that his very long shader can run many more iterations on 7800 vs 6800.
nAo said:
It's also nice to note that on many long shaders (100+ instructions) a single
G70 pixel pipeline is significantly (clock per clock) faster than a NV40 pixel pipeline.
These two may be the same thing. That is to say, your source may not be hitting the long shader limits, but rather has chosen to execute shorter programs for performance reasons.
 
Chalnoth said:
These two may be the same thing. That is to say, your source may not be hitting the long shader limits, but rather has chosen to execute shorter programs for performance reasons.
My source is doing extremely complex shaders (i.e. non-realtime stuff) for ShaderX4.

His data is that 6800 has 1024 instruction limit with loops upto 65535 slots, and 7800 has no slot limits. This enables him to loop over a 1000 times in a single pass shader. This is GLSL if it makes a difference...

He clearly states (having tested both cards) that the 7800 is able to to do more iteration inside a single-pass shader than the 6800 can...

I guess we will just have to wait to see if new drivers expose this, or wether he has somehow made a mistake...
 
Not since the very first drivers of the 6800 has the limit been 1024.

Edit:
Then again, maybe the GLSL drivers are still new. It was a few driver iterations before the instruction count climed to 4096 in DirectX.
 
nAo said:
a bit OT: it seems also G70 has a larger temporary live registers space and/or a larger registe file read/write bandwith.
Larger bandwidth. There's still only four FP32/eight FP16 registers for full speed.


Isn't there a time limit on how long a pixel shader may take per pixel before aborting, at least in DirectX?
 
Xmas said:
Isn't there a time limit on how long a pixel shader may take per pixel before aborting, at least in DirectX?
There's a watchdog timer that will kick in if certain calls don't come back within 1 second. If you have the debugger running, it gives you ~15 seconds before kicking in.
 
Back
Top