blob: 1a355280597c679cfa428c5c44e7cf6c72c9e006 [file] [log] [blame]
layout(local_size_x = 64) in;
struct S {
atomicUint structMemberAtomic; // valid
atomicUint structMemberAtomicArray[2]; // valid
};
struct NestedS {
S nestedStructWithAtomicMember; // valid
};
layout(metal, binding = 0) buffer ssbo {
atomicUint ssboAtomic; // valid
atomicUint ssboAtomicArray[2]; // valid
S ssboStructWithAtomicMember; // valid
S ssboStructWithAtomicMemberArray[2]; // valid
NestedS ssboNestedStructWithAtomicMember; // valid
};
workgroup atomicUint wgAtomic; // valid
workgroup atomicUint wgAtomicArray[2]; // valid
workgroup NestedS wgNestedStructWithAtomicMember; // valid;
void main() {
// Do something with each workgroup atomic to prevent them from getting eliminated as
// dead globals.
atomicAdd(wgAtomicArray[1], atomicLoad(wgAtomic));
atomicAdd(wgAtomicArray[0], atomicLoad(wgAtomicArray[1]));
atomicAdd(wgNestedStructWithAtomicMember.nestedStructWithAtomicMember.structMemberAtomic, 1);
}