I have a vertex shader that I've developed for an nVidia 8800. I am testing and porting it to an ATI 4870 (8.9 driver).
My understanding of the GLSL spec is that matrices (i.e. mat4) are initialized using column-major ordering. Here's an example where mxy denotes a matrix element at row x and column y:
mat4 M = mat4( m00, m10, m20, m30, m01, m11, m21, m31, m02, m12, m22, m32, m03, m13, m23, m33 );
However, on my ATI card, I have to use row-major ordering to get the proper result from the shader.
mat4 M = mat4( m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33 );
Have I mis-read the GLSL spec or is there a bug in the implementation of GLSL on the ATI 4870s?