Fix varying relinking.
TRAC #15527
Issue=100
Signed-off-by: Daniel Koch

Author: Nicolas Capens

git-svn-id: https://angleproject.googlecode.com/svn/trunk@560 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/libGLESv2/Program.cpp b/src/libGLESv2/Program.cpp
index f2bc61e..b7ff19c 100644
--- a/src/libGLESv2/Program.cpp
+++ b/src/libGLESv2/Program.cpp
@@ -1169,6 +1169,20 @@
         return false;
     }
 
+    // Reset the varying register assignments
+    for (VaryingList::iterator fragVar = mFragmentShader->varyings.begin(); fragVar != mFragmentShader->varyings.end(); fragVar++)
+    {
+        fragVar->reg = -1;
+        fragVar->col = -1;
+    }
+
+    for (VaryingList::iterator vtxVar = mVertexShader->varyings.begin(); vtxVar != mVertexShader->varyings.end(); vtxVar++)
+    {
+        vtxVar->reg = -1;
+        vtxVar->col = -1;
+    }
+
+    // Map the varyings to the register file
     const Varying *packing[MAX_VARYING_VECTORS_SM3][4] = {NULL};
     int registers = packVaryings(packing);
 
@@ -1177,6 +1191,7 @@
         return false;
     }
 
+    // Write the HLSL input/output declarations
     Context *context = getContext();
     const bool sm3 = context->supportsShaderModel3();
     const int maxVaryingVectors = context->getMaximumVaryingVectors();
@@ -1213,7 +1228,7 @@
 
         if (!matched)
         {
-            appendToInfoLog("Fragment varying varying %s does not match any vertex varying", input->name.c_str());
+            appendToInfoLog("Fragment varying %s does not match any vertex varying", input->name.c_str());
 
             return false;
         }