GLSL source for vertex shader 1: #version 130 uniform float foo[8]; in vec4 vertex; float gl_ClipDistance[8]; void main() { gl_Position = vertex; gl_ClipDistance = foo; gl_ClipDistance = gl_ClipDistance; } GLSL IR for shader 1: ( (declare (shader_in ) vec4 vertex) (declare (uniform ) (array float 8) foo) (declare (shader_out ) vec4 gl_Position) (declare (shader_out ) float gl_PointSize) (declare (shader_in ) vec4 gl_Vertex) (declare (shader_in ) vec3 gl_Normal) (declare (shader_in ) vec4 gl_Color) (declare (shader_in ) vec4 gl_SecondaryColor) (declare (shader_in ) vec4 gl_MultiTexCoord0) (declare (shader_in ) vec4 gl_MultiTexCoord1) (declare (shader_in ) vec4 gl_MultiTexCoord2) (declare (shader_in ) vec4 gl_MultiTexCoord3) (declare (shader_in ) vec4 gl_MultiTexCoord4) (declare (shader_in ) vec4 gl_MultiTexCoord5) (declare (shader_in ) vec4 gl_MultiTexCoord6) (declare (shader_in ) vec4 gl_MultiTexCoord7) (declare (shader_in ) float gl_FogCoord) (declare (shader_out ) vec4 gl_ClipVertex) (declare (shader_out ) vec4 gl_FrontColor) (declare (shader_out ) vec4 gl_BackColor) (declare (shader_out ) vec4 gl_FrontSecondaryColor) (declare (shader_out ) vec4 gl_BackSecondaryColor) (declare (shader_out ) float gl_FogFragCoord) (declare (uniform ) mat4 gl_ModelViewMatrix) (declare (uniform ) mat4 gl_ProjectionMatrix) (declare (uniform ) mat4 gl_ModelViewProjectionMatrix) (declare (uniform ) mat3 gl_NormalMatrix) (declare (uniform ) mat4 gl_ModelViewMatrixInverse) (declare (uniform ) mat4 gl_ProjectionMatrixInverse) (declare (uniform ) mat4 gl_ModelViewProjectionMatrixInverse) (declare (uniform ) mat4 gl_ModelViewMatrixTranspose) (declare (uniform ) mat4 gl_ProjectionMatrixTranspose) (declare (uniform ) mat4 gl_ModelViewProjectionMatrixTranspose) (declare (uniform ) mat4 gl_ModelViewMatrixInverseTranspose) (declare (uniform ) mat4 gl_ProjectionMatrixInverseTranspose) (declare (uniform ) mat4 gl_ModelViewProjectionMatrixInverseTranspose) (declare (uniform ) float gl_NormalScale) (declare (uniform ) gl_LightModelParameters gl_LightModel) (declare (uniform ) vec2 gl_BumpRotMatrix0MESA) (declare (uniform ) vec2 gl_BumpRotMatrix1MESA) (declare (uniform ) vec4 gl_FogParamsOptimizedMESA) (declare () int gl_MaxLights) (declare () int gl_MaxClipPlanes) (declare () int gl_MaxTextureUnits) (declare () int gl_MaxTextureCoords) (declare () int gl_MaxVertexAttribs) (declare () int gl_MaxVertexUniformComponents) (declare () int gl_MaxVaryingFloats) (declare () int gl_MaxVertexTextureImageUnits) (declare () int gl_MaxCombinedTextureImageUnits) (declare () int gl_MaxTextureImageUnits) (declare () int gl_MaxFragmentUniformComponents) (declare (uniform ) (array mat4 8) gl_TextureMatrix) (declare (uniform ) (array mat4 8) gl_TextureMatrixInverse) (declare (uniform ) (array mat4 8) gl_TextureMatrixTranspose) (declare (uniform ) (array mat4 8) gl_TextureMatrixInverseTranspose) (declare (uniform ) gl_DepthRangeParameters gl_DepthRange) (declare (uniform ) (array vec4 8) gl_ClipPlane) (declare (uniform ) gl_PointParameters gl_Point) (declare (uniform ) gl_MaterialParameters gl_FrontMaterial) (declare (uniform ) gl_MaterialParameters gl_BackMaterial) (declare (uniform ) (array gl_LightSourceParameters 8) gl_LightSource) (declare (uniform ) gl_LightModelProducts gl_FrontLightModelProduct) (declare (uniform ) gl_LightModelProducts gl_BackLightModelProduct) (declare (uniform ) (array gl_LightProducts 8) gl_FrontLightProduct) (declare (uniform ) (array gl_LightProducts 8) gl_BackLightProduct) (declare (uniform ) (array vec4 8) gl_TextureEnvColor) (declare (uniform ) (array vec4 8) gl_EyePlaneS) (declare (uniform ) (array vec4 8) gl_EyePlaneT) (declare (uniform ) (array vec4 8) gl_EyePlaneR) (declare (uniform ) (array vec4 8) gl_EyePlaneQ) (declare (uniform ) (array vec4 8) gl_ObjectPlaneS) (declare (uniform ) (array vec4 8) gl_ObjectPlaneT) (declare (uniform ) (array vec4 8) gl_ObjectPlaneR) (declare (uniform ) (array vec4 8) gl_ObjectPlaneQ) (declare (uniform ) gl_FogParameters gl_Fog) (declare (uniform ) (array vec4 33) gl_CurrentAttribVertMESA) (declare (uniform ) (array vec4 55) gl_CurrentAttribFragMESA) (declare (shader_out ) (array vec4 0) gl_TexCoord) (declare () int gl_MaxDrawBuffers) (declare (sys ) int gl_VertexID) (declare () int gl_MaxClipDistances) (declare () int gl_MaxVaryingComponents) (declare (shader_out ) (array float 8) gl_ClipDistance) (function main (signature void (parameters ) ( (declare (temporary ) vec4 assignment_tmp) (assign (xyzw) (var_ref assignment_tmp) (var_ref vertex) ) (assign (xyzw) (var_ref gl_Position) (var_ref assignment_tmp) ) (declare (temporary ) (array float 8) assignment_tmp@2) (assign () (var_ref assignment_tmp@2) (var_ref foo) ) (assign () (var_ref gl_ClipDistance) (var_ref assignment_tmp@2) ) (declare (temporary ) (array float 8) assignment_tmp@3) (assign () (var_ref assignment_tmp@3) (var_ref gl_ClipDistance) ) (assign () (var_ref gl_ClipDistance) (var_ref assignment_tmp@3) ) )) ) ) GLSL IR for linked vertex program 2: ( (declare (shader_in ) vec4 vertex) (declare (uniform ) (array float 8) foo) (declare (shader_out ) vec4 gl_Position) (declare (shader_out ) (array vec4 2) gl_ClipDistanceMESA) (function main (signature void (parameters ) ( (declare (temporary ) vec4 assignment_tmp) (assign (xyzw) (var_ref assignment_tmp) (var_ref vertex) ) (assign (xyzw) (var_ref gl_Position) (var_ref assignment_tmp) ) (declare (temporary ) (array float 8) assignment_tmp@4) (assign () (var_ref assignment_tmp@4) (var_ref foo) ) (assign (x) (array_ref (var_ref gl_ClipDistanceMESA) (constant int (0)) ) (array_ref (var_ref assignment_tmp@4) (constant int (0)) ) ) (assign (y) (array_ref (var_ref gl_ClipDistanceMESA) (constant int (0)) ) (array_ref (var_ref assignment_tmp@4) (constant int (1)) ) ) (assign (z) (array_ref (var_ref gl_ClipDistanceMESA) (constant int (0)) ) (array_ref (var_ref assignment_tmp@4) (constant int (2)) ) ) (assign (w) (array_ref (var_ref gl_ClipDistanceMESA) (constant int (0)) ) (array_ref (var_ref assignment_tmp@4) (constant int (3)) ) ) (assign (x) (array_ref (var_ref gl_ClipDistanceMESA) (constant int (1)) ) (array_ref (var_ref assignment_tmp@4) (constant int (4)) ) ) (assign (y) (array_ref (var_ref gl_ClipDistanceMESA) (constant int (1)) ) (array_ref (var_ref assignment_tmp@4) (constant int (5)) ) ) (assign (z) (array_ref (var_ref gl_ClipDistanceMESA) (constant int (1)) ) (array_ref (var_ref assignment_tmp@4) (constant int (6)) ) ) (assign (w) (array_ref (var_ref gl_ClipDistanceMESA) (constant int (1)) ) (array_ref (var_ref assignment_tmp@4) (constant int (7)) ) ) (declare (temporary ) (array float 8) assignment_tmp@5) (assign (x) (array_ref (var_ref assignment_tmp@5) (constant int (0)) ) (swiz x (array_ref (var_ref gl_ClipDistanceMESA) (constant int (0)) ) )) (assign (x) (array_ref (var_ref assignment_tmp@5) (constant int (1)) ) (swiz y (array_ref (var_ref gl_ClipDistanceMESA) (constant int (0)) ) )) (assign (x) (array_ref (var_ref assignment_tmp@5) (constant int (2)) ) (swiz z (array_ref (var_ref gl_ClipDistanceMESA) (constant int (0)) ) )) (assign (x) (array_ref (var_ref assignment_tmp@5) (constant int (3)) ) (swiz w (array_ref (var_ref gl_ClipDistanceMESA) (constant int (0)) ) )) (assign (x) (array_ref (var_ref assignment_tmp@5) (constant int (4)) ) (swiz x (array_ref (var_ref gl_ClipDistanceMESA) (constant int (1)) ) )) (assign (x) (array_ref (var_ref assignment_tmp@5) (constant int (5)) ) (swiz y (array_ref (var_ref gl_ClipDistanceMESA) (constant int (1)) ) )) (assign (x) (array_ref (var_ref assignment_tmp@5) (constant int (6)) ) (swiz z (array_ref (var_ref gl_ClipDistanceMESA) (constant int (1)) ) )) (assign (x) (array_ref (var_ref assignment_tmp@5) (constant int (7)) ) (swiz w (array_ref (var_ref gl_ClipDistanceMESA) (constant int (1)) ) )) (assign (x) (array_ref (var_ref gl_ClipDistanceMESA) (constant int (0)) ) (array_ref (var_ref assignment_tmp@5) (constant int (0)) ) ) (assign (y) (array_ref (var_ref gl_ClipDistanceMESA) (constant int (0)) ) (array_ref (var_ref assignment_tmp@5) (constant int (1)) ) ) (assign (z) (array_ref (var_ref gl_ClipDistanceMESA) (constant int (0)) ) (array_ref (var_ref assignment_tmp@5) (constant int (2)) ) ) (assign (w) (array_ref (var_ref gl_ClipDistanceMESA) (constant int (0)) ) (array_ref (var_ref assignment_tmp@5) (constant int (3)) ) ) (assign (x) (array_ref (var_ref gl_ClipDistanceMESA) (constant int (1)) ) (array_ref (var_ref assignment_tmp@5) (constant int (4)) ) ) (assign (y) (array_ref (var_ref gl_ClipDistanceMESA) (constant int (1)) ) (array_ref (var_ref assignment_tmp@5) (constant int (5)) ) ) (assign (z) (array_ref (var_ref gl_ClipDistanceMESA) (constant int (1)) ) (array_ref (var_ref assignment_tmp@5) (constant int (6)) ) ) (assign (w) (array_ref (var_ref gl_ClipDistanceMESA) (constant int (1)) ) (array_ref (var_ref assignment_tmp@5) (constant int (7)) ) ) )) ) ) GLSL vertex shader 0 source for linked program 2: #version 130 uniform float foo[8]; in vec4 vertex; float gl_ClipDistance[8]; void main() { gl_Position = vertex; gl_ClipDistance = foo; gl_ClipDistance = gl_ClipDistance; }