Doesn't it suffer a similar way as NV30 regarding instruction count. DX9 requires you to say a number that you always can handle.
NV30 can do 1024 instructions, but have to say 512 because that's how many instructions you get if you use a constant in each.
R300 can do 64+64+32, but have to say 64+32 because that's what you get when you don't do color+alpha instruction pairing. (PS2.0 doesn't know of instruction pairing.) And 64+32 isn't above PS2.0.
Now, I don't know if DX9 checks pixel shaders against that cap before sending it to the drivers. If it doesn't, and let the driver do the testing, then there could be a loophole for NV30/R300.
PS, the link Xmas gave doesn't have the MaxPixelShaderInstructionSlots cap. I don't know what to make out of that. Shouldn't it be there even if it isn't above 64+32? There is a NumInstructionSlots that seems to be the same thing though, and it says 96 (=64+32).
[Edit]
DOH, Xmas beat me to it.
NV30 can do 1024 instructions, but have to say 512 because that's how many instructions you get if you use a constant in each.
R300 can do 64+64+32, but have to say 64+32 because that's what you get when you don't do color+alpha instruction pairing. (PS2.0 doesn't know of instruction pairing.) And 64+32 isn't above PS2.0.
Now, I don't know if DX9 checks pixel shaders against that cap before sending it to the drivers. If it doesn't, and let the driver do the testing, then there could be a loophole for NV30/R300.
PS, the link Xmas gave doesn't have the MaxPixelShaderInstructionSlots cap. I don't know what to make out of that. Shouldn't it be there even if it isn't above 64+32? There is a NumInstructionSlots that seems to be the same thing though, and it says 96 (=64+32).
[Edit]
DOH, Xmas beat me to it.