yum-mirror/slang

Making it easier to work with shaders

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

James Helferty (NVIDIA)render-test: Change D3D12 default to sm_6_5 (#8320)f02b08490

master
1.3 KiB53 linesraw
1//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=CHECK): -d3d11 -shaderobj -output-using-type
2//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=CHECK): -d3d12 -shaderobj -output-using-type
3//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=CHECK): -vk -shaderobj -output-using-type
4//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=CHECK): -cpu -shaderobj -output-using-type
5
6interface IFoo
7{
8    float getVal();
9}
10interface IElement
11{
12    float getElementVal();
13}
14
15struct Elem : IElement
16{
17    float x;
18    float getElementVal()
19    {
20        return x;
21    }
22}
23
24struct Impl<T1:IElement, T2:IElement> : IFoo
25{
26    float v1;
27    RWStructuredBuffer<T1> buffer0;
28    RWStructuredBuffer<T2> buffer1;
29
30    float getVal()
31    {
32        return buffer0[0].getElementVal() + buffer1[0].getElementVal() + v1;
33    }
34}
35
36//TEST_INPUT:set cparams = new Params { new Impl<Elem,Elem>{2.0, ubuffer(data=[1.0], stride = 4), ubuffer(data=[2.0], stride = 4)}, 1.0, ubuffer(data=[1.0], stride=4) }
37//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name=outputBuffer
38
39struct Params
40{
41    ParameterBlock<Impl<Elem, Elem>> gFoo;
42    float v;
43    RWStructuredBuffer<float> buffer;
44}
45
46ConstantBuffer<Params> cparams;
47RWStructuredBuffer<float> outputBuffer;
48[numthreads(1, 1, 1)]
49void computeMain()
50{
51    // CHECK: 7.0
52    outputBuffer[0] = cparams.gFoo.getVal() + cparams.v + cparams.buffer[0];
53}