added _mesa_combine_parameter_lists()

This commit is contained in:
Brian 2007-10-29 16:00:08 -06:00
parent 449562cde0
commit 4b30d177b4
2 changed files with 43 additions and 0 deletions

View file

@ -607,6 +607,39 @@ _mesa_clone_parameter_list(const struct gl_program_parameter_list *list)
}
/**
* Return a new parameter list which is listA + listB.
*/
struct gl_program_parameter_list *
_mesa_combine_parameter_lists(const struct gl_program_parameter_list *listA,
const struct gl_program_parameter_list *listB)
{
struct gl_program_parameter_list *list;
if (listA) {
list = _mesa_clone_parameter_list(listA);
if (list && listB) {
GLuint i;
for (i = 0; i < listB->NumParameters; i++) {
struct gl_program_parameter *param = listB->Parameters + i;
_mesa_add_parameter(list, param->Type, param->Name, param->Size,
param->DataType,
listB->ParameterValues[i],
param->StateIndexes);
}
}
}
else if (listB) {
list = _mesa_clone_parameter_list(listB);
}
else {
list = NULL;
}
return list;
}
/**
* Find longest name of all uniform parameters in list.
*/

View file

@ -78,6 +78,16 @@ _mesa_free_parameter_list(struct gl_program_parameter_list *paramList);
extern struct gl_program_parameter_list *
_mesa_clone_parameter_list(const struct gl_program_parameter_list *list);
extern struct gl_program_parameter_list *
_mesa_combine_parameter_lists(const struct gl_program_parameter_list *a,
const struct gl_program_parameter_list *b);
static INLINE GLuint
_mesa_num_parameters(const struct gl_program_parameter_list *list)
{
return list ? list->NumParameters : 0;
}
extern GLint
_mesa_add_parameter(struct gl_program_parameter_list *paramList,
enum register_file type, const char *name,