diff options
Diffstat (limited to 'tests/bugs')
| -rw-r--r-- | tests/bugs/gh-841.slang | 19 | ||||
| -rw-r--r-- | tests/bugs/gh-841.slang.glsl | 35 |
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; +} |
