summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/compute/interface-shader-param-in-struct.slang6
-rw-r--r--tests/language-feature/shader-params/interface-shader-param-ordinary.slang53
-rw-r--r--tests/language-feature/shader-params/interface-shader-param-ordinary.slang.expected.txt4
3 files changed, 60 insertions, 3 deletions
diff --git a/tests/compute/interface-shader-param-in-struct.slang b/tests/compute/interface-shader-param-in-struct.slang
index 62aa093ed..5080e4d57 100644
--- a/tests/compute/interface-shader-param-in-struct.slang
+++ b/tests/compute/interface-shader-param-in-struct.slang
@@ -3,9 +3,9 @@
// This test puts interface-type shader parameters
// inside of structure types to make sure that works
-//DISABLED_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
-//DISABLED_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -profile sm_6_0 -use-dxil
-//DISABLED_TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -profile sm_6_0 -use-dxil
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
// A lot of the setup is the same as for `interface-shader-param`,
// so look there if you want the comments.
diff --git a/tests/language-feature/shader-params/interface-shader-param-ordinary.slang b/tests/language-feature/shader-params/interface-shader-param-ordinary.slang
new file mode 100644
index 000000000..8d475254f
--- /dev/null
+++ b/tests/language-feature/shader-params/interface-shader-param-ordinary.slang
@@ -0,0 +1,53 @@
+// interface-shader-param-ordinary.slang
+
+// This test is for interface-type shader parameters that
+// get specialized to types that include "ordinary" data
+// but also don't fit into the allocation provided for
+// them in the existential-type field itself.
+
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -profile sm_6_0 -use-dxil
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
+
+interface IModifier
+{
+ int modify(int value);
+}
+
+//TEST_INPUT:set gOutputBuffer = out ubuffer(data=[0 0 0 0], stride=4)
+RWStructuredBuffer<int> gOutputBuffer;
+
+//TEST_INPUT:set delta = 65536
+uniform int delta;
+
+//TEST_INPUT:set gModifier = new MyModifier{ ubuffer(data=[4 3 2 1], stride=4), 3 } }
+uniform IModifier gModifier;
+
+int test(int val)
+{
+ return gModifier.modify(val) + delta;
+}
+
+
+[numthreads(4, 1, 1)]
+void computeMain(
+ uint3 dispatchThreadID : SV_DispatchThreadID)
+{
+ let tid = dispatchThreadID.x;
+
+ let inputVal : int = tid;
+ let outputVal = test(inputVal);
+
+ gOutputBuffer[tid] = outputVal;
+}
+
+struct MyModifier : IModifier
+{
+ RWStructuredBuffer<int> data;
+ int extra;
+
+ int modify(int val)
+ {
+ return val*65536 + data[val]*256 + val*extra;
+ }
+}
diff --git a/tests/language-feature/shader-params/interface-shader-param-ordinary.slang.expected.txt b/tests/language-feature/shader-params/interface-shader-param-ordinary.slang.expected.txt
new file mode 100644
index 000000000..434576d50
--- /dev/null
+++ b/tests/language-feature/shader-params/interface-shader-param-ordinary.slang.expected.txt
@@ -0,0 +1,4 @@
+10400
+20303
+30206
+40109