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.1 KiB50 linesraw
1//TEST(compute):COMPARE_COMPUTE: -shaderobj
2//TEST(compute):COMPARE_COMPUTE:-cpu -shaderobj
3
4// Confirm that generics syntax can be used in user
5// code and generates valid output.
6
7//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name=outputBuffer
8RWStructuredBuffer<float4> outputBuffer;
9
10interface IElement
11{
12    float4 getValue();
13};
14
15struct SingleElement : IElement
16{
17    float4 value;
18    float4 getValue()
19    {
20        return value;
21    }
22};
23
24struct ListElement<THead : IElement, TTail : IElement> : IElement
25{
26    THead head;
27    TTail tail;
28    float4 getValue()
29    {
30        return head.getValue() + tail.getValue();
31    }
32};
33
34float4 test<T : IElement>(T val)
35{
36    return val.getValue();
37}
38
39
40[numthreads(1, 1, 1)]
41void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID)
42{
43    ListElement<SingleElement, ListElement<SingleElement, ListElement<SingleElement, SingleElement> > > list;
44    list.head.value = float4(1.0);
45    list.tail.head.value = float4(2.0);
46    list.tail.tail.head.value = float4(3.0);
47    list.tail.tail.tail.value = float4(4.0);
48    float4 outVal = test(list);
49    outputBuffer[0] = outVal;
50}