From: Ian Romanick <ian.d.roman...@intel.com> Not used yet, but the UBO layout visitor will use this.
Signed-off-by: Ian Romanick <ian.d.roman...@intel.com> --- src/glsl/link_uniforms.cpp | 15 ++++++++++----- src/glsl/linker.h | 4 +++- src/mesa/program/ir_to_mesa.cpp | 8 ++++++-- 3 files changed, 19 insertions(+), 8 deletions(-) diff --git a/src/glsl/link_uniforms.cpp b/src/glsl/link_uniforms.cpp index 66a2804..4b8dc42 100644 --- a/src/glsl/link_uniforms.cpp +++ b/src/glsl/link_uniforms.cpp @@ -68,7 +68,7 @@ uniform_field_visitor::process(ir_variable *var) recursion(var->type, &name, strlen(name), false); ralloc_free(name); } else { - this->visit_field(t, var->name); + this->visit_field(t, var->name, false); } } @@ -104,7 +104,7 @@ uniform_field_visitor::recursion(const glsl_type *t, char **name, t->fields.structure[i].row_major); } } else { - this->visit_field(t, *name); + this->visit_field(t, *name, row_major); } } @@ -154,11 +154,14 @@ public: unsigned num_shader_uniform_components; private: - virtual void visit_field(const glsl_type *type, const char *name) + virtual void visit_field(const glsl_type *type, const char *name, + bool row_major) { assert(!type->is_record()); assert(!(type->is_array() && type->fields.array->is_record())); + (void) row_major; + /* Count the number of samplers regardless of whether the uniform is * already in the hash table. The hash table prevents adding the same * uniform for multiple shader targets, but in this case we want to @@ -258,11 +261,14 @@ public: int ubo_byte_offset; private: - virtual void visit_field(const glsl_type *type, const char *name) + virtual void visit_field(const glsl_type *type, const char *name, + bool row_major) { assert(!type->is_record()); assert(!(type->is_array() && type->fields.array->is_record())); + (void) row_major; + unsigned id; bool found = this->map->get(id, name); assert(found); @@ -454,7 +460,6 @@ link_update_uniform_buffer_variables(struct gl_shader *shader) for (unsigned j = 0; j < shader->UniformBlocks[i].NumUniforms; j++) { if (!strcmp(var->name, shader->UniformBlocks[i].Uniforms[j].Name)) { found = true; - var->uniform_block = i; var->location = j; break; } diff --git a/src/glsl/linker.h b/src/glsl/linker.h index 2af1925..f394bfe 100644 --- a/src/glsl/linker.h +++ b/src/glsl/linker.h @@ -84,8 +84,10 @@ protected: * * \param type Type of the field. * \param name Fully qualified name of the field. + * \param row_major For a matrix type, is it stored row-major. */ - virtual void visit_field(const glsl_type *type, const char *name) = 0; + virtual void visit_field(const glsl_type *type, const char *name, + bool row_major) = 0; private: /** diff --git a/src/mesa/program/ir_to_mesa.cpp b/src/mesa/program/ir_to_mesa.cpp index 36d0bdc..c85372a 100644 --- a/src/mesa/program/ir_to_mesa.cpp +++ b/src/mesa/program/ir_to_mesa.cpp @@ -2382,7 +2382,8 @@ public: } private: - virtual void visit_field(const glsl_type *type, const char *name); + virtual void visit_field(const glsl_type *type, const char *name, + bool row_major); struct gl_shader_program *shader_program; struct gl_program_parameter_list *params; @@ -2390,10 +2391,13 @@ private: }; void -add_uniform_to_shader::visit_field(const glsl_type *type, const char *name) +add_uniform_to_shader::visit_field(const glsl_type *type, const char *name, + bool row_major) { unsigned int size; + (void) row_major; + if (type->is_vector() || type->is_scalar()) { size = type->vector_elements; } else { -- 1.7.11.7 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev