Merge pull request #1645 from KhronosGroup/dupe-accelstruct
[platform/upstream/glslang.git] / Test / spv.bufferhandle6.frag
1 #version 450 core\r
2 \r
3 #extension GL_EXT_buffer_reference : enable\r
4 layout (push_constant, std430) uniform Block { int identity[32]; } pc;\r
5 layout(r32ui, set = 3, binding = 0) uniform uimage2D image0_0;\r
6 layout(buffer_reference) buffer T1;\r
7 layout(set = 3, binding = 1, buffer_reference) buffer T1 {\r
8    layout(offset = 0) int a[2]; // stride = 4 for std430, 16 for std140\r
9    layout(offset = 32) int b;\r
10    layout(offset = 48) T1  c[2]; // stride = 8 for std430, 16 for std140\r
11    layout(offset = 80) T1  d;\r
12 } x;\r
13 void main()\r
14 {\r
15   int accum = 0, temp;\r
16    accum |= x.a[0] - 0;\r
17    accum |= x.a[pc.identity[1]] - 1;\r
18    accum |= x.b - 2;\r
19    accum |= x.c[0].a[0] - 3;\r
20    accum |= x.c[0].a[pc.identity[1]] - 4;\r
21    accum |= x.c[0].b - 5;\r
22    accum |= x.c[pc.identity[1]].a[0] - 6;\r
23    accum |= x.c[pc.identity[1]].a[pc.identity[1]] - 7;\r
24    accum |= x.c[pc.identity[1]].b - 8;\r
25    accum |= x.d.a[0] - 9;\r
26    accum |= x.d.a[pc.identity[1]] - 10;\r
27    accum |= x.d.b - 11;\r
28   uvec4 color = (accum != 0) ? uvec4(0,0,0,0) : uvec4(1,0,0,1);\r
29   imageStore(image0_0, ivec2(gl_FragCoord.x, gl_FragCoord.y), color);\r
30 }