yum-mirror/slang

Making it easier to work with shaders

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

Harsh Aggarwal (NVIDIA)Fix 7723 - Add autodiff tests (#7919)d10732742

master
937 B36 linesraw
1// Test calling differentiable generic function with inout generic parameter.
2
3//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj -output-using-type
4//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj -output-using-type
5//TEST(compute):COMPARE_COMPUTE_EX:-cuda -compute -shaderobj -output-using-type
6
7//TEST_INPUT:ubuffer(data=[0 0 0 0 0], stride=4):out,name=outputBuffer
8RWStructuredBuffer<float> outputBuffer;
9
10[anyValueSize(16)]
11interface IInterface
12{
13    [mutating]
14    float sample();
15}
16
17struct A : IInterface
18{
19    float z;
20    [mutating]
21    float sample() { z = z + 1.0; return 1.0; }
22};
23
24[ForwardDifferentiable]
25float sqr<T:IInterface>(inout T obj, float x)
26{
27    return (no_diff obj.sample()) + x*x;
28}
29
30[numthreads(1, 1, 1)]
31void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID)
32{
33    A obj;
34    obj.z = 0.0;
35    outputBuffer[0] = __fwd_diff(sqr)(obj, DifferentialPair<float>(2.0, 1.0)).d;
36}