added _mesa_combine_parameter_lists()
authorBrian <brian.paul@tungstengraphics.com>
Mon, 29 Oct 2007 22:00:08 +0000 (16:00 -0600)
committerBrian <brian.paul@tungstengraphics.com>
Tue, 30 Oct 2007 17:32:52 +0000 (11:32 -0600)
src/mesa/shader/prog_parameter.c
src/mesa/shader/prog_parameter.h

index b4008abbd954b02a089df248f158ce8f4cda8e24..bb964274b955f3538eaed44fe3801495625e0fe4 100644 (file)
@@ -607,6 +607,39 @@ _mesa_clone_parameter_list(const struct gl_program_parameter_list *list)
 }
 
 
+/**
+ * Return a new parameter list which is listA + listB.
+ */
+struct gl_program_parameter_list *
+_mesa_combine_parameter_lists(const struct gl_program_parameter_list *listA,
+                              const struct gl_program_parameter_list *listB)
+{
+   struct gl_program_parameter_list *list;
+
+   if (listA) {
+      list = _mesa_clone_parameter_list(listA);
+      if (list && listB) {
+         GLuint i;
+         for (i = 0; i < listB->NumParameters; i++) {
+            struct gl_program_parameter *param = listB->Parameters + i;
+            _mesa_add_parameter(list, param->Type, param->Name, param->Size,
+                                param->DataType,
+                                listB->ParameterValues[i],
+                                param->StateIndexes);
+         }
+      }
+   }
+   else if (listB) {
+      list = _mesa_clone_parameter_list(listB);
+   }
+   else {
+      list = NULL;
+   }
+   return list;
+}
+
+
+
 /**
  * Find longest name of all uniform parameters in list.
  */
index 40c8c09e09b92ecac3e0bb190e2f09dd8008c672..d6cc03448c87aaff932fa0e905fae4bdfb879256 100644 (file)
@@ -78,6 +78,16 @@ _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 struct gl_program_parameter_list *
+_mesa_combine_parameter_lists(const struct gl_program_parameter_list *a,
+                              const struct gl_program_parameter_list *b);
+
+static INLINE GLuint
+_mesa_num_parameters(const struct gl_program_parameter_list *list)
+{
+   return list ? list->NumParameters : 0;
+}
+
 extern GLint
 _mesa_add_parameter(struct gl_program_parameter_list *paramList,
                     enum register_file type, const char *name,