yum-mirror/slang
Making it easier to work with shaders
git clone https://git.yummers.dev/yum-mirror/slang
57c3f9382
master
1//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=CHECK): -shaderobj 2//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=CHECK): -vk -shaderobj 3//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=CHECK): -cpu -shaderobj 4 5//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name=outputBuffer 6RWStructuredBuffer<int> outputBuffer; 7 8enum MyError1 9{ 10 Fail = 0x10 11}; 12 13enum MyError2 14{ 15 Fail = 0x20 16}; 17 18int f(int n) throws MyError1 19{ 20 if (n == 1) throw MyError1.Fail; 21 return n; 22} 23 24int g(int n) throws MyError2 25{ 26 if (n == 2) throw MyError2.Fail; 27 return n; 28} 29 30void handlerFunc(int i, int n) 31{ 32 do 33 { 34 int a = try f(n); 35 int b = try g(n); 36 int c = a+b+1; 37 outputBuffer[i] = c; 38 } 39 catch(err: MyError1) 40 { 41 outputBuffer[i] = reinterpret<int>(err); 42 } 43 catch 44 { 45 outputBuffer[i] = 0x30; 46 } 47} 48 49[numthreads(1, 1, 1)] 50void computeMain(int3 dispatchThreadID: SV_DispatchThreadID) 51{ 52 int i = 0; 53 handlerFunc(0, 0); // CHECK: 1 54 handlerFunc(1, 1); // CHECK-NEXT: 10 55 handlerFunc(2, 2); // CHECK-NEXT: 30 56 handlerFunc(3, 3); // CHECK-NEXT 7 57}