ARB_ubo/referenced-by-shader: pass if shader compiler moves UBOs between shaders
[piglit.git] / tests / spec / arb_shader_storage_buffer_object / execution / indirect.shader_test
blob4fa306f1e5b392844123a87613e42de24503cfc6
1 # Tests (dynamically uniform) indirect indexing of SSBOs.
3 [require]
4 GL >= 3.3
5 GLSL >= 3.30
6 GL_ARB_shader_storage_buffer_object
7 GL_ARB_gpu_shader5
9 [vertex shader]
10 #version 330
12 uniform int u_idx;
13 in vec4 piglit_vertex;
14 flat out int idx;
16 void main() {
17         idx = u_idx;
18         gl_Position = piglit_vertex;
21 [fragment shader]
22 #version 330
23 #extension GL_ARB_gpu_shader5: require
24 #extension GL_ARB_shader_storage_buffer_object: require
26 layout(binding = 0) buffer Data {
27         vec4 color;
28         float color_scale;
29         int val;
30 } data[2];
32 flat in int idx;
33 out vec4 outcolor;
35 void main() {
36     outcolor = data[idx].color * data[idx].color_scale;
37     data[idx].val = idx + 1;
40 [test]
41 ssbo 0 32
42 ssbo 0 subdata float 0 1.0
43 ssbo 0 subdata float 4 2.0
44 ssbo 0 subdata float 12 2.0
45 ssbo 0 subdata float 16 0.5
46 ssbo 0 subdata int 20 1000
48 ssbo 1 32
49 ssbo 1 subdata float 0 1.0
50 ssbo 1 subdata float 4 2.0
51 ssbo 1 subdata float 12 4.0
52 ssbo 1 subdata float 16 0.25
54 clear color 1.0 0.0 0.0 1.0
55 clear
57 uniform int u_idx 0
59 draw rect -1 -1 2 2
60 probe all rgba 0.5 1.0 0.0 1.0
61 probe ssbo uint 0 20 == 1
63 uniform int u_idx 1
65 draw rect -1 -1 2 2
66 probe all rgba 0.25 0.5 0.0 1.0
67 probe ssbo uint 1 20 == 2