ffad50b3c2
Makes HLSL image-load-store look much nicer.
90 lines
2.4 KiB
Plaintext
90 lines
2.4 KiB
Plaintext
RWByteAddressBuffer ssbo : register(u2);
|
|
RWTexture2D<uint> uImage : register(u0);
|
|
RWTexture2D<int> iImage : register(u1);
|
|
|
|
groupshared int int_atomic;
|
|
groupshared uint uint_atomic;
|
|
groupshared int int_atomic_array[1];
|
|
groupshared uint uint_atomic_array[1];
|
|
|
|
void comp_main()
|
|
{
|
|
uint _19;
|
|
InterlockedAdd(uImage[int2(1, 5)], 1u, _19);
|
|
uint _27;
|
|
InterlockedAdd(uImage[int2(1, 5)], 1u, _27);
|
|
iImage[int2(1, 6)] = int(_27).x;
|
|
uint _32;
|
|
InterlockedOr(uImage[int2(1, 5)], 1u, _32);
|
|
uint _34;
|
|
InterlockedXor(uImage[int2(1, 5)], 1u, _34);
|
|
uint _36;
|
|
InterlockedAnd(uImage[int2(1, 5)], 1u, _36);
|
|
uint _38;
|
|
InterlockedMin(uImage[int2(1, 5)], 1u, _38);
|
|
uint _40;
|
|
InterlockedMax(uImage[int2(1, 5)], 1u, _40);
|
|
uint _44;
|
|
InterlockedCompareExchange(uImage[int2(1, 5)], 10u, 2u, _44);
|
|
int _47;
|
|
InterlockedAdd(iImage[int2(1, 6)], 1, _47);
|
|
int _49;
|
|
InterlockedOr(iImage[int2(1, 6)], 1, _49);
|
|
int _51;
|
|
InterlockedXor(iImage[int2(1, 6)], 1, _51);
|
|
int _53;
|
|
InterlockedAnd(iImage[int2(1, 6)], 1, _53);
|
|
int _55;
|
|
InterlockedMin(iImage[int2(1, 6)], 1, _55);
|
|
int _57;
|
|
InterlockedMax(iImage[int2(1, 6)], 1, _57);
|
|
int _61;
|
|
InterlockedCompareExchange(iImage[int2(1, 5)], 10, 2, _61);
|
|
uint _68;
|
|
ssbo.InterlockedAdd(0, 1u, _68);
|
|
uint _70;
|
|
ssbo.InterlockedOr(0, 1u, _70);
|
|
uint _72;
|
|
ssbo.InterlockedXor(0, 1u, _72);
|
|
uint _74;
|
|
ssbo.InterlockedAnd(0, 1u, _74);
|
|
uint _76;
|
|
ssbo.InterlockedMin(0, 1u, _76);
|
|
uint _78;
|
|
ssbo.InterlockedMax(0, 1u, _78);
|
|
uint _80;
|
|
ssbo.InterlockedExchange(0, 1u, _80);
|
|
uint _82;
|
|
ssbo.InterlockedCompareExchange(0, 10u, 2u, _82);
|
|
int _85;
|
|
ssbo.InterlockedAdd(4, 1, _85);
|
|
int _87;
|
|
ssbo.InterlockedOr(4, 1, _87);
|
|
int _89;
|
|
ssbo.InterlockedXor(4, 1, _89);
|
|
int _91;
|
|
ssbo.InterlockedAnd(4, 1, _91);
|
|
int _93;
|
|
ssbo.InterlockedMin(4, 1, _93);
|
|
int _95;
|
|
ssbo.InterlockedMax(4, 1, _95);
|
|
int _97;
|
|
ssbo.InterlockedExchange(4, 1, _97);
|
|
int _99;
|
|
ssbo.InterlockedCompareExchange(4, 10, 2, _99);
|
|
int _102;
|
|
InterlockedAdd(int_atomic, 10, _102);
|
|
uint _105;
|
|
InterlockedAdd(uint_atomic, 10u, _105);
|
|
int _110;
|
|
InterlockedAdd(int_atomic_array[0], 10, _110);
|
|
uint _115;
|
|
InterlockedAdd(uint_atomic_array[0], 10u, _115);
|
|
}
|
|
|
|
[numthreads(1, 1, 1)]
|
|
void main()
|
|
{
|
|
comp_main();
|
|
}
|