diff options
Diffstat (limited to '3rdparty/bgfx/3rdparty/glslang/Test/web.comp')
-rw-r--r-- | 3rdparty/bgfx/3rdparty/glslang/Test/web.comp | 50 |
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); +} |