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