yum-mirror/slang
Making it easier to work with shaders
git clone https://git.yummers.dev/yum-mirror/slang
a443350a6
master
1// Test enums can be implicitly casted to bool. 2 3//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=CHECK): -shaderobj 4 5[Flags] 6enum BitFlags 7{ 8 One, 9 Two, 10 Three 11} 12 13int test<let n : bool>() 14{ 15 return n; 16} 17 18//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name=outputBuffer 19RWStructuredBuffer<int> outputBuffer; 20 21[numthreads(4, 1, 1)] 22void computeMain(int3 dispatchThreadID : SV_DispatchThreadID) 23{ 24 BitFlags x = BitFlags.One | BitFlags.Two; 25 if (x & BitFlags.One) 26 outputBuffer[0] = 1; 27 else 28 outputBuffer[0] = 0; 29 if (x & BitFlags.Three) 30 outputBuffer[1] = 1; 31 else 32 outputBuffer[1] = 0; 33 if (x & BitFlags.Two) 34 outputBuffer[2] = 1; 35 else 36 outputBuffer[2] = 0; 37 38 outputBuffer[3] = test<BitFlags.One & BitFlags.One>(); 39 // CHECK: 1 40 // CHECK: 0 41 // CHECK: 1 42 // CHECK: 1 43}