I don't see a reason for this. Injecting the values should be indepent of the device. But...both devices use the Adreno 200 GPU which is, in my opinion, a piece of junk when it comes to shader support. The shader compiler is a mess and simply creates garbage code out of otherwise fine working shaders. Maybe that's the case here...try to fiddle around with your shader, especially make sure that you always use x.0 instead of x when is comes to float values. Try to use some constant instead to see if that works etc... Never use loops in the fragment shader on Andreno.