Merge pull request #2976 from jeremy-lunarg/hayes-fix-2975
[platform/upstream/glslang.git] / Test / spv.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_NV_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 // test use of task memory in mesh shaders:
19
20 taskNV in taskBlock {
21     float gid1[2];
22     vec4 gid2;
23 } 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 }