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 0], stride=4):out,name=outputBuffer 6RWStructuredBuffer<int> outputBuffer; 7 8enum MyError 9{ 10 Fail 11}; 12 13int maybeThrowingFunc(int n) throws MyError 14{ 15 if (n == 3) 16 throw MyError.Fail; 17 return n; 18} 19 20void testFunc(int n, inout int i) 21{ 22 int value = n; 23 defer 24 { 25 outputBuffer[i++] = value; 26 } 27 28 defer 29 { 30 do 31 { 32 let m = try maybeThrowingFunc(n); 33 value += m; 34 } 35 catch(err: MyError) 36 { 37 defer 38 { 39 outputBuffer[i++] = 0x80; 40 } 41 outputBuffer[i++] = 0xFF; 42 } 43 } 44} 45 46[numthreads(1, 1, 1)] 47void computeMain(int3 dispatchThreadID: SV_DispatchThreadID) 48{ 49 int i = 0; 50 // CHECK: 2 51 testFunc(1, i); 52 // CHECK-NEXT: 4 53 testFunc(2, i); 54 // CHECK-NEXT: FF 55 // CHECK-NEXT: 80 56 // CHECK-NEXT: 3 57 testFunc(3, i); 58}