blob: 088b88fb2b0e420af32591b15de7622d7e95d06c [file] [log] [blame]
workgroup atomicUint wgAtomic; // valid
workgroup atomic_uint wgAtomicArray[2]; // valid
atomic_uint globalAtomic; // invalid
atomicUint globalAtomicArray[2]; // invalid
struct S {
atomicUint structMemberAtomic; // valid
atomic_uint structMemberAtomicArray[2]; // valid
};
struct NestedS {
S nestedStructWithAtomicMember; // valid
};
workgroup S wgStructWithAtomicMember; // valid
workgroup S wgStructWithAtomicMemberArray[2]; // valid
workgroup NestedS wgStructWithNestedAtomicMember; // valid
S globalStructWithAtomicMember; // invalid
S globalStructWithAtomicMemberArray[2]; // invalid
NestedS globalStructWithNestedAtomicMember; // invalid
layout(metal, binding = 0) buffer ssbo {
atomic_uint ssboAtomic; // valid
atomicUint ssboAtomicArray[2]; // valid
S ssboStructWithAtomicMember; // valid
S ssboStructWithAtomicMemberArray[2]; // valid
};
layout(metal, binding = 1) uniform ubo1 {
atomicUint uboAtomic; // invalid
};
layout(metal, binding = 2) uniform ubo2 {
atomic_uint uboAtomicArray[2]; // invalid
};
layout(metal, binding = 3) uniform ubo3 {
S uboStructWithAtomicMember; // invalid
};
layout(metal, binding = 4) uniform ubo4 {
S uboStructWithAtomicMemberArray[2]; // invalid
};
layout(metal, binding = 5) uniform ubo5 {
NestedS uboStructWithNestedAtomicMember; // invalid
};
layout(metal, binding = 6) readonly buffer roSsbo1 {
atomic_uint readonlySsboAtomic; // invalid
};
layout(metal, binding = 7) readonly buffer roSsbo2 {
atomicUint readonlySsboAtomicArray[2]; // invalid
};
layout(metal, binding = 8) readonly buffer roSsbo3 {
S readonlySsboStructWithAtomicMember; // invalid
};
layout(metal, binding = 9) readonly buffer roSsbo4 {
S readonlySsboStructWithAtomicMemberArray[2]; // invalid
};
layout(metal, binding = 10) readonly buffer roSsbo5 {
NestedS readonlySsboStructWithNestedAtomicMember; // invalid
};
void main() {
atomicUint localAtomic; // invalid
atomic_uint localAtomicArray[2]; // invalid
S localStructWithAtomicMember; // invalid
S localStructWithAtomicMemberArray[2]; // invalid
}
/*%%*
atomics are only permitted in workgroup variables and writable storage blocks
atomics are only permitted in workgroup variables and writable storage blocks
atomics are only permitted in workgroup variables and writable storage blocks
atomics are only permitted in workgroup variables and writable storage blocks
atomics are only permitted in workgroup variables and writable storage blocks
variables of type 'ubo1' may not be uniform
caused by:
atomics are only permitted in workgroup variables and writable storage blocks
variables of type 'ubo2' may not be uniform
caused by:
atomics are only permitted in workgroup variables and writable storage blocks
variables of type 'ubo3' may not be uniform
caused by:
atomics are only permitted in workgroup variables and writable storage blocks
variables of type 'ubo4' may not be uniform
caused by:
atomics are only permitted in workgroup variables and writable storage blocks
variables of type 'ubo5' may not be uniform
caused by:
atomics are only permitted in workgroup variables and writable storage blocks
atomics are only permitted in workgroup variables and writable storage blocks
atomics are only permitted in workgroup variables and writable storage blocks
atomics are only permitted in workgroup variables and writable storage blocks
atomics are only permitted in workgroup variables and writable storage blocks
atomics are only permitted in workgroup variables and writable storage blocks
atomics are only permitted in workgroup variables and writable storage blocks
atomics are only permitted in workgroup variables and writable storage blocks
atomics are only permitted in workgroup variables and writable storage blocks
atomics are only permitted in workgroup variables and writable storage blocks
*%%*/