yum-mirror/slang
Making it easier to work with shaders
git clone https://git.yummers.dev/yum-mirror/slang
07f21ee31
master
1//TEST:SIMPLE(filecheck=CHECK): -target hlsl -entry computeMain -stage compute 2 3// Test for requirment/implementation conformance given mismatch 4 5public interface IAtomicAddable_Error1 6{ 7 [require(sm_5_0, glsl)] 8 [require(sm_5_0, hlsl)] 9 public void atomicAdd(RWByteAddressBuffer buf, uint addr, int64_t value); 10} 11public struct AtomicAddable_Error1 : IAtomicAddable_Error1 12{ 13 [require(sm_5_0, glsl)] 14 // CHECK: ([[# @LINE+1]]): error 36118: {{.*}}hlsl 15 public void atomicAdd(RWByteAddressBuffer buf, uint addr, int64_t value) { } 16} 17 18// ([[# @LINE-9]]): note: see declaration of 'atomicAdd' 19 20public interface IAtomicAddable_Error2 21{ 22 [require(sm_5_0, glsl)] 23 public void atomicAdd(RWByteAddressBuffer buf, uint addr, int64_t value); 24} 25public struct AtomicAddable_Error2 : IAtomicAddable_Error2 26{ 27 [require(sm_5_0, glsl)] 28 [require(sm_5_0, hlsl)] 29 // CHECK: ([[# @LINE+1]]): error 36108: {{.*}}hlsl 30 public void atomicAdd(RWByteAddressBuffer buf, uint addr, int64_t value) { } 31} 32 33// ([[# @LINE-9]]): note: see declaration of 'atomicAdd' 34 35// Test that we do not error (should be implicitly inferring capabilities) 36// CHECK-NOT: error 37 38public interface IAtomicAddable3 39{ 40 public void atomicAdd(RWByteAddressBuffer buf, uint addr, int value); 41} 42 43public struct AtomicAddable_Error4 : IAtomicAddable3 44{ 45 public void atomicAdd(RWByteAddressBuffer buf, uint addr, int value) { buf.InterlockedAdd(addr, value); } 46} 47 48public struct AtomicAddable_Error5 : IAtomicAddable3 49{ 50 public void atomicAdd(RWByteAddressBuffer buf, uint addr, int value) { buf.InterlockedAddI64(addr, value); } 51} 52 53[numthreads(1,1,1)] 54void computeMain() 55{ 56}