From 15aba2fe81fea44969e036e181a4cf252ff41963 Mon Sep 17 00:00:00 2001 From: Tim Foley Date: Mon, 17 Jul 2017 08:58:47 -0700 Subject: Handle `flat` interpolation cases in cross compilation Fixes #104 - Map HLSL `nointerpolation` to GLSL `flat` - When lowering a `struct` type varying input/output, look for interpolation modifiers along the "chain" from the leaf field up to the original shader input variable (and take the first one found) - Not sure if this is strictly needed, but it seems like a reasonable policy - Add `flat` to varying input of integer type, with no other interpolation modifier - Note: I do *not* do anything to ignore a manually imposed interpolation modifier that might be incorrect --- tests/cross-compile/integer-input.slang.glsl | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 tests/cross-compile/integer-input.slang.glsl (limited to 'tests/cross-compile/integer-input.slang.glsl') diff --git a/tests/cross-compile/integer-input.slang.glsl b/tests/cross-compile/integer-input.slang.glsl new file mode 100644 index 000000000..ce6998a9a --- /dev/null +++ b/tests/cross-compile/integer-input.slang.glsl @@ -0,0 +1,26 @@ +//TEST_IGNORE_FILE: + +struct VS_OUT +{ + uint drawID; +}; + +in flat uint SLANG_in_vsOut_drawID; + +out vec4 SLANG_out_main_result; + +vec4 main_(VS_OUT vsOut) +{ + return vec4(float(vsOut.drawID)); +} + +void main() +{ + VS_OUT vsOut; + vsOut.drawID = SLANG_in_vsOut_drawID; + + vec4 main_result; + main_result = main_(vsOut); + + SLANG_out_main_result = main_result; +} -- cgit v1.2.3