yum-mirror/slang
Making it easier to work with shaders
git clone https://git.yummers.dev/yum-mirror/slang
43df1da01
master
1//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=CHECK): -shaderobj -output-using-type 2//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=CHECK): -vk -shaderobj -output-using-type 3//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=CHECK): -cpu -shaderobj -output-using-type 4 5//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name=outputBuffer 6RWStructuredBuffer<float> outputBuffer; 7 8struct S<T> 9{ 10 T v; 11 __init(T x) 12 { 13 v = x; 14 } 15} 16 17 18S<T> makeS<T>(T x) 19{ 20 return S<T>(x); 21} 22 23void accept<each T>(expand each T value) {} 24 25void writeSingle<T : __BuiltinFloatingPointType>(T value) 26{ 27 static int counter = 0; 28 outputBuffer[counter++] = __realCast<float>(value); 29 //return value; 30} 31 32void write<each T : __BuiltinFloatingPointType>(expand S<each T> value) 33{ 34 accept(expand writeSingle((each value).v)); 35} 36 37[numthreads(1,1,1)] 38void computeMain() 39{ 40 // CHECK: 1.0 41 // CHECK: 2.0 42 // CHECK: 3.0 43 // CHECK: 4.0 44 write(makeS(1.0), makeS(2.0), makeS(3.0), makeS(4.0)); 45 write(); 46}