blob: ed5df57fea8cabbdaff2e7b2e51bd6f07c861201 [file] [log] [blame]
Natalie Chouinard6ee63302024-06-25 20:45:30 +00001RWByteAddressBuffer prevent_dce : register(u0);
2
Natalie Chouinarde9027182024-06-13 18:50:19 +00003RWByteAddressBuffer sb_rw : register(u1);
Antonio Maiorano08f4b552022-05-31 13:20:28 +00004
Ben Clayton1a1b5272023-02-24 17:16:55 +00005uint sb_rwatomicAnd(uint offset, uint value) {
Ben Claytone027e812021-07-09 16:50:14 +00006 uint original_value = 0;
Ben Clayton1a1b5272023-02-24 17:16:55 +00007 sb_rw.InterlockedAnd(offset, value, original_value);
Ben Claytone027e812021-07-09 16:50:14 +00008 return original_value;
9}
10
Ben Clayton6a772362021-06-18 18:56:13 +000011
Natalie Chouinarde9027182024-06-13 18:50:19 +000012uint atomicAnd_85a8d9() {
Ben Clayton1a1b5272023-02-24 17:16:55 +000013 uint res = sb_rwatomicAnd(0u, 1u);
Natalie Chouinarde9027182024-06-13 18:50:19 +000014 return res;
Ben Claytone6d171a2021-06-18 18:56:13 +000015}
Ben Clayton6a772362021-06-18 18:56:13 +000016
Ben Claytone6d171a2021-06-18 18:56:13 +000017void fragment_main() {
Natalie Chouinarde9027182024-06-13 18:50:19 +000018 prevent_dce.Store(0u, asuint(atomicAnd_85a8d9()));
Ben Claytone6d171a2021-06-18 18:56:13 +000019 return;
20}
21
22[numthreads(1, 1, 1)]
23void compute_main() {
Natalie Chouinarde9027182024-06-13 18:50:19 +000024 prevent_dce.Store(0u, asuint(atomicAnd_85a8d9()));
Ben Claytone6d171a2021-06-18 18:56:13 +000025 return;
26}