summaryrefslogtreecommitdiff
path: root/src/mesa/main
diff options
context:
space:
mode:
authorBrian Paul <brian.paul@tungstengraphics.com>2008-07-08 16:12:01 -0600
committerBrian Paul <brian.paul@tungstengraphics.com>2008-07-08 16:12:01 -0600
commit072c47483674021425922132cf6d977090077f8e (patch)
treee3925c28127e2e862407239de343e526fa507c52 /src/mesa/main
parent3bdf50bab0951c5435bbf4b938d37cc1fe9a5d7c (diff)
mesa: implement glGetUniformiv() with new ctx->Driver function
The old implementation could overwrite the caller's param buffer.
Diffstat (limited to 'src/mesa/main')
-rw-r--r--src/mesa/main/dd.h2
-rw-r--r--src/mesa/main/shaders.c7
2 files changed, 4 insertions, 5 deletions
diff --git a/src/mesa/main/dd.h b/src/mesa/main/dd.h
index a24021c63f..7fb0a211d7 100644
--- a/src/mesa/main/dd.h
+++ b/src/mesa/main/dd.h
@@ -870,6 +870,8 @@ struct dd_function_table {
GLsizei *length, GLcharARB *sourceOut);
void (*GetUniformfv)(GLcontext *ctx, GLuint program, GLint location,
GLfloat *params);
+ void (*GetUniformiv)(GLcontext *ctx, GLuint program, GLint location,
+ GLint *params);
GLint (*GetUniformLocation)(GLcontext *ctx, GLuint program,
const GLcharARB *name);
GLboolean (*IsProgram)(GLcontext *ctx, GLuint name);
diff --git a/src/mesa/main/shaders.c b/src/mesa/main/shaders.c
index b7b2f791a5..a2670fda32 100644
--- a/src/mesa/main/shaders.c
+++ b/src/mesa/main/shaders.c
@@ -128,6 +128,7 @@ _mesa_DeleteObjectARB(GLhandleARB obj)
void GLAPIENTRY
_mesa_DeleteProgram(GLuint name)
{
+ printf("%s name=%u\n", __FUNCTION__, name);
if (name) {
GET_CURRENT_CONTEXT(ctx);
ctx->Driver.DeleteProgram2(ctx, name);
@@ -309,11 +310,7 @@ void GLAPIENTRY
_mesa_GetUniformivARB(GLhandleARB program, GLint location, GLint * params)
{
GET_CURRENT_CONTEXT(ctx);
- GLfloat fparams[16]; /* XXX is 16 enough? */
- GLuint i;
- ctx->Driver.GetUniformfv(ctx, program, location, fparams);
- for (i = 0; i < 16; i++)
- params[i] = (GLint) fparams[i]; /* XXX correct? */
+ ctx->Driver.GetUniformiv(ctx, program, location, params);
}