blob: 378988479df20ed092a37aa3860208c1c3fc8109 [file] [log] [blame]
struct MyStruct {
uint a;
uint b;
uint c;
};
struct MyStructs {
uint count;
MyStruct data[];
};
StructuredBuffer<MyStructs> sb;
StructuredBuffer<MyStruct> o;
groupshared MyStruct s[128];
static const MyStruct deflt = { 1u, 2u, 3u };
[numthreads(128, 1, 1)]
void main(uint id : SV_GroupIndex)
{
s[0] = deflt;
uint count = sb.Load(0).count;
MyStruct ms = id > count ? s[id - count] : sb.Load(0).data[id];
InterlockedAdd(o[0].a, ms.a);
InterlockedAdd(o[0].b, ms.b);
InterlockedAdd(o[0].c, ms.c);
}