yum-mirror/slang

Making it easier to work with shaders

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

Anders LeinoEnable a bunch of WGPU tests (#5513)43df1da01

master
1018 B46 linesraw
1//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=CHECK): -shaderobj -output-using-type
2//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=CHECK): -vk -shaderobj -output-using-type
3//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=CHECK): -cpu -shaderobj -output-using-type
4
5//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name=outputBuffer
6RWStructuredBuffer<float> outputBuffer;
7
8struct S<T>
9{
10    T v;
11    __init(T x)
12    {
13        v = x;
14    }
15}
16
17
18S<T> makeS<T>(T x)
19{
20    return S<T>(x);
21}
22
23void accept<each T>(expand each T value) {}
24
25void writeSingle<T : __BuiltinFloatingPointType>(T value)
26{
27    static int counter = 0;
28    outputBuffer[counter++] = __realCast<float>(value);
29    //return value;
30}
31
32void write<each T : __BuiltinFloatingPointType>(expand S<each T> value)
33{
34    accept(expand writeSingle((each value).v));
35}
36
37[numthreads(1,1,1)]
38void computeMain()
39{
40    // CHECK: 1.0
41    // CHECK: 2.0
42    // CHECK: 3.0
43    // CHECK: 4.0
44    write(makeS(1.0), makeS(2.0), makeS(3.0), makeS(4.0));
45    write();
46}