mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-07 07:08:04 +02:00
Add new _mesa_new_parameter_list_sized to pre-allocate a parameter list
This commit is contained in:
parent
cad82cd063
commit
480567d5c4
2 changed files with 31 additions and 0 deletions
|
|
@ -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
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue