Add new _mesa_new_parameter_list_sized to pre-allocate a parameter list

This commit is contained in:
Ian Romanick 2009-07-08 11:39:13 -07:00
parent cad82cd063
commit 480567d5c4
2 changed files with 31 additions and 0 deletions

View file

@ -44,6 +44,34 @@ _mesa_new_parameter_list(void)
}
struct gl_program_parameter_list *
_mesa_new_parameter_list_sized(unsigned size)
{
struct gl_program_parameter_list *p = _mesa_new_parameter_list();
if ((p != NULL) && (size != 0)) {
p->Size = size;
/* alloc arrays */
p->Parameters = (struct gl_program_parameter *)
_mesa_calloc(size * sizeof(struct gl_program_parameter));
p->ParameterValues = (GLfloat (*)[4])
_mesa_align_malloc(size * 4 *sizeof(GLfloat), 16);
if ((p->Parameters == NULL) || (p->ParameterValues == NULL)) {
_mesa_free(p->Parameters);
_mesa_align_free(p->ParameterValues);
_mesa_free(p);
p = NULL;
}
}
return p;
}
/**
* Free a parameter list and all its parameters
*/

View file

@ -84,6 +84,9 @@ struct gl_program_parameter_list
extern struct gl_program_parameter_list *
_mesa_new_parameter_list(void);
extern struct gl_program_parameter_list *
_mesa_new_parameter_list_sized(unsigned size);
extern void
_mesa_free_parameter_list(struct gl_program_parameter_list *paramList);