summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorYong He <yonghe@outlook.com>2019-01-28 10:47:48 -0800
committerGitHub <noreply@github.com>2019-01-28 10:47:48 -0800
commit016f38981a52dd31aa4d3d35272c37f992a07862 (patch)
treed11ff742f08a25469fa1a86c8b4d0061853fb63d /tests
parentdf9dc5710725d00630831b77ca7005e390383aa6 (diff)
parent962f265df9e1b8549202a9b9543e1bead190638d (diff)
Merge pull request #805 from csyonghe/yong-fix
More fixes to empty-struct parameters
Diffstat (limited to 'tests')
-rw-r--r--tests/cross-compile/glsl-generic-in.slang33
-rw-r--r--tests/cross-compile/glsl-generic-in.slang.glsl69
2 files changed, 102 insertions, 0 deletions
diff --git a/tests/cross-compile/glsl-generic-in.slang b/tests/cross-compile/glsl-generic-in.slang
new file mode 100644
index 000000000..90fe387ba
--- /dev/null
+++ b/tests/cross-compile/glsl-generic-in.slang
@@ -0,0 +1,33 @@
+//TEST:CROSS_COMPILE:-target spirv-assembly -entry main -profile vs_5_0
+interface IField
+{
+ float get();
+};
+struct GIn<TField : IField, TEmptyField>
+{
+ float3 p0;
+ TField field;
+ TEmptyField e;
+};
+struct F : IField
+{
+ float4 v0;
+ float2 v1;
+ float get() { return v0.x + v1.x; }
+};
+struct E
+{
+ float get() {return 1.0;}
+};
+
+struct VOut
+{
+ float4 projPos : SV_POSITION;
+};
+
+VOut main(GIn<F, E> vIn)
+{
+ VOut vout;
+ vout.projPos = float4(vIn.p0, vIn.field.get() + vIn.e.get());
+ return vout;
+} \ No newline at end of file
diff --git a/tests/cross-compile/glsl-generic-in.slang.glsl b/tests/cross-compile/glsl-generic-in.slang.glsl
new file mode 100644
index 000000000..7dbe7feca
--- /dev/null
+++ b/tests/cross-compile/glsl-generic-in.slang.glsl
@@ -0,0 +1,69 @@
+#version 450
+layout(row_major) uniform;
+layout(row_major) buffer;
+
+#line 12 0
+struct F_0
+{
+ vec4 v0_0;
+ vec2 v1_0;
+};
+
+
+#line 16
+float F_get_0(F_0 this_0)
+{
+
+#line 16
+ return this_0.v0_0.x + this_0.v1_0.x;
+}
+
+
+float E_get_0()
+{
+
+#line 20
+ return 1.00000000000000000000;
+}
+
+
+#line 6
+layout(location = 0)
+in vec3 _S1;
+
+layout(location = 1)
+in vec4 _S2;
+
+layout(location = 2)
+in vec2 _S3;
+
+struct GIn_0
+{
+ vec3 p0_0;
+ F_0 field_0;
+};
+
+struct VOut_0
+{
+ vec4 projPos_0;
+};
+
+
+
+void main()
+{
+ GIn_0 _S4 = GIn_0(_S1, F_0(_S2, _S3));
+
+#line 30
+ VOut_0 vout_0;
+ vec3 _S5 = _S4.p0_0;
+
+#line 31
+ float _S6 = F_get_0(_S4.field_0);
+ float _S7 = E_get_0();
+
+#line 31
+ vout_0.projPos_0 = vec4(_S5, _S6 + _S7);
+ gl_Position = vout_0.projPos_0;
+ return;
+} \ No newline at end of file