static const uint3 gl_WorkGroupSize = uint3(4u, 1u, 1u); void barrier_shared() { GroupMemoryBarrier(); } void full_barrier() { AllMemoryBarrier(); } void image_barrier() { DeviceMemoryBarrier(); } void buffer_barrier() { DeviceMemoryBarrier(); } void group_barrier() { AllMemoryBarrier(); } void barrier_shared_exec() { GroupMemoryBarrierWithGroupSync(); } void full_barrier_exec() { AllMemoryBarrier(); GroupMemoryBarrierWithGroupSync(); } void image_barrier_exec() { DeviceMemoryBarrier(); GroupMemoryBarrierWithGroupSync(); } void buffer_barrier_exec() { DeviceMemoryBarrier(); GroupMemoryBarrierWithGroupSync(); } void group_barrier_exec() { AllMemoryBarrier(); GroupMemoryBarrierWithGroupSync(); } void exec_barrier() { GroupMemoryBarrierWithGroupSync(); } void comp_main() { barrier_shared(); full_barrier(); image_barrier(); buffer_barrier(); group_barrier(); barrier_shared_exec(); full_barrier_exec(); image_barrier_exec(); buffer_barrier_exec(); group_barrier_exec(); exec_barrier(); } [numthreads(4, 1, 1)] void main() { comp_main(); }