Split varyings into input and output varyings in renderer

This patch intends to split all vector<Varying> into two vectors
to store input and output varyings separately in the renderer.

This patch is a base of supporting program linking with geometry
shader. Unlike the vertex shaders (their outputs are varyings)
and fragment shaders (their inputs are varyings), the inputs and
outputs of geometry shaders are all varyings, so we need two
vector<Varying> to store them correctly.

BUG=angleproject:1941
TEST=angle_end2end_tests

Change-Id: Ic4b8343f2fc3df87b764c45f2ea7810e565f7bee
Reviewed-on: https://chromium-review.googlesource.com/720617
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
diff --git a/src/libANGLE/renderer/d3d/ProgramD3D.cpp b/src/libANGLE/renderer/d3d/ProgramD3D.cpp
index ee28bbf..6bb92b0 100644
--- a/src/libANGLE/renderer/d3d/ProgramD3D.cpp
+++ b/src/libANGLE/renderer/d3d/ProgramD3D.cpp
@@ -1554,8 +1554,8 @@
 
         // Cache if we use flat shading
         mUsesFlatInterpolation =
-            (FindFlatInterpolationVarying(fragmentShader->getVaryings(context)) ||
-             FindFlatInterpolationVarying(vertexShader->getVaryings(context)));
+            (FindFlatInterpolationVarying(fragmentShader->getInputVaryings(context)) ||
+             FindFlatInterpolationVarying(vertexShader->getOutputVaryings(context)));
 
         if (mRenderer->getMajorShaderModel() >= 4)
         {