summaryrefslogtreecommitdiff
path: root/src/mesa/shader/prog_parameter.c
diff options
context:
space:
mode:
authorZack Rusin <zack@tungstengraphics.com>2008-06-12 00:03:35 -0400
committerZack Rusin <zack@tungstengraphics.com>2008-06-12 15:08:27 -0400
commit2542c59c55589bdeaf56b9cf91625b0adf75e3ab (patch)
tree9996b4a6a8cc14eb7731db1e21f9c1d16375535a /src/mesa/shader/prog_parameter.c
parent74964ff04d89be430944dd8106bf5c97a9933f85 (diff)
shaders: fix allocation of arrays of parameters
Diffstat (limited to 'src/mesa/shader/prog_parameter.c')
-rw-r--r--src/mesa/shader/prog_parameter.c24
1 files changed, 23 insertions, 1 deletions
diff --git a/src/mesa/shader/prog_parameter.c b/src/mesa/shader/prog_parameter.c
index 152bd79f69..afdd7e5489 100644
--- a/src/mesa/shader/prog_parameter.c
+++ b/src/mesa/shader/prog_parameter.c
@@ -62,6 +62,28 @@ _mesa_free_parameter_list(struct gl_program_parameter_list *paramList)
}
+static GLint
+_mesa_fit_type_in_vec4(GLenum type)
+{
+ switch (type) {
+ case GL_FLOAT:
+ case GL_INT:
+ return 4;
+ break;
+ case GL_FLOAT_VEC2:
+ case GL_INT_VEC2:
+ return 2;
+ break;
+ case GL_FLOAT_VEC3:
+ case GL_INT_VEC3:
+ return 1;
+ break;
+ case GL_FLOAT_VEC4:
+ case GL_INT_VEC4:
+ default:
+ return 1;
+ }
+}
/**
* Add a new parameter to a parameter list.
@@ -272,7 +294,7 @@ _mesa_add_uniform(struct gl_program_parameter_list *paramList,
}
else {
i = _mesa_add_parameter(paramList, PROGRAM_UNIFORM, name,
- size, datatype, NULL, NULL);
+ size * _mesa_fit_type_in_vec4(datatype), datatype, NULL, NULL);
return i;
}
}