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 KiB44 linesraw
1//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=CHECK):-shaderobj -output-using-type
2//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=CHECK):-dx12 -shaderobj -output-using-type
3//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=CHECK):-cpu -shaderobj -output-using-type
4//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=CHECK):-vk -shaderobj -output-using-type
5
6struct DiffFunctor : IDifferentiableFunc<float, float>
7{
8    [Differentiable]
9    float operator()(float p)
10    {
11        return p + 1;
12    }
13}
14
15float apply(IMutatingFunc<float, float> f, float p)
16{
17    return f(p);
18}
19
20[Differentiable]
21float applyDiff(IDifferentiableFunc<float, float> f, float p)
22{
23    return f(p);
24}
25
26[Differentiable]
27TR applyDiffGen<TR : IDifferentiable, each TP : IDifferentiable>(IDifferentiableFunc<TR, TP> f, expand each TP p)
28{
29    return f(expand each p);
30}
31
32//TEST_INPUT:ubuffer(data=[0 3 2 2], stride=4):out,name=outputBuffer
33RWStructuredBuffer<uint> outputBuffer;
34
35[numthreads(1, 1, 1)]
36void computeMain(uint tid: SV_DispatchThreadID)
37{
38    // CHECK: 4
39    outputBuffer[0] = (uint)apply(DiffFunctor(), 3.0);
40    // CHECK: 1
41    outputBuffer[1] = (uint)fwd_diff(applyDiff)(DiffFunctor(), diffPair(2.0, 1.0)).d;
42    // CHECK: 1
43    outputBuffer[2] = (uint)fwd_diff(applyDiffGen<float, float>)(DiffFunctor(), diffPair(2.0, 1.0)).d;
44}