yum-mirror/slang
Making it easier to work with shaders
git clone https://git.yummers.dev/yum-mirror/slang
2a5d5b323
master
1//TEST(compute):COMPARE_COMPUTE:-dx11 -shaderobj 2//TEST(compute):COMPARE_COMPUTE:-vk -shaderobj 3//TEST(compute):COMPARE_COMPUTE:-cpu -xslang -disable-specialization -shaderobj 4//TEST(compute):COMPARE_COMPUTE:-cuda -xslang -disable-specialization -shaderobj 5 6// Test dynamic dispatch code gen for generic-typed return values. 7[anyValueSize(8)] 8interface IInterface 9{ 10 [mutating] 11 void SetVal(int inVal); 12 int Compute(); 13}; 14 15T CreateT_Inner<T:IInterface>(int inVal) 16{ 17 T obj; 18 obj.SetVal(inVal); 19 return obj; 20} 21 22T CreateT<T:IInterface>(int inVal) 23{ 24 return CreateT_Inner<T>(inVal); 25} 26 27struct Impl : IInterface 28{ 29 int base; 30 [mutating] 31 void SetVal(int inVal) 32 { 33 base = inVal; 34 } 35 int Compute() 36 { 37 return base; 38 } 39}; 40 41int test() 42{ 43 var obj = CreateT<Impl>(3); 44 var obj2 = CreateT_Inner<Impl>(1); 45 return obj.Compute() + obj2.Compute(); 46} 47 48//TEST_INPUT:ubuffer(data=[0 1 2 3], stride=4):out,name=outputBuffer 49RWStructuredBuffer<int> outputBuffer; 50 51[numthreads(4, 1, 1)] 52void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID) 53{ 54 uint tid = dispatchThreadID.x; 55 int outVal = test(); 56 outputBuffer[tid] = outVal; 57}