glsl: test loop unroll with uint overflow
[piglit.git] / tests / spec / arb_uniform_buffer_object / row-major-matrix-inside-array-of-struct.shader_test
blob2985e49359048fd7d830725a788eb824de18b59e
1 [require]
2 GLSL >= 1.30
3 GL_ARB_uniform_buffer_object
5 [vertex shader]
6 #extension GL_ARB_uniform_buffer_object: require
8 /* Setting the COLUMN_MAJOR define will cause the test to pass.  The problem
9  * appears to be that the i965 backend generates the load of s[1].bv2.x from
10  * offset 80 even when m41_1 is row-major.  When m41_1 is row-major,
11  * s[1].bv2.x should be at offset 64.  This is correctly reported via the GL
12  * API.
13  */
14 //#define COLUMN_MAJOR
16 struct S {
17     bvec2       bv2;
18     mat4x2      m42_1;
21 layout(std140
22 #ifndef COLUMN_MAJOR
23        , row_major
24 #endif
25       ) uniform UB1 {
26     S[2] s;
29 flat out int vertex_pass;
30 in vec4 piglit_vertex;
32 void main()
34     vertex_pass = int(s[1].bv2.x);
35     gl_Position = piglit_vertex;
38 [fragment shader]
39 out vec4 piglit_fragcolor;
40 flat in int vertex_pass;
42 void main()
44     piglit_fragcolor = vec4(1 - vertex_pass, vertex_pass, 0, 1);
47 [test]
48 active uniform s[1].m42_1 GL_UNIFORM_OFFSET 64
49 active uniform s[1].m42_1 GL_UNIFORM_IS_ROW_MAJOR 1
51 uniform ivec2 s[1].bv2 1 0
53 draw rect -1 -1 2 2
54 probe all rgba 0.0 1.0 0.0 1.0