summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/spirv/matrix-vertex-input.slang23
-rw-r--r--tests/spirv/optional-vertex-output.slang26
2 files changed, 49 insertions, 0 deletions
diff --git a/tests/spirv/matrix-vertex-input.slang b/tests/spirv/matrix-vertex-input.slang
new file mode 100644
index 000000000..fc4af8c61
--- /dev/null
+++ b/tests/spirv/matrix-vertex-input.slang
@@ -0,0 +1,23 @@
+//TEST:SIMPLE(filecheck=CHECK): -target spirv
+// CHECK: OpVectorTimesMatrix
+
+struct Vertex
+{
+ float4x4 m;
+ float4 pos;
+}
+
+struct VertexOut
+{
+ float4 pos : SV_Position;
+ float4 color;
+}
+
+[shader("vertex")]
+VertexOut vertMain(Vertex v)
+{
+ VertexOut o;
+ o.pos = mul(v.m, v.pos);
+ o.color = v.pos;
+ return o;
+} \ No newline at end of file
diff --git a/tests/spirv/optional-vertex-output.slang b/tests/spirv/optional-vertex-output.slang
new file mode 100644
index 000000000..df15befa2
--- /dev/null
+++ b/tests/spirv/optional-vertex-output.slang
@@ -0,0 +1,26 @@
+//TEST:SIMPLE(filecheck=CHECK): -target spirv
+
+// Test that we can use Optional<T> or bool types in varying input or outputs.
+
+// CHECK: OpDecorate %i_inA_value Location 0
+// CHECK: OpDecorate %i_inA_hasValue Location 1
+// CHECK: OpDecorate %entryPointParam_vertMain_a_value Location 0
+// CHECK: OpDecorate %entryPointParam_vertMain_a_hasValue Location 1
+
+struct VIn {
+ Optional<float> inA;
+}
+
+struct VSOut {
+ Optional<float> a;
+ bool outputValues[3];
+};
+
+[shader("vertex")]
+VSOut vertMain(VIn i)
+{
+ VSOut o;
+ o.a = i.inA;
+ o.outputValues = { true, false, true };
+ return o;
+} \ No newline at end of file