diff options
author | Brian Paul <[email protected]> | 2008-11-10 12:33:17 -0700 |
---|---|---|
committer | Brian Paul <[email protected]> | 2008-11-10 12:39:36 -0700 |
commit | 2d76a0d77af7be9539f89cba37ce84338c1cdda4 (patch) | |
tree | 6e722f4d0f8356707ed9402dc9eeeb5dc56704b4 /src/mesa/shader/prog_uniform.c | |
parent | 379ff8c9567940ebff44870cf7b0202882445fa6 (diff) |
mesa: track initialization status of uniform variables. Plus, asst clean-ups.
Diffstat (limited to 'src/mesa/shader/prog_uniform.c')
-rw-r--r-- | src/mesa/shader/prog_uniform.c | 29 |
1 files changed, 18 insertions, 11 deletions
diff --git a/src/mesa/shader/prog_uniform.c b/src/mesa/shader/prog_uniform.c index a0aa615c5f6..dc76be8e46c 100644 --- a/src/mesa/shader/prog_uniform.c +++ b/src/mesa/shader/prog_uniform.c @@ -52,11 +52,12 @@ _mesa_free_uniform_list(struct gl_uniform_list *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,31 +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; - list->Uniforms[oldNum].Initialized = GL_FALSE; - 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; } |