yum-mirror/slang

Making it easier to work with shaders

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

Yong HeMetal: misc fixes and enable more tests. (#4374)cfef0c6f6

master
1.3 KiB51 linesraw
1
2//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute -shaderobj
3//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj
4//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -shaderobj
5//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj
6//TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute -shaderobj
7
8//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0], stride=4):out,name outputBuffer
9
10RWStructuredBuffer<int> outputBuffer;
11
12// Check Enum without base type
13
14enum Enum 
15{
16    A = 10,
17    B = 20,
18};
19
20enum Enum8 : uint8_t
21{
22    A = 20,
23    B = 19,
24};
25
26// Check type aliases
27
28typedef Enum EnumTypeDef;
29typealias EnumTypeAlias = Enum;
30
31[numthreads(8, 1, 1)]
32void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID)
33{
34    const int idx = asint(dispatchThreadID.x);
35
36    int size = 0;
37    switch (idx)
38    {   
39        case 0:     size = sizeof(Enum); break;
40        case 1:     size = sizeof(EnumTypeDef); break;
41        case 2:     size = sizeof(EnumTypeAlias); break;
42        case 3:     size = sizeof(idx); break;
43        case 4:     size = sizeof(Enum::A); break;
44        case 5:     size = sizeof(Enum.B); break;
45        case 6:     size = sizeof(Enum8::A); break;
46        case 7:     size = sizeof(Enum8.B); break;
47        default: break;
48    }
49
50    outputBuffer[idx] = size;
51}