Merge pull request #3031 from rg3igalia/sub-group-size-arb-flat-fix
[platform/upstream/glslang.git] / Test / spv.ext.meshShaderTaskMem.mesh
1 #version 450
2
3 #define MAX_VER  81
4 #define MAX_PRIM 32
5
6 #define BARRIER() \
7     memoryBarrierShared(); \
8     barrier();
9
10 #extension GL_EXT_mesh_shader : enable
11
12 layout(local_size_x = 32) in;
13
14 layout(max_vertices=MAX_VER) out;
15 layout(max_primitives=MAX_PRIM) out;
16 layout(triangles) out;
17
18 // use of storage qualifier "taskPayloadSharedEXT" in mesh shaders:
19 struct taskBlock {
20     float gid1[2];
21     vec4 gid2;
22 };
23 taskPayloadSharedEXT taskBlock mytask;
24
25 buffer bufferBlock {
26     float gid3[2];
27     vec4 gid4;
28 } mybuf;
29
30 layout(location=0) out outBlock {
31     float gid5;
32     vec4 gid6;
33 } myblk[];
34
35 void main()
36 {
37     uint iid = gl_LocalInvocationID.x;
38
39     myblk[iid].gid5 = mytask.gid1[1] + mybuf.gid3[1];
40     myblk[iid].gid6 = mytask.gid2    + mybuf.gid4;
41 }