yum-mirror/slang
Making it easier to work with shaders
git clone https://git.yummers.dev/yum-mirror/slang
f02b08490
master
1// switch.slang 2 3// Test active mask synthesis for a trivial `switch` statement 4 5//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute -shaderobj 6//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj 7//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -profile cs_6_0 -xslang -DHACK -shaderobj 8//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -xslang -DHACK -shaderobj 9//TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute -render-features cuda_sm_7_0 10 11//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0], stride=4):out,name buffer 12RWStructuredBuffer<int> buffer; 13 14#define THREAD_COUNT 4 15#define LOC_COUNT 5 16#define WRITE(LOC) buffer[tid + (LOC)*THREAD_COUNT] = 0xA0000000 | (tid << 24) | (LOC << 8) | int(WaveGetActiveMask()) 17 18//TEST_INPUT:cbuffer(data=[0 1]):name C 19cbuffer C 20{ 21 int alwaysFalse; 22 int alwaysTrue; 23} 24 25void test(int tid) 26{ 27 switch(tid) 28 { 29 case 0: 30 WRITE(0); 31 break; 32 33 case 1: 34 WRITE(1); 35 break; 36 37 case 2: 38 WRITE(2); 39 break; 40 41 default: 42 WRITE(3); 43 break; 44 } 45 WRITE(4); 46} 47 48[numthreads(THREAD_COUNT, 1, 1)] 49void computeMain(int3 dispatchThreadID : SV_DispatchThreadID) 50{ 51 test(dispatchThreadID.x); 52}