yum-mirror/slang

Making it easier to work with shaders

git clone https://git.yummers.dev/yum-mirror/slang

James Helferty (NVIDIA)render-test: Change D3D12 default to sm_6_5 (#8320)f02b08490

master
1.1 KiB52 linesraw
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}