On 10/28/2011 01:52 PM, Eric Anholt wrote:
On Fri, 28 Oct 2011 10:42:39 -0700, "Ian Romanick"<i...@freedesktop.org>  wrote:
From: Ian Romanick<ian.d.roman...@intel.com>

This is just the infrastructure and the code.  It's not used yet.

Signed-off-by: Ian Romanick<ian.d.roman...@intel.com>
---
  src/glsl/link_uniforms.cpp |   95 ++++++++++++++++++++++++++++++++++++++++++++
  src/glsl/linker.h          |    3 +
  2 files changed, 98 insertions(+), 0 deletions(-)

diff --git a/src/glsl/link_uniforms.cpp b/src/glsl/link_uniforms.cpp
index 54af326..a87e69f 100644
--- a/src/glsl/link_uniforms.cpp
+++ b/src/glsl/link_uniforms.cpp
+   /* First pass: Count the uniform resources used by the user-defined
+    * uniforms.  While this happens, each active uniform will have an index
+    * assined to it.

"assigned"

+    * Note: this is *NOT* the index that is returned to the application by
+    * glGetUnfiormLocation.

"Uniform"

+    */
+   count_uniform_usage usage(prog->UniformHash);
+   for (unsigned i = 0; i<  MESA_SHADER_TYPES; i++) {
+      if (prog->_LinkedShaders[i] == NULL)
+        continue;
+
+      foreach_list(node, prog->_LinkedShaders[i]->ir) {
+        ir_variable *const var = ((ir_instruction *) node)->as_variable();
+
+        if ((var == NULL) || (var->mode != ir_var_uniform))
+           continue;
+
+        /* FINISHME: Update code to process built-in uniforms!
+         */
+        if (strncmp("gl_", var->name, 3) == 0)
+           continue;
+
+        usage.process(var);
+      }
+   }
+
+   const unsigned num_user_uniforms = usage.num_active_uniforms;
+   const unsigned num_data_slots = usage.num_values;
+
+   /* On the outside chance that there were no uniforms, bail out.
+    */
+   if (num_user_uniforms == 0)
+      return;

No need to set NumUserUniformStorage?

Clearing the old uniform state at the top of function sets NumUserUniformStorage to 0 and UniformStorage to NULL, so it should be good.
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to