yum-mirror/slang
Making it easier to work with shaders
git clone https://git.yummers.dev/yum-mirror/slang
a4345725a
master
1//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=CHECK): -shaderobj -output-using-type 2 3// Test that a generic interface method in a generic interface 4// can have a body providing default implementation. 5 6interface IFoo<int v> 7{ 8 int getVal(); 9 int getGreaterVal<int x>() 10 { 11 return getVal() + x + v; 12 } 13} 14 15struct Impl : IFoo<2> 16{ 17 int getVal() 18 { 19 return 42; 20 } 21 22 // Using the default implementation for getGreaterVal. 23} 24 25struct Impl2 : IFoo<2> 26{ 27 int getVal() 28 { 29 return 42; 30 } 31 32 // overriding default implementation. 33 override int getGreaterVal<int x>() 34 { 35 return 100 + x; 36 } 37} 38 39int test<int y, T:IFoo<y>>(T v) { return v.getGreaterVal<1>(); } 40 41//TEST_INPUT: set resultBuffer = out ubuffer(data=[0 0 0 0], stride=4) 42RWStructuredBuffer<int> resultBuffer; 43 44[numthreads(1,1,1)] 45void computeMain() 46{ 47 Impl impl = {}; 48 int result = test(impl); 49 resultBuffer[0] = result; 50 // CHECK: 45 51 52 Impl2 impl2 = {}; 53 resultBuffer[1] = test(impl2); 54 // CHECK: 101 55}