summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/mesa/shader/program.c36
-rw-r--r--src/mesa/shader/program.h4
2 files changed, 38 insertions, 2 deletions
diff --git a/src/mesa/shader/program.c b/src/mesa/shader/program.c
index 371500304f..27eb5c2f43 100644
--- a/src/mesa/shader/program.c
+++ b/src/mesa/shader/program.c
@@ -419,7 +419,10 @@ _mesa_add_named_parameter(struct gl_program_parameter_list *paramList,
/**
- * Add a new unnamed constant to the parameter list.
+ * Add a new named constant to the parameter list.
+ * This will be used when the program contains something like this:
+ * PARAM myVals = { 0, 1, 2, 3 };
+ *
* \param paramList - the parameter list
* \param values - four float values
* \return index of the new parameter.
@@ -434,6 +437,9 @@ _mesa_add_named_constant(struct gl_program_parameter_list *paramList,
/**
* Add a new unnamed constant to the parameter list.
+ * This will be used when the program contains something like this:
+ * MOV r, { 0, 1, 2, 3 };
+ *
* \param paramList - the parameter list
* \param values - four float values
* \return index of the new parameter.
@@ -448,9 +454,11 @@ _mesa_add_unnamed_constant(struct gl_program_parameter_list *paramList,
/**
* Add a new state reference to the parameter list.
+ * This will be used when the program contains something like this:
+ * PARAM ambient = state.material.front.ambient;
+ *
* \param paramList - the parameter list
* \param state - an array of 6 state tokens
- *
* \return index of the new parameter.
*/
GLint
@@ -1305,6 +1313,30 @@ _mesa_init_instruction(struct prog_instruction *inst)
/**
+ * Reallocate memory storing an array of program instructions.
+ * This is used when we need to append additional instructions onto an
+ * program.
+ * \param oldInst pointer to first of old/src instructions
+ * \param numOldInst number of instructions at <oldInst>
+ * \param numNewInst desired size of new instruction array.
+ * \return pointer to start of new instruction array.
+ */
+struct prog_instruction *
+_mesa_realloc_instructions(struct prog_instruction *oldInst,
+ GLuint numOldInst, GLuint numNewInst)
+{
+ struct prog_instruction *newInst;
+
+ newInst = (struct prog_instruction *)
+ _mesa_realloc(oldInst,
+ numOldInst * sizeof(struct prog_instruction),
+ numNewInst * sizeof(struct prog_instruction));
+
+ return newInst;
+}
+
+
+/**
* Basic info about each instruction
*/
struct instruction_info
diff --git a/src/mesa/shader/program.h b/src/mesa/shader/program.h
index 1d91e63af5..a8535cc2cf 100644
--- a/src/mesa/shader/program.h
+++ b/src/mesa/shader/program.h
@@ -114,6 +114,10 @@ _mesa_delete_program(GLcontext *ctx, struct gl_program *prog);
extern struct gl_program *
_mesa_lookup_program(GLcontext *ctx, GLuint id);
+extern struct prog_instruction *
+_mesa_realloc_instructions(struct prog_instruction *oldInst,
+ GLuint numOldInst, GLuint numNewInst);
+
/**
* Used for describing GL state referenced from inside ARB vertex and