unplugged-system/external/skia/resources/sksl/compute/AtomicDeclarations.compute

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);
}