PDA

View Full Version : Instruction limits on new ATI GPUs



lemme_say_it
01-11-2006, 03:33 AM
Hi all,
I am planning to buy a new graphics subsystem from the ATI's x1000 series.

But I was unable to find any review which has discussed about

a)instruction limits
b)no. of available temporary registers

on the various subsystems ( x1300 , x1600 , x1800).

Some of my shaders run in software mode on ATI Radeon x850XT due to lack of instruction limits and no. of temporary registers.

Another query which I had is:
W'ld the increase in no. of pixel pipelines have any effect on the no. of available instructions ?

Or in other words , What controls the no. of available instructions on the GPU ?

Thanks in advance.

execom_rt
01-11-2006, 06:47 AM
The lack of temporaries registers is a bug of the ATI GLSL compiler, not an hardware issue.

I have some shaders that failed to compiled due to a lack of temporaries registers, but the same shader on MacOSX or with Cg (or DX HLSL) for example did work and produced an excellent assembler code (see the early thread about vertex skinning in GLSL or with multiple light shading.)

I hope that ATI will think to rewrite their GLSL compiler from scratch, because there is too many issues for being used in production IMHO.

Because of thoses software fallbacks (the worst are the silent one), OpenGL would be never as fast a DirectX on ATI, which guarantuee that when creating a 'D3DCREATE_PUREDEVICE' to never do software fallback at all.

I've asked once if they were an option to 'disable' all OpenGL software fallbacks to testing purpose and produce 'GL_ERROR' instead, but apparently this request was rejected.

lemme_say_it
01-12-2006, 01:51 AM
Thanks for your reply.
I'll try testing my GLSL shader by re-writing it in Cg and then testing it on Nvidia GPU.

But AFAIK the software fallback on GLSL was needed to be able to run those shaders also which exceeded the instruction limits imposed by the hardware.

And the error is returned when we use ARB_FRAGMENT_PROGRAM and the fragment program exceedes the no. of available resources.

So, I think the software fallback provided by GLSL is good because it guarantees that your shader will run even if it exceedes the no. of resources available.

BTW , has anybody tried to find out the no. of various resources available on new ATI GPU's??

Thanks

execom_rt
01-12-2006, 07:56 AM
If you need some figures :

On a Radeon X1300 (should be the same for a Radeon X1800)

Vertex Program : 256 instructions max per shader (65536 if emulated). Geforce 7800 has 512 instructions max.

Fragment Program: 1024 instructions max per shader (1536 if emulated). Geforce has 4096 instructions max.

Texture Indirections : 511 texture indirections (Radeon X850 had 4). Geforce 7800 has a whooping 4096 max texture indirections.

Temp. registers: 64 temporaries registers (same for Radeon X850) Geforce 7800 has 32 temporaries.

You are now free to compare a Radeon X1xxx vs the Geforce 7 series ...