Fix the varying sort comparator in ShaderD3D.
The comparator was actually a <= operator, while sort requires a
strict < operator. This was causing a potential assertion failure.
Bug report from Kerim Borchaev.
BUG=angle:742
Change-Id: I37c2925ab0b85e70ee1b2be3c72c6ddc062e8d28
Reviewed-on: https://chromium-review.googlesource.com/218506
Tested-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shannon Woods <shannonwoods@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
diff --git a/tests/angle_tests/GLSLTest.cpp b/tests/angle_tests/GLSLTest.cpp
index 233edb3..b47b3f7 100644
--- a/tests/angle_tests/GLSLTest.cpp
+++ b/tests/angle_tests/GLSLTest.cpp
@@ -226,6 +226,43 @@
EXPECT_NE(0u, program);
}
+TEST_F(GLSLTest, FrontFacingAndVarying)
+{
+ const std::string vertexShaderSource = SHADER_SOURCE
+ (
+ attribute vec4 a_position;
+ varying float v_varying;
+ void main()
+ {
+ v_varying = a_position.x;
+ gl_Position = a_position;
+ }
+ );
+
+ const std::string fragmentShaderSource = SHADER_SOURCE
+ (
+ precision mediump float;
+ varying float v_varying;
+ void main()
+ {
+ vec4 c;
+
+ if (gl_FrontFacing)
+ {
+ c = vec4(v_varying, 0, 0, 1.0);
+ }
+ else
+ {
+ c = vec4(0, v_varying, 0, 1.0);
+ }
+ gl_FragColor = c;
+ }
+ );
+
+ GLuint program = CompileProgram(vertexShaderSource, fragmentShaderSource);
+ EXPECT_NE(0u, program);
+}
+
TEST_F(GLSLTest, InvariantVaryingIn)
{
const std::string fragmentShaderSource = SHADER_SOURCE