yum-mirror/slang
Making it easier to work with shaders
git clone https://git.yummers.dev/yum-mirror/slang
f02b08490
master
1//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=CHECK): -d3d12 -shaderobj -output-using-type 2//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=CHECK): -vk -shaderobj -output-using-type 3 4//TEST_INPUT:set outputBuffer = out ubuffer(data=[0 0 0 0], stride=4) 5RWStructuredBuffer<uint> outputBuffer; 6 7interface ITestB 8{ 9 static void eval<let N : uint>(uint val[N], out uint res[N]); 10}; 11 12struct TestB : ITestB 13{ 14 static void eval<let N : uint>(uint val[N], out uint res[N]) 15 { 16 static const uint scale = 3 * N; 17 for (uint i = 0; i < N; i++) 18 res[i] = scale * val[i]; 19 } 20}; 21 22[numthreads(1, 1, 1)] 23void computeMain(uint3 threadID: SV_DispatchThreadID) 24{ 25 const uint i = threadID.x; 26 27 uint val[4] = { i, i + 1, i + 2, i + 3 }; 28 uint res[4]; 29 30 TestB test; 31 test.eval<4>(val, res); 32 33 // CHECK: 0 34 outputBuffer[0] = res[0]; 35 // CHECK: 12 36 outputBuffer[1] = res[1]; 37 // CHECK: 24 38 outputBuffer[2] = res[2]; 39 // CHECK: 36 40 outputBuffer[3] = res[3]; 41}