I have a strange problem with glsl shader.
On nvidia it compiles, links, validates and runs just fine.
On ATI (ATI Radeon HD 4800, GL:2.1.8577) it compiles, links
but validation fails with this message:

Validation failed! - Different sampler types for same sample texture unit in fragment shader

in the shader there are samplers:

uniform sampler2D _IN_NormalsTexture;
uniform sampler2D _IN_SColorsTexture;
uniform sampler2D _IN_LNDepthTexture;
uniform sampler2DShadow _IN_ShadowMapTexture;

_IN_NormalsTexture, _IN_SColorsTexture and _IN_LNDepthTexture are accesed just once by texture2D()
and _IN_ShadowMapTexture is accesed 4 times with shadow2DProj()
so i do not see any problems (for example accesing sampler2D with shadow2DProj or such)
so why the shader do not validates on ATI ??? any ideas ?

Is glsl on ati have some weird limitations on shadow texture lockups ?
(HD series under DirectX10 behaves just like nvidia, so hardware supports filtered shadow map lockups)

The shader is spaghetti style couse it is generated by CG from hlsl source.
the full source is here http://mxadd.org/trash/shader.txt

Thanks for any ansfers!