Fix instanced point sprites when gl_PointSize is specified but not used

Change-Id: I2350fa60cae55f02d7b484c34544c035acaba6ad
Reviewed-on: https://chromium-review.googlesource.com/245703
Reviewed-by: Austin Kinross <aukinros@microsoft.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Jamie Madill <jmadill@chromium.org>
diff --git a/tests/angle_tests/PointSpritesTest.cpp b/tests/angle_tests/PointSpritesTest.cpp
index d109893..4590d6c 100644
--- a/tests/angle_tests/PointSpritesTest.cpp
+++ b/tests/angle_tests/PointSpritesTest.cpp
@@ -388,3 +388,39 @@
 
     glDeleteBuffers(1, &vertexObject);
 }
+
+// Verify that rendering works correctly when gl_PointSize is declared in a shader but isn't used
+TYPED_TEST(PointSpritesTest, PointSizeDeclaredButUnused)
+{
+    const std::string vs = SHADER_SOURCE
+    (
+        attribute highp vec4 position;
+
+        void main(void)
+        {
+            gl_PointSize = 1.0;
+            gl_Position = position;
+        }
+    );
+
+    const std::string fs = SHADER_SOURCE
+    (
+        void main(void)
+        {
+            gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);
+        }
+    );
+
+    GLuint program = CompileProgram(vs, fs);
+    ASSERT_NE(program, 0u);
+    ASSERT_GL_NO_ERROR();
+
+    glUseProgram(program);
+    drawQuad(program, "position", 0.5f, 1.0f);
+    ASSERT_GL_NO_ERROR();
+
+    // expect the center pixel to be red
+    EXPECT_PIXEL_EQ(getWindowWidth() / 2, getWindowHeight() / 2, 255, 0, 0, 255);
+
+    glDeleteProgram(program);
+}