summaryrefslogtreecommitdiff
path: root/tests/bugs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/bugs')
-rw-r--r--tests/bugs/gh-841.slang19
-rw-r--r--tests/bugs/gh-841.slang.glsl35
2 files changed, 54 insertions, 0 deletions
diff --git a/tests/bugs/gh-841.slang b/tests/bugs/gh-841.slang
new file mode 100644
index 000000000..becf741c1
--- /dev/null
+++ b/tests/bugs/gh-841.slang
@@ -0,0 +1,19 @@
+// gh-841.slang
+
+//TEST:CROSS_COMPILE: -profile ps_5_0 -entry main -target spirv-assembly
+
+// GitHub issue #841: failing to emit `flat` modifier in output GLSL when required
+
+struct RasterVertex
+{
+ float4 c : COLOR;
+ uint u : FLAGS;
+};
+
+float4 main(RasterVertex v) : SV_Target
+{
+ float4 result = v.c;
+ if(v.u & 1)
+ result += 1.0;
+ return result;
+}
diff --git a/tests/bugs/gh-841.slang.glsl b/tests/bugs/gh-841.slang.glsl
new file mode 100644
index 000000000..caee80928
--- /dev/null
+++ b/tests/bugs/gh-841.slang.glsl
@@ -0,0 +1,35 @@
+//TEST_IGNORE_FILE:
+#version 450
+
+layout(location = 0)
+out vec4 _S1;
+
+layout(location = 0)
+in vec4 _S2;
+
+flat layout(location = 1)
+in uint _S3;
+
+struct RasterVertex_0
+{
+ vec4 c_0;
+ uint u_0;
+};
+
+void main()
+{
+ vec4 result_0;
+ RasterVertex_0 _S4 = RasterVertex_0(_S2, _S3);
+ vec4 result_1 = _S4.c_0;
+
+ if(bool(_S4.u_0 & uint(1)))
+ {
+ result_0 = result_1 + 1.0;
+ }
+ else
+ {
+ result_0 = result_1;
+ }
+ _S1 = result_0;
+ return;
+}