yum-mirror/slang
Making it easier to work with shaders
git clone https://git.yummers.dev/yum-mirror/slang
a58675b16
master
1//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=CHECK):-cpu -compute -shaderobj 2//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=CHECK):-slang -compute -shaderobj 3//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=CHECK):-slang -compute -dx12 -shaderobj 4//TEST(compute, vulkan):COMPARE_COMPUTE(filecheck-buffer=CHECK):-vk -compute -shaderobj 5//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=CHECK):-cuda -compute -shaderobj 6 7//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0], stride=4):out,name outputBuffer 8 9RWStructuredBuffer<int> outputBuffer; 10 11struct Thing<each T> 12{ 13 int val; 14 Tuple<expand each T> tuple; 15}; 16 17int tupleSize1<T>(T vals) 18{ 19 return sizeof(Tuple<T>); 20} 21 22int tupleSize2<each T>(T vals) 23{ 24 return sizeof(Tuple<expand each T>); 25} 26 27int tupleSize3<each T>(T vals) 28{ 29 return sizeof(Tuple<int, expand each T>); 30} 31 32int tupleSize4<each T>(T vals) 33{ 34 return sizeof(Thing<expand each T>); 35} 36 37[numthreads(1, 1, 1)] 38void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID) 39{ 40 outputBuffer[0] = tupleSize2(); // CHECK: 0 41 outputBuffer[1] = tupleSize3(); // CHECK-NEXT: 4 42 outputBuffer[2] = tupleSize4(); // CHECK-NEXT: 4 43 44 outputBuffer[3] = tupleSize1(1); // CHECK-NEXT: 4 45 outputBuffer[4] = tupleSize2(1,2); // CHECK-NEXT: 8 46 outputBuffer[5] = tupleSize3(1,2,3); // CHECK-NEXT: 10 47 outputBuffer[6] = tupleSize4(1,2,3,4); // CHECK-NEXT: 14 48}