summaryrefslogtreecommitdiff
path: root/tests/compute
diff options
context:
space:
mode:
authorYong He <yonghe@outlook.com>2019-01-31 13:35:03 -0800
committerGitHub <noreply@github.com>2019-01-31 13:35:03 -0800
commitbcb361db7c5a6f8baa9b2012b9ee9778421f1386 (patch)
tree9e5e1703e3b06e109bae6db136bbc2e816f96a2f /tests/compute
parentc1fe5f295e843d10e24ae0d053fc3813a29aec89 (diff)
parentf20c64c348393602ed2a9c873386345cc4b493e8 (diff)
Merge branch 'master' into crashfix
Diffstat (limited to 'tests/compute')
-rw-r--r--tests/compute/entry-point-uniform-params.slang51
-rw-r--r--tests/compute/entry-point-uniform-params.slang.expected.txt4
-rw-r--r--tests/compute/global-type-param.slang6
3 files changed, 58 insertions, 3 deletions
diff --git a/tests/compute/entry-point-uniform-params.slang b/tests/compute/entry-point-uniform-params.slang
new file mode 100644
index 000000000..f91f7d146
--- /dev/null
+++ b/tests/compute/entry-point-uniform-params.slang
@@ -0,0 +1,51 @@
+// entry-point-uniform-params.slang
+
+// Confirm that `uniform` parameters on
+// entry points are allowed, and work as expected.
+
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
+
+struct Signs
+{
+ int a;
+}
+
+struct Stuff
+{
+ int b;
+}
+
+struct Things
+{
+ int c;
+}
+
+// A shader parameter at global scope should be assigned
+// a register/binding before any related to the entry point.
+
+//TEST_INPUT:cbuffer(data=[1 0 0 0]):dxbinding(0),glbinding(0)
+ConstantBuffer<Signs> signs;
+
+[numthreads(4, 1, 1)]
+void computeMain(
+//TEST_INPUT:cbuffer(data=[2 0 0 0 3 0 0 0]):dxbinding(1),glbinding(1)
+ uniform Stuff stuff,
+ uniform Things things,
+
+//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):dxbinding(0),glbinding(2),out
+ uniform RWStructuredBuffer<int> outputBuffer,
+
+ uint3 dispatchThreadID : SV_DispatchThreadID)
+{
+ int tid = dispatchThreadID.x;
+
+ int val = 0;
+ val = val*16 + signs.a;
+ val = val*16 + stuff.b;
+ val = val*16 + things.c;
+ val = val*16 + tid;
+
+ outputBuffer[tid] = val;
+} \ No newline at end of file
diff --git a/tests/compute/entry-point-uniform-params.slang.expected.txt b/tests/compute/entry-point-uniform-params.slang.expected.txt
new file mode 100644
index 000000000..ef2c43c16
--- /dev/null
+++ b/tests/compute/entry-point-uniform-params.slang.expected.txt
@@ -0,0 +1,4 @@
+1230
+1231
+1232
+1233
diff --git a/tests/compute/global-type-param.slang b/tests/compute/global-type-param.slang
index 2638852eb..f177dcb1d 100644
--- a/tests/compute/global-type-param.slang
+++ b/tests/compute/global-type-param.slang
@@ -28,10 +28,10 @@ struct Impl : IBase
__generic_param TImpl : IBase;
-TImpl impl;
-
[numthreads(1, 1, 1)]
-void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID)
+void computeMain(
+ uniform TImpl impl,
+ uint3 dispatchThreadID : SV_DispatchThreadID)
{
uint tid = dispatchThreadID.x;
float outVal = impl.compute();