blob: d673d5f530311e5de76a1767ba7a758b4ea18510 [file] [log] [blame]
// all allocations need to use hieralloc
#include "prog_parameter.h"
#include "src/glsl/ir.h"
extern GLint _mesa_add_parameter(struct gl_program_parameter_list * paramList,
const char * name)
{
int index = _mesa_get_parameter(paramList, name);
if (index >= 0)
return index;
paramList->NumParameters++;
if (paramList->NumParameters > paramList->Size) {
paramList->Size = paramList->NumParameters + 4;
paramList->Parameters = hieralloc_realloc(paramList, paramList->Parameters,
gl_program_parameter, paramList->Size);
}
gl_program_parameter * param = paramList->Parameters + paramList->NumParameters - 1;
memset(param, 0, sizeof(*param));
param->Name = hieralloc_strdup(paramList, name);
param->BindLocation = -1;
param->Location = -1;
return paramList->NumParameters - 1;
}
extern GLint _mesa_get_parameter(const struct gl_program_parameter_list * paramList,
const char * name)
{
for (unsigned i = 0; i < paramList->NumParameters; i++)
if (!strcmp(name, paramList->Parameters[i].Name))
return i;
return -1;
}