summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/bgfx/3rdparty/glslang/Test/web.comp
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/bgfx/3rdparty/glslang/Test/web.comp')
-rw-r--r--3rdparty/bgfx/3rdparty/glslang/Test/web.comp50
1 files changed, 50 insertions, 0 deletions
diff --git a/3rdparty/bgfx/3rdparty/glslang/Test/web.comp b/3rdparty/bgfx/3rdparty/glslang/Test/web.comp
new file mode 100644
index 00000000000..07847b4268d
--- /dev/null
+++ b/3rdparty/bgfx/3rdparty/glslang/Test/web.comp
@@ -0,0 +1,50 @@
+#version 310 es
+
+layout(local_size_x_id = 18, local_size_z_id = 19) in;
+
+layout(local_size_x = 2) in;
+layout(local_size_y = 5) in;
+layout(local_size_z = 7) in;
+
+const int total = gl_MaxComputeWorkGroupCount.x
+ + gl_MaxComputeWorkGroupCount.y
+ + gl_MaxComputeWorkGroupCount.z
+ + gl_MaxComputeUniformComponents
+ + gl_MaxComputeTextureImageUnits;
+
+shared vec4 s[total];
+
+int arrX[gl_WorkGroupSize.x];
+int arrY[gl_WorkGroupSize.y];
+int arrZ[gl_WorkGroupSize.z];
+
+layout(binding = 0, set = 0) buffer bName {
+ int size;
+ uvec3 count;
+ vec4 data[];
+} bInst;
+
+void main()
+{
+ barrier();
+
+ bInst.data[bInst.size / 2] *= vec4(7.0);
+
+ memoryBarrier();
+ groupMemoryBarrier();
+ memoryBarrierShared();
+ memoryBarrierBuffer();
+
+ s[3] = vec4(0, arrX[0], arrY[0], arrZ[0]);
+ bInst.count = gl_NumWorkGroups + gl_WorkGroupSize + gl_WorkGroupID + gl_LocalInvocationID +
+ gl_GlobalInvocationID * gl_LocalInvocationIndex;
+
+ atomicAdd(bInst.size, 2);
+ atomicMin(bInst.size, 2);
+ atomicMax(bInst.size, 2);
+ atomicAnd(bInst.size, 2);
+ atomicOr(bInst.size, 2);
+ atomicXor(bInst.size, 2);
+ atomicExchange(bInst.size, 2);
+ atomicCompSwap(bInst.size, 5, 2);
+}