Collapsed register indexes into one.

TRAC #22293
Signed-off-by: Daniel Koch
Signed-off-by: Shannon Woods
Author: Nicolas Capens

git-svn-id: https://angleproject.googlecode.com/svn/branches/dx11proto@1623 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/libGLESv2/ProgramBinary.cpp b/src/libGLESv2/ProgramBinary.cpp
index 8b8ddb2..b37f3aa 100644
--- a/src/libGLESv2/ProgramBinary.cpp
+++ b/src/libGLESv2/ProgramBinary.cpp
@@ -965,53 +965,45 @@
 
         if (targetUniform->dirty)
         {
-            int count = targetUniform->arraySize;
-            GLint *v = (GLint*)targetUniform->data;
-
-            switch (targetUniform->type)
+            if (targetUniform->type == GL_SAMPLER_2D || 
+                targetUniform->type == GL_SAMPLER_CUBE)
             {
-              case GL_SAMPLER_2D:
-              case GL_SAMPLER_CUBE:
+                int count = targetUniform->arraySize;
+                GLint *v = (GLint*)targetUniform->data;
+
+                if (targetUniform->ps.registerCount)
                 {
-                    if (targetUniform->ps.registerCount)
+                    ASSERT(targetUniform->ps.registerIndex >= 0);
+                    unsigned int firstIndex = targetUniform->ps.registerIndex;
+
+                    for (int i = 0; i < count; i++)
                     {
-                        if (targetUniform->ps.samplerIndex >= 0)
+                        unsigned int samplerIndex = firstIndex + i;
+
+                        if (samplerIndex < MAX_TEXTURE_IMAGE_UNITS)
                         {
-                            unsigned int firstIndex = targetUniform->ps.samplerIndex;
-
-                            for (int i = 0; i < count; i++)
-                            {
-                                unsigned int samplerIndex = firstIndex + i;
-
-                                if (samplerIndex < MAX_TEXTURE_IMAGE_UNITS)
-                                {
-                                    ASSERT(mSamplersPS[samplerIndex].active);
-                                    mSamplersPS[samplerIndex].logicalTextureUnit = v[i];
-                                }
-                            }
-                        }
-                    }
-
-                    if (targetUniform->vs.registerCount)
-                    {
-                        if (targetUniform->vs.samplerIndex >= 0)
-                        {
-                            unsigned int firstIndex = targetUniform->vs.samplerIndex;
-
-                            for (int i = 0; i < count; i++)
-                            {
-                                unsigned int samplerIndex = firstIndex + i;
-
-                                if (samplerIndex < MAX_VERTEX_TEXTURE_IMAGE_UNITS_VTF)
-                                {
-                                    ASSERT(mSamplersVS[samplerIndex].active);
-                                    mSamplersVS[samplerIndex].logicalTextureUnit = v[i];
-                                }
-                            }
+                            ASSERT(mSamplersPS[samplerIndex].active);
+                            mSamplersPS[samplerIndex].logicalTextureUnit = v[i];
                         }
                     }
                 }
-                break;
+
+                if (targetUniform->vs.registerCount)
+                {
+                    ASSERT(targetUniform->vs.registerIndex >= 0);
+                    unsigned int firstIndex = targetUniform->vs.registerIndex;
+
+                    for (int i = 0; i < count; i++)
+                    {
+                        unsigned int samplerIndex = firstIndex + i;
+
+                        if (samplerIndex < MAX_VERTEX_TEXTURE_IMAGE_UNITS_VTF)
+                        {
+                            ASSERT(mSamplersVS[samplerIndex].active);
+                            mSamplersVS[samplerIndex].logicalTextureUnit = v[i];
+                        }
+                    }
+                }
             }
         }
     }
@@ -1594,14 +1586,10 @@
 
         mUniforms[i] = new Uniform(type, _name, arraySize);
         
-        stream.read(&mUniforms[i]->ps.float4Index);
-        stream.read(&mUniforms[i]->ps.samplerIndex);
-        stream.read(&mUniforms[i]->ps.boolIndex);
+        stream.read(&mUniforms[i]->ps.registerIndex);
         stream.read(&mUniforms[i]->ps.registerCount);
 
-        stream.read(&mUniforms[i]->vs.float4Index);
-        stream.read(&mUniforms[i]->vs.samplerIndex);
-        stream.read(&mUniforms[i]->vs.boolIndex);
+        stream.read(&mUniforms[i]->vs.registerIndex);
         stream.read(&mUniforms[i]->vs.registerCount);
     }
 
@@ -1709,14 +1697,10 @@
         stream.write(mUniforms[i]->_name);
         stream.write(mUniforms[i]->arraySize);
 
-        stream.write(mUniforms[i]->ps.float4Index);
-        stream.write(mUniforms[i]->ps.samplerIndex);
-        stream.write(mUniforms[i]->ps.boolIndex);
+        stream.write(mUniforms[i]->ps.registerIndex);
         stream.write(mUniforms[i]->ps.registerCount);
 
-        stream.write(mUniforms[i]->vs.float4Index);
-        stream.write(mUniforms[i]->vs.samplerIndex);
-        stream.write(mUniforms[i]->vs.boolIndex);
+        stream.write(mUniforms[i]->vs.registerIndex);
         stream.write(mUniforms[i]->vs.registerCount);
     }
 
@@ -2078,8 +2062,17 @@
         uniform = mUniforms[mUniformIndex[location].index];
     }
 
-    if (shader == GL_FRAGMENT_SHADER) uniform->ps.set(constant);
-    if (shader == GL_VERTEX_SHADER)   uniform->vs.set(constant);
+    if (shader == GL_FRAGMENT_SHADER)
+    {
+        uniform->ps.registerIndex = constant->registerIndex;
+        uniform->ps.registerCount = constant->registerCount;
+    }
+    else if (shader == GL_VERTEX_SHADER)
+    {
+        uniform->vs.registerIndex = constant->registerIndex;
+        uniform->vs.registerCount = constant->registerCount;
+    }
+    else UNREACHABLE();
 
     if (location >= 0)
     {