yum-mirror/slang

Making it easier to work with shaders

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

Harsh Aggarwal (NVIDIA)Fix#8083: Batch-7: Enable cuda tests (#8267)7b4d02803

master
1.1 KiB73 linesraw
1//TEST(compute):COMPARE_COMPUTE: -shaderobj
2//TEST(compute):COMPARE_COMPUTE: -cuda -shaderobj
3
4
5//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name=outputBuffer
6RWStructuredBuffer<int> outputBuffer;
7
8interface IAdd
9{
10    int addf(int u, int v);
11}
12
13interface ISub
14{
15    int subf(int u, int v);
16}
17
18interface IAddAndSub : IAdd, ISub
19{
20}
21
22struct Simple : IAddAndSub
23{
24    int addf(int u, int v)
25    {
26        return u+v;
27    }
28    int subf(int u, int v)
29    {
30        return u-v;
31    }
32};
33
34int testAdd<T:IAdd>(T t)
35{
36    return t.addf(1, 1);
37}
38
39interface IAssoc
40{
41    associatedtype AT : IAdd;
42}
43
44struct AssocImpl : IAssoc
45{
46    typedef Simple AT;
47};
48
49int testAdd2<T:IAssoc>(T assoc)
50{
51    T.AT obj = T.AT();
52    return obj.addf(1, 1);
53}
54
55int testSub<T:ISub>(T t, int base)
56{
57    return t.subf(base, 1);
58}
59
60[numthreads(4, 1, 1)]
61void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID)
62{
63    AssocImpl s;
64
65    // expected value: 1 + 1 = 2
66	int outVal = testAdd2(s);
67    Simple s1;
68
69    // expected value: 2 + (2-1) = 3
70    outVal += testSub(s1, outVal);
71
72	outputBuffer[dispatchThreadID.x] = outVal;
73}