glsl: test loop unroll with uint overflow
[piglit.git] / tests / spec / arb_shader_subroutine / execution / array-subroutines-nonconst.shader_test
blob50daed3ecc285c5ea123f35b7b3aa5d1d8c9b9b8
1 # test calling subroutine uniforms with
2 # a non constant array index works.
3 [require]
4 GLSL >= 1.50
5 GL_ARB_shader_subroutine
7 [vertex shader passthrough]
9 [fragment shader]
10 #version 150
11 #extension GL_ARB_shader_subroutine: enable
13 out vec4 color;
15 subroutine float getchan1();
17 subroutine uniform getchan1 GetChan1[2];
19 uniform int pick;
21 subroutine(getchan1)
22 float chan_full()
24         return 1.0;
27 subroutine(getchan1)
28 float chan_empty()
30         return 0.0;
33 void main()
35         color = vec4(GetChan1[pick](), GetChan1[1 - pick](), 0.0, 1.0);
39 [test]
40 clear color 0.0 0.0 1.0 0.0
41 clear
42 uniform int pick 0
43 subuniform GL_FRAGMENT_SHADER GetChan1[0] chan_full
44 subuniform GL_FRAGMENT_SHADER GetChan1[1] chan_empty
45 draw rect -1 -1 2 2
46 probe all rgba 1.0 0.0 0.0 1.0
47 uniform int pick 1
48 subuniform GL_FRAGMENT_SHADER GetChan1[0] chan_empty
49 subuniform GL_FRAGMENT_SHADER GetChan1[1] chan_full
50 draw rect -1 -1 2 2
51 probe all rgba 1.0 0.0 0.0 1.0