yum-mirror/slang
Making it easier to work with shaders
git clone https://git.yummers.dev/yum-mirror/slang
6f6103c4d
master
1//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=CHECK): -vk 2//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=CHECK): -dx12 3//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=CHECK): -cpu 4 5// CHECK: 1 6// CHECK-NEXT: 0 7// CHECK-NEXT: 2 8// CHECK-NEXT: 3 9 10//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name=outputBuffer 11RWStructuredBuffer<int> outputBuffer; 12 13interface IThing 14{ 15 void writeInfo(int i); 16} 17 18enum FirstEnum 19{ 20 A, 21 B 22}; 23 24enum SecondEnum 25{ 26 C, 27 D=3 28}; 29 30extension FirstEnum: IThing 31{ 32 void writeInfo(int i) 33 { 34 outputBuffer[i] = 1; 35 outputBuffer[i+1] = this; 36 } 37} 38 39extension SecondEnum: IThing 40{ 41 void writeInfo(int i) 42 { 43 outputBuffer[i] = 2; 44 outputBuffer[i+1] = this; 45 } 46} 47 48void indirectionFunc<T: IThing>(T val, int i) 49{ 50 val.writeInfo(i); 51} 52 53[numthreads(1, 1, 1)] 54void computeMain(int3 dispatchThreadID: SV_DispatchThreadID) 55{ 56 indirectionFunc(FirstEnum.A, 0); 57 indirectionFunc(SecondEnum.D, 2); 58}