1### Compilation failed: 2 3error: 4: atomics are only permitted in workgroup variables and writable storage blocks 4atomicUint globalAtomic; // invalid 5^^^^^^^^^^^^^^^^^^^^^^^ 6error: 5: atomics are only permitted in workgroup variables and writable storage blocks 7atomicUint globalAtomicArray[2]; // invalid 8^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 9error: 20: atomics are only permitted in workgroup variables and writable storage blocks 10S globalStructWithAtomicMember; // invalid 11^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 12error: 21: atomics are only permitted in workgroup variables and writable storage blocks 13S globalStructWithAtomicMemberArray[2]; // invalid 14^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 15error: 22: atomics are only permitted in workgroup variables and writable storage blocks 16NestedS globalStructWithNestedAtomicMember; // invalid 17^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 18error: 32: variables of type 'atomicUint' may not be uniform 19 atomicUint uboAtomic; // invalid 20 ^^^^^^^^^^^^^^^^^^^^^ 21error: 31: caused by: 22layout(metal, binding = 1) uniform ubo1 { 23 ^^^^ 24error: 31: atomics are only permitted in workgroup variables and writable storage blocks 25layout(metal, binding = 1) uniform ubo1 { 26 ^^^^ 27error: 35: variables of type 'atomicUint[2]' may not be uniform 28 atomicUint uboAtomicArray[2]; // invalid 29 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 30error: 34: caused by: 31layout(metal, binding = 2) uniform ubo2 { 32 ^^^^ 33error: 34: atomics are only permitted in workgroup variables and writable storage blocks 34layout(metal, binding = 2) uniform ubo2 { 35 ^^^^ 36error: 8: variables of type 'atomicUint' may not be uniform 37 atomicUint structMemberAtomic; // valid 38 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 39error: 37: caused by: 40layout(metal, binding = 3) uniform ubo3 { 41 ^^^^ 42error: 37: atomics are only permitted in workgroup variables and writable storage blocks 43layout(metal, binding = 3) uniform ubo3 { 44 ^^^^ 45error: 40: atomics are only permitted in workgroup variables and writable storage blocks 46layout(metal, binding = 4) uniform ubo4 { 47 ^^^^ 48error: 8: variables of type 'atomicUint' may not be uniform 49 atomicUint structMemberAtomic; // valid 50 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 51error: 43: caused by: 52layout(metal, binding = 5) uniform ubo5 { 53 ^^^^ 54error: 43: atomics are only permitted in workgroup variables and writable storage blocks 55layout(metal, binding = 5) uniform ubo5 { 56 ^^^^ 57error: 47: atomics are only permitted in workgroup variables and writable storage blocks 58layout(metal, binding = 6) readonly buffer roSsbo1 { 59 ^^^^^^^ 60error: 50: atomics are only permitted in workgroup variables and writable storage blocks 61layout(metal, binding = 7) readonly buffer roSsbo2 { 62 ^^^^^^^ 63error: 53: atomics are only permitted in workgroup variables and writable storage blocks 64layout(metal, binding = 8) readonly buffer roSsbo3 { 65 ^^^^^^^ 66error: 56: atomics are only permitted in workgroup variables and writable storage blocks 67layout(metal, binding = 9) readonly buffer roSsbo4 { 68 ^^^^^^^ 69error: 59: atomics are only permitted in workgroup variables and writable storage blocks 70layout(metal, binding = 10) readonly buffer roSsbo5 { 71 ^^^^^^^ 72error: 64: atomics are only permitted in workgroup variables and writable storage blocks 73 atomicUint localAtomic; // invalid 74 ^^^^^^^^^^^^^^^^^^^^^^ 75error: 65: atomics are only permitted in workgroup variables and writable storage blocks 76 atomicUint localAtomicArray[2]; // invalid 77 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 78error: 66: atomics are only permitted in workgroup variables and writable storage blocks 79 S localStructWithAtomicMember; // invalid 80 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 81error: 67: atomics are only permitted in workgroup variables and writable storage blocks 82 S localStructWithAtomicMemberArray[2]; // invalid 83 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 8427 errors 85