Explicitly pass constant tables to linkUniforms

Trac #22155
Signed-off-by: Geoff Lang
Signed-off-by: Nicolas Capens

git-svn-id: https://angleproject.googlecode.com/svn/branches/dx11proto@1501 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/libGLESv2/ProgramBinary.cpp b/src/libGLESv2/ProgramBinary.cpp
index e3ca570..38b2d16 100644
--- a/src/libGLESv2/ProgramBinary.cpp
+++ b/src/libGLESv2/ProgramBinary.cpp
@@ -1962,12 +1962,7 @@
             return false;
         }
 
-        if (!linkUniforms(infoLog, GL_FRAGMENT_SHADER, mConstantTablePS))
-        {
-            return false;
-        }
-
-        if (!linkUniforms(infoLog, GL_VERTEX_SHADER, mConstantTableVS))
+        if (!linkUniforms(infoLog, mConstantTableVS, mConstantTablePS))
         {
             return false;
         }
@@ -2060,18 +2055,27 @@
     return true;
 }
 
-bool ProgramBinary::linkUniforms(InfoLog &infoLog, GLenum shader, D3DConstantTable *constantTable)
+bool ProgramBinary::linkUniforms(InfoLog &infoLog, D3DConstantTable *vsConstantTable, D3DConstantTable *psConstantTable)
 {
-    for (unsigned int constantIndex = 0; constantIndex < constantTable->constants(); constantIndex++)
+    for (unsigned int constantIndex = 0; constantIndex < psConstantTable->constants(); constantIndex++)
     {
-        const D3DConstant *constant = constantTable->getConstant(constantIndex);
+        const D3DConstant *constant = psConstantTable->getConstant(constantIndex);
 
-        if (!defineUniform(infoLog, shader, constant, "", mConstantTableVS, mConstantTablePS))
+        if (!defineUniform(infoLog, GL_FRAGMENT_SHADER, constant, "", vsConstantTable, psConstantTable))
         {
             return false;
         }
     }
 
+    for (unsigned int constantIndex = 0; constantIndex < vsConstantTable->constants(); constantIndex++)
+    {
+        const D3DConstant *constant = vsConstantTable->getConstant(constantIndex);
+
+        if (!defineUniform(infoLog, GL_VERTEX_SHADER, constant, "", vsConstantTable, psConstantTable))
+        {
+            return false;
+        }
+    }
     return true;
 }