blob: b2297ab6293a0435ffac6d5bb281c946cd6bdd37 [file] [log] [blame]
workgroup atomicUint wgAtomic; // valid
workgroup atomicUint wgAtomicArray[2]; // valid
atomicUint globalAtomic; // invalid
atomicUint globalAtomicArray[2]; // invalid
struct S {
atomicUint structMemberAtomic; // valid
atomicUint 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 {
atomicUint 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 {
atomicUint 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 {
atomicUint 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
atomicUint 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 'atomicUint' may not be uniform
atomics are only permitted in workgroup variables and writable storage blocks
variables of type 'atomicUint[2]' may not be uniform
atomics are only permitted in workgroup variables and writable storage blocks
variables of type 'atomicUint' may not be uniform
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 'atomicUint' may not be uniform
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
*%%*/