mesa: Move src/mesa/glapi/dispatch.h to mesa.
[mesa.git] / src / mesa / shader / prog_uniform.c
index 25d7c0997bcf8fda8b8a3972b1e952510a92ab68..c408a8492c615752ce2bac860d18e2fa92b3ae7b 100644 (file)
@@ -45,18 +45,19 @@ _mesa_free_uniform_list(struct gl_uniform_list *list)
 {
    GLuint i;
    for (i = 0; i < list->NumUniforms; i++) {
-      _mesa_free((void *) list->Uniforms[i].Name);
+      free((void *) list->Uniforms[i].Name);
    }
-   _mesa_free(list->Uniforms);
-   _mesa_free(list);
+   free(list->Uniforms);
+   free(list);
 }
 
 
-GLboolean
+struct gl_uniform *
 _mesa_append_uniform(struct gl_uniform_list *list,
                      const char *name, GLenum target, GLuint progPos)
 {
    const GLuint oldNum = list->NumUniforms;
+   struct gl_uniform *uniform;
    GLint index;
 
    assert(target == GL_VERTEX_PROGRAM_ARB ||
@@ -84,30 +85,37 @@ _mesa_append_uniform(struct gl_uniform_list *list,
          return GL_FALSE;
       }
 
-      list->Uniforms[oldNum].Name = _mesa_strdup(name);
-      list->Uniforms[oldNum].VertPos = -1;
-      list->Uniforms[oldNum].FragPos = -1;
-      index = oldNum;
+      uniform = list->Uniforms + oldNum;
+
+      uniform->Name = _mesa_strdup(name);
+      uniform->VertPos = -1;
+      uniform->FragPos = -1;
+      uniform->Initialized = GL_FALSE;
+
       list->NumUniforms++;
    }
+   else {
+      /* found */
+      uniform = list->Uniforms + index;
+   }
 
    /* update position for the vertex or fragment program */
    if (target == GL_VERTEX_PROGRAM_ARB) {
-      if (list->Uniforms[index].VertPos != -1) {
+      if (uniform->VertPos != -1) {
          /* this uniform is already in the list - that shouldn't happen */
          return GL_FALSE;
       }
-      list->Uniforms[index].VertPos = progPos;
+      uniform->VertPos = progPos;
    }
    else {
-      if (list->Uniforms[index].FragPos != -1) {
+      if (uniform->FragPos != -1) {
          /* this uniform is already in the list - that shouldn't happen */
          return GL_FALSE;
       }
-      list->Uniforms[index].FragPos = progPos;
+      uniform->FragPos = progPos;
    }
 
-   return GL_TRUE;
+   return uniform;
 }
 
 
@@ -120,7 +128,7 @@ _mesa_lookup_uniform(const struct gl_uniform_list *list, const char *name)
 {
    GLuint i;
    for (i = 0; list && i < list->NumUniforms; i++) {
-      if (!_mesa_strcmp(list->Uniforms[i].Name, name)) {
+      if (!strcmp(list->Uniforms[i].Name, name)) {
          return i;
       }
    }
@@ -134,7 +142,7 @@ _mesa_longest_uniform_name(const struct gl_uniform_list *list)
    GLint max = 0;
    GLuint i;
    for (i = 0; list && i < list->NumUniforms; i++) {
-      GLint len = (GLint)_mesa_strlen(list->Uniforms[i].Name);
+      GLint len = (GLint) strlen(list->Uniforms[i].Name);
       if (len > max)
          max = len;
    }