Compiler - active uniforms and attributes

TRAC #11590
Preparation refactoring that removes UniformType since there are already GL enums for uniform types.
Signed-off-by: Andrew Lewycky
Signed-off-by: Daniel Koch
Author:    Nicolas Capens

git-svn-id: https://angleproject.googlecode.com/svn/trunk@78 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/libGLESv2/Program.cpp b/src/libGLESv2/Program.cpp
index 5686b16..b950f47 100644
--- a/src/libGLESv2/Program.cpp
+++ b/src/libGLESv2/Program.cpp
@@ -15,7 +15,7 @@
 
 namespace gl
 {
-Uniform::Uniform(UniformType type, const std::string &name, unsigned int bytes) : type(type), name(name), bytes(bytes)
+Uniform::Uniform(GLenum type, const std::string &name, unsigned int bytes) : type(type), name(name), bytes(bytes)
 {
     this->data = new unsigned char[bytes];
     memset(this->data, 0, bytes);
@@ -209,7 +209,7 @@
         return false;
     }
 
-    if (mUniforms[location]->type != UNIFORM_1FV || mUniforms[location]->bytes < sizeof(GLfloat) * count)
+    if (mUniforms[location]->type != GL_FLOAT || mUniforms[location]->bytes < sizeof(GLfloat) * count)
     {
         return false;
     }
@@ -226,7 +226,7 @@
         return false;
     }
 
-    if (mUniforms[location]->type != UNIFORM_2FV || mUniforms[location]->bytes < 2 * sizeof(GLfloat) * count)
+    if (mUniforms[location]->type != GL_FLOAT_VEC2 || mUniforms[location]->bytes < 2 * sizeof(GLfloat) * count)
     {
         return false;
     }
@@ -243,7 +243,7 @@
         return false;
     }
 
-    if (mUniforms[location]->type != UNIFORM_3FV || mUniforms[location]->bytes < 3 * sizeof(GLfloat) * count)
+    if (mUniforms[location]->type != GL_FLOAT_VEC3 || mUniforms[location]->bytes < 3 * sizeof(GLfloat) * count)
     {
         return false;
     }
@@ -260,7 +260,7 @@
         return false;
     }
 
-    if (mUniforms[location]->type != UNIFORM_4FV || mUniforms[location]->bytes < 4 * sizeof(GLfloat) * count)
+    if (mUniforms[location]->type != GL_FLOAT_VEC4 || mUniforms[location]->bytes < 4 * sizeof(GLfloat) * count)
     {
         return false;
     }
@@ -277,7 +277,7 @@
         return false;
     }
 
-    if (mUniforms[location]->type != UNIFORM_MATRIX_2FV || mUniforms[location]->bytes < 4 * sizeof(GLfloat) * count)
+    if (mUniforms[location]->type != GL_FLOAT_MAT2 || mUniforms[location]->bytes < 4 * sizeof(GLfloat) * count)
     {
         return false;
     }
@@ -294,7 +294,7 @@
         return false;
     }
 
-    if (mUniforms[location]->type != UNIFORM_MATRIX_3FV || mUniforms[location]->bytes < 9 * sizeof(GLfloat) * count)
+    if (mUniforms[location]->type != GL_FLOAT_MAT3 || mUniforms[location]->bytes < 9 * sizeof(GLfloat) * count)
     {
         return false;
     }
@@ -311,7 +311,7 @@
         return false;
     }
 
-    if (mUniforms[location]->type != UNIFORM_MATRIX_4FV || mUniforms[location]->bytes <  16 * sizeof(GLfloat) * count)
+    if (mUniforms[location]->type != GL_FLOAT_MAT4 || mUniforms[location]->bytes <  16 * sizeof(GLfloat) * count)
     {
         return false;
     }
@@ -328,7 +328,7 @@
         return false;
     }
 
-    if (mUniforms[location]->type != UNIFORM_1IV || mUniforms[location]->bytes < sizeof(GLint) * count)
+    if (mUniforms[location]->type != GL_INT || mUniforms[location]->bytes < sizeof(GLint) * count)
     {
         return false;
     }
@@ -349,14 +349,14 @@
 
         switch (mUniforms[location]->type)
         {
-          case UNIFORM_1FV:        applyUniform1fv(location, bytes / sizeof(GLfloat), f);            break;
-          case UNIFORM_2FV:        applyUniform2fv(location, bytes / 2 / sizeof(GLfloat), f);        break;
-          case UNIFORM_3FV:        applyUniform3fv(location, bytes / 3 / sizeof(GLfloat), f);        break;
-          case UNIFORM_4FV:        applyUniform4fv(location, bytes / 4 / sizeof(GLfloat), f);        break;
-          case UNIFORM_MATRIX_2FV: applyUniformMatrix2fv(location, bytes / 4 / sizeof(GLfloat), f);  break;
-          case UNIFORM_MATRIX_3FV: applyUniformMatrix3fv(location, bytes / 9 / sizeof(GLfloat), f);  break;
-          case UNIFORM_MATRIX_4FV: applyUniformMatrix4fv(location, bytes / 16 / sizeof(GLfloat), f); break;
-          case UNIFORM_1IV:        applyUniform1iv(location, bytes / sizeof(GLint), i);              break;
+          case GL_FLOAT:      applyUniform1fv(location, bytes / sizeof(GLfloat), f);            break;
+          case GL_FLOAT_VEC2: applyUniform2fv(location, bytes / 2 / sizeof(GLfloat), f);        break;
+          case GL_FLOAT_VEC3: applyUniform3fv(location, bytes / 3 / sizeof(GLfloat), f);        break;
+          case GL_FLOAT_VEC4: applyUniform4fv(location, bytes / 4 / sizeof(GLfloat), f);        break;
+          case GL_FLOAT_MAT2: applyUniformMatrix2fv(location, bytes / 4 / sizeof(GLfloat), f);  break;
+          case GL_FLOAT_MAT3: applyUniformMatrix3fv(location, bytes / 9 / sizeof(GLfloat), f);  break;
+          case GL_FLOAT_MAT4: applyUniformMatrix4fv(location, bytes / 16 / sizeof(GLfloat), f); break;
+          case GL_INT:        applyUniform1iv(location, bytes / sizeof(GLint), i);              break;
           default:
             UNIMPLEMENTED();   // FIXME
             UNREACHABLE();
@@ -598,7 +598,7 @@
 
     // Check if already defined
     GLint location = getUniformLocation(name.c_str());
-    UniformType type = uniform->type;
+    GLenum type = uniform->type;
 
     if (location >= 0)
     {
@@ -630,7 +630,7 @@
           case D3DXPT_BOOL:
             switch (constantDescription.Columns)
             {
-              case 1: return new Uniform(UNIFORM_1IV, name, 1 * sizeof(GLint) * constantDescription.Elements);
+              case 1: return new Uniform(GL_INT, name, 1 * sizeof(GLint) * constantDescription.Elements);
               default:
                 UNIMPLEMENTED();   // FIXME
                 UNREACHABLE();
@@ -639,10 +639,10 @@
           case D3DXPT_FLOAT:
             switch (constantDescription.Columns)
             {
-              case 1: return new Uniform(UNIFORM_1FV, name, 1 * sizeof(GLfloat) * constantDescription.Elements);
-              case 2: return new Uniform(UNIFORM_2FV, name, 2 * sizeof(GLfloat) * constantDescription.Elements);
-              case 3: return new Uniform(UNIFORM_3FV, name, 3 * sizeof(GLfloat) * constantDescription.Elements);
-              case 4: return new Uniform(UNIFORM_4FV, name, 4 * sizeof(GLfloat) * constantDescription.Elements);
+              case 1: return new Uniform(GL_FLOAT, name, 1 * sizeof(GLfloat) * constantDescription.Elements);
+              case 2: return new Uniform(GL_FLOAT_VEC2, name, 2 * sizeof(GLfloat) * constantDescription.Elements);
+              case 3: return new Uniform(GL_FLOAT_VEC3, name, 3 * sizeof(GLfloat) * constantDescription.Elements);
+              case 4: return new Uniform(GL_FLOAT_VEC4, name, 4 * sizeof(GLfloat) * constantDescription.Elements);
               default: UNREACHABLE();
             }
             break;
@@ -658,9 +658,9 @@
           case D3DXPT_FLOAT:
             switch (constantDescription.Rows)
             {
-              case 2: return new Uniform(UNIFORM_MATRIX_2FV, name, 2 * 2 * sizeof(GLfloat) * constantDescription.Elements);
-              case 3: return new Uniform(UNIFORM_MATRIX_3FV, name, 3 * 3 * sizeof(GLfloat) * constantDescription.Elements);
-              case 4: return new Uniform(UNIFORM_MATRIX_4FV, name, 4 * 4 * sizeof(GLfloat) * constantDescription.Elements);
+              case 2: return new Uniform(GL_FLOAT_MAT2, name, 2 * 2 * sizeof(GLfloat) * constantDescription.Elements);
+              case 3: return new Uniform(GL_FLOAT_MAT3, name, 3 * 3 * sizeof(GLfloat) * constantDescription.Elements);
+              case 4: return new Uniform(GL_FLOAT_MAT4, name, 4 * 4 * sizeof(GLfloat) * constantDescription.Elements);
               default: UNREACHABLE();
             }
             break;
diff --git a/src/libGLESv2/Program.h b/src/libGLESv2/Program.h
index 0ce0add..92257eb 100644
--- a/src/libGLESv2/Program.h
+++ b/src/libGLESv2/Program.h
@@ -21,26 +21,14 @@
 class FragmentShader;
 class VertexShader;
 
-enum UniformType
-{
-    UNIFORM_1FV,
-    UNIFORM_2FV,
-    UNIFORM_3FV,
-    UNIFORM_4FV,
-    UNIFORM_MATRIX_2FV,
-    UNIFORM_MATRIX_3FV,
-    UNIFORM_MATRIX_4FV,
-    UNIFORM_1IV
-};
-
 // Helper struct representing a single shader uniform
 struct Uniform
 {
-    Uniform(UniformType type, const std::string &name, unsigned int bytes);
+    Uniform(GLenum type, const std::string &name, unsigned int bytes);
 
     ~Uniform();
 
-    const UniformType type;
+    const GLenum type;
     const std::string name;
     const unsigned int bytes;
     unsigned char *data;