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