diff options
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/spirv/matrix-vertex-input.slang | 23 | ||||
| -rw-r--r-- | tests/spirv/optional-vertex-output.slang | 26 |
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 |
