Split register allocation of varyings from the translator.

The translator gl::Varying struct does not need to know about register
allocation. We can put that entirely in the API library. This makes
exposing Varying variables with the new translator types cleaner.

BUG=angle:466

Change-Id: Ib85ac27de003913a01f76d5f4dc52454530859e6
Reviewed-on: https://chromium-review.googlesource.com/199736
Reviewed-by: Nicolas Capens <nicolascapens@chromium.org>
Reviewed-by: Shannon Woods <shannonwoods@chromium.org>
Tested-by: Jamie Madill <jmadill@chromium.org>
diff --git a/src/libGLESv2/Shader.cpp b/src/libGLESv2/Shader.cpp
index baced15..038ca62 100644
--- a/src/libGLESv2/Shader.cpp
+++ b/src/libGLESv2/Shader.cpp
@@ -125,7 +125,7 @@
     return mActiveInterfaceBlocks;
 }
 
-std::vector<Varying> &Shader::getVaryings()
+std::vector<PackedVarying> &Shader::getVaryings()
 {
     return mVaryings;
 }
@@ -227,7 +227,11 @@
     {
         std::vector<Varying> *activeVaryings;
         ShGetInfoPointer(compiler, SH_ACTIVE_VARYINGS_ARRAY, reinterpret_cast<void**>(&activeVaryings));
-        mVaryings = *activeVaryings;
+
+        for (size_t varyingIndex = 0; varyingIndex < activeVaryings->size(); varyingIndex++)
+        {
+            mVaryings.push_back(PackedVarying((*activeVaryings)[varyingIndex]));
+        }
 
         mUsesMultipleRenderTargets = mHlsl.find("GL_USES_MRT")          != std::string::npos;
         mUsesFragColor             = mHlsl.find("GL_USES_FRAG_COLOR")   != std::string::npos;
@@ -440,7 +444,7 @@
 };
 
 // true if varying x has a higher priority in packing than y
-bool Shader::compareVarying(const ShaderVariable &x, const ShaderVariable &y)
+bool Shader::compareVarying(const PackedVarying &x, const PackedVarying &y)
 {
     if (x.type == y.type)
     {