1# This test checks that the GLSL compiler respects the size of 2# gl_ClipDistanceIn when it is explicitly declared in the geometry 3# shader. 4 5[require] 6GL >= 2.0 7GLSL >= 1.30 8GL_ARB_geometry_shader4 9 10[vertex shader] 11#version 130 12out float gl_ClipDistance[2]; 13in vec4 vertex; 14 15void main() 16{ 17 gl_Position = vertex; 18} 19 20[geometry shader] 21#version 130 22#extension GL_ARB_geometry_shader4: enable 23 24in float gl_ClipDistanceIn[3][2]; 25flat out int outer_size; 26flat out int inner_size; 27 28void main() 29{ 30 for (int i = 0; i < 3; i++) { 31 gl_Position = gl_PositionIn[i]; 32 outer_size = gl_ClipDistanceIn.length(); 33 inner_size = gl_ClipDistanceIn[0].length(); 34 EmitVertex(); 35 } 36} 37 38[geometry layout] 39input type GL_TRIANGLES 40output type GL_TRIANGLE_STRIP 41vertices out 3 42 43[fragment shader] 44#version 130 45 46flat in int outer_size; 47flat in int inner_size; 48 49void main() 50{ 51 if (outer_size != 3) 52 gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0); 53 else if (inner_size != 2) 54 gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0); 55 else 56 gl_FragColor = vec4(0.0, 1.0, 0.0, 1.0); 57} 58 59[vertex data] 60vertex/float/2 61-1.0 -1.0 62 1.0 -1.0 63 1.0 1.0 64-1.0 1.0 65 66[test] 67draw arrays GL_TRIANGLE_FAN 0 4 68probe all rgba 0.0 1.0 0.0 1.0 69