prog_parameter.cpp revision c0025eb1a3d421c0355a21db9d8ea2bd81278460
1c0025eb1a3d421c0355a21db9d8ea2bd81278460David Li// all allocations need to use hieralloc
2c0025eb1a3d421c0355a21db9d8ea2bd81278460David Litypedef unsigned int size_t;
3c0025eb1a3d421c0355a21db9d8ea2bd81278460David Li
4c0025eb1a3d421c0355a21db9d8ea2bd81278460David Li#include "prog_parameter.h"
5c0025eb1a3d421c0355a21db9d8ea2bd81278460David Li
6c0025eb1a3d421c0355a21db9d8ea2bd81278460David Li#include "src/glsl/ir.h"
7c0025eb1a3d421c0355a21db9d8ea2bd81278460David Li
8c0025eb1a3d421c0355a21db9d8ea2bd81278460David Liextern GLint _mesa_add_parameter(struct gl_program_parameter_list * paramList,
9c0025eb1a3d421c0355a21db9d8ea2bd81278460David Li                                    const char * name)
10c0025eb1a3d421c0355a21db9d8ea2bd81278460David Li{
11c0025eb1a3d421c0355a21db9d8ea2bd81278460David Li   paramList->NumParameters++;
12c0025eb1a3d421c0355a21db9d8ea2bd81278460David Li   if (paramList->NumParameters > paramList->Size) {
13c0025eb1a3d421c0355a21db9d8ea2bd81278460David Li      paramList->Size = paramList->NumParameters + 4;
14c0025eb1a3d421c0355a21db9d8ea2bd81278460David Li      paramList->Parameters = hieralloc_realloc(paramList, paramList->Parameters,
15c0025eb1a3d421c0355a21db9d8ea2bd81278460David Li                              gl_program_parameter, paramList->Size);
16c0025eb1a3d421c0355a21db9d8ea2bd81278460David Li   }
17c0025eb1a3d421c0355a21db9d8ea2bd81278460David Li
18c0025eb1a3d421c0355a21db9d8ea2bd81278460David Li   gl_program_parameter * param = paramList->Parameters + paramList->NumParameters - 1;
19c0025eb1a3d421c0355a21db9d8ea2bd81278460David Li   memset(param, 0, sizeof(*param));
20c0025eb1a3d421c0355a21db9d8ea2bd81278460David Li   param->Name = hieralloc_strdup(paramList, name);
21c0025eb1a3d421c0355a21db9d8ea2bd81278460David Li   param->BindLocation = -1;
22c0025eb1a3d421c0355a21db9d8ea2bd81278460David Li   param->Location = -1;
23c0025eb1a3d421c0355a21db9d8ea2bd81278460David Li
24c0025eb1a3d421c0355a21db9d8ea2bd81278460David Li   return paramList->NumParameters - 1;
25c0025eb1a3d421c0355a21db9d8ea2bd81278460David Li}
26c0025eb1a3d421c0355a21db9d8ea2bd81278460David Li
27c0025eb1a3d421c0355a21db9d8ea2bd81278460David Liextern GLint _mesa_get_parameter(const struct gl_program_parameter_list * paramList,
28c0025eb1a3d421c0355a21db9d8ea2bd81278460David Li                                    const char * name)
29c0025eb1a3d421c0355a21db9d8ea2bd81278460David Li{
30c0025eb1a3d421c0355a21db9d8ea2bd81278460David Li   for (unsigned i = 0; i < paramList->NumParameters; i++)
31c0025eb1a3d421c0355a21db9d8ea2bd81278460David Li      if (!strcmp(name, paramList->Parameters[i].Name))
32c0025eb1a3d421c0355a21db9d8ea2bd81278460David Li         return i;
33c0025eb1a3d421c0355a21db9d8ea2bd81278460David Li   return -1;
34c0025eb1a3d421c0355a21db9d8ea2bd81278460David Li}
35