summaryrefslogtreecommitdiff
path: root/tests/compute/transitive-interface.slang
diff options
context:
space:
mode:
Diffstat (limited to 'tests/compute/transitive-interface.slang')
-rw-r--r--tests/compute/transitive-interface.slang30
1 files changed, 18 insertions, 12 deletions
diff --git a/tests/compute/transitive-interface.slang b/tests/compute/transitive-interface.slang
index 6de12bdd4..bb525b9b5 100644
--- a/tests/compute/transitive-interface.slang
+++ b/tests/compute/transitive-interface.slang
@@ -1,16 +1,17 @@
//TEST(compute):COMPARE_COMPUTE:
//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(0),out
-RWStructuredBuffer<float> outputBuffer;
+
+RWStructuredBuffer<int> outputBuffer;
interface IAdd
{
- float addf(float u, float v);
+ int addf(int u, int v);
}
interface ISub
{
- float subf(float u, float v);
+ int subf(int u, int v);
}
interface IAddAndSub : IAdd, ISub
@@ -19,19 +20,19 @@ interface IAddAndSub : IAdd, ISub
struct Simple : IAddAndSub
{
- float addf(float u, float v)
+ int addf(int u, int v)
{
return u+v;
}
- float subf(float u, float v)
+ int subf(int u, int v)
{
return u-v;
}
};
-float testAdd<T:IAdd>(T t)
+int testAdd<T:IAdd>(T t)
{
- return t.addf(1.0, 1.0);
+ return t.addf(1, 1);
}
interface IAssoc
@@ -44,23 +45,28 @@ struct AssocImpl : IAssoc
typedef Simple AT;
};
-float testAdd2<T:IAssoc>(T assoc)
+int testAdd2<T:IAssoc>(T assoc)
{
T.AT obj;
- return obj.addf(1.0, 1.0);
+ return obj.addf(1, 1);
}
-float testSub<T:ISub>(T t, float base)
+int testSub<T:ISub>(T t, int base)
{
- return t.subf(base, 1.0);
+ return t.subf(base, 1);
}
[numthreads(4, 1, 1)]
void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID)
{
AssocImpl s;
- float outVal = testAdd2(s);
+
+ // expected value: 1 + 1 = 2
+ int outVal = testAdd2(s);
Simple s1;
+
+ // expected value: 2 + (2-1) = 3
outVal += testSub(s1, outVal);
+
outputBuffer[dispatchThreadID.x] = outVal;
} \ No newline at end of file