yum-mirror/slang

Making it easier to work with shaders

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

Tim FoleyConvert more tests to use shader objects (#1659)2a5d5b323

master
1.2 KiB57 linesraw
1//TEST(compute):COMPARE_COMPUTE:-dx11 -shaderobj
2//TEST(compute):COMPARE_COMPUTE:-vk -shaderobj
3//TEST(compute):COMPARE_COMPUTE:-cpu -xslang -disable-specialization -shaderobj
4//TEST(compute):COMPARE_COMPUTE:-cuda -xslang -disable-specialization -shaderobj
5
6// Test dynamic dispatch code gen for generic-typed return values.
7[anyValueSize(8)]
8interface IInterface
9{
10    [mutating]
11    void SetVal(int inVal);
12    int Compute();
13};
14
15T CreateT_Inner<T:IInterface>(int inVal)
16{
17    T obj;
18    obj.SetVal(inVal);
19    return obj;
20}
21
22T CreateT<T:IInterface>(int inVal)
23{
24    return CreateT_Inner<T>(inVal);
25}
26
27struct Impl : IInterface
28{
29    int base;
30    [mutating]
31    void SetVal(int inVal)
32    {
33        base = inVal;
34    }
35    int Compute()
36    {
37        return base;
38    }
39};
40
41int test()
42{
43    var obj = CreateT<Impl>(3);
44    var obj2 = CreateT_Inner<Impl>(1);
45    return obj.Compute() + obj2.Compute();
46}
47
48//TEST_INPUT:ubuffer(data=[0 1 2 3], stride=4):out,name=outputBuffer
49RWStructuredBuffer<int> outputBuffer;
50
51[numthreads(4, 1, 1)]
52void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID)
53{
54    uint tid = dispatchThreadID.x;
55    int outVal = test();
56    outputBuffer[tid] = outVal;
57}