29 lines
984 B
Plaintext
29 lines
984 B
Plaintext
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);
|
|
}
|