#ifndef PROG_PARAMETER_H
#define PROG_PARAMETER_H
#include "mtypes.h"
#include "prog_statevars.h"
struct gl_program_parameter
{
const char *Name;
enum register_file Type;
GLenum DataType;
GLuint Size;
gl_state_index StateIndexes[STATE_LENGTH];
};
struct gl_program_parameter_list
{
GLuint Size;
GLuint NumParameters;
struct gl_program_parameter *Parameters;
GLfloat (*ParameterValues)[4];
GLbitfield StateFlags;
};
extern struct gl_program_parameter_list *
_mesa_new_parameter_list(void);
extern void
_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 GLint
_mesa_add_parameter(struct gl_program_parameter_list *paramList,
enum register_file type, const char *name,
GLuint size, GLenum datatype, const GLfloat *values,
const gl_state_index state[STATE_LENGTH]);
extern GLint
_mesa_add_named_parameter(struct gl_program_parameter_list *paramList,
const char *name, const GLfloat values[4]);
extern GLint
_mesa_add_named_constant(struct gl_program_parameter_list *paramList,
const char *name, const GLfloat values[4],
GLuint size);
extern GLint
_mesa_add_unnamed_constant(struct gl_program_parameter_list *paramList,
const GLfloat values[4], GLuint size,
GLuint *swizzleOut);
extern GLint
_mesa_add_uniform(struct gl_program_parameter_list *paramList,
const char *name, GLuint size, GLenum datatype);
extern GLint
_mesa_add_sampler(struct gl_program_parameter_list *paramList,
const char *name, GLenum datatype);
extern GLint
_mesa_add_varying(struct gl_program_parameter_list *paramList,
const char *name, GLuint size);
extern GLint
_mesa_add_attribute(struct gl_program_parameter_list *paramList,
const char *name, GLint size, GLint attrib);
extern GLint
_mesa_add_state_reference(struct gl_program_parameter_list *paramList,
const gl_state_index stateTokens[STATE_LENGTH]);
extern GLfloat *
_mesa_lookup_parameter_value(const struct gl_program_parameter_list *paramList,
GLsizei nameLen, const char *name);
extern GLint
_mesa_lookup_parameter_index(const struct gl_program_parameter_list *paramList,
GLsizei nameLen, const char *name);
extern GLboolean
_mesa_lookup_parameter_constant(const struct gl_program_parameter_list *list,
const GLfloat v[], GLuint vSize,
GLint *posOut, GLuint *swizzleOut);
extern GLuint
_mesa_longest_parameter_name(const struct gl_program_parameter_list *list,
enum register_file type);
extern GLuint
_mesa_num_parameters_of_type(const struct gl_program_parameter_list *list,
enum register_file type);
#endif