[Mesa-dev] [PATCH 16/32] glsl: Modify uniform_field_visitor::visit_field to take a row_major parameter
Paul Berry
stereotype441 at gmail.com
Wed Jan 23 19:34:41 PST 2013
On 22 January 2013 00:52, Ian Romanick <idr at freedesktop.org> wrote:
> From: Ian Romanick <ian.d.romanick at intel.com>
>
> Not used yet, but the UBO layout visitor will use this.
>
> Signed-off-by: Ian Romanick <ian.d.romanick at 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);
>
Similar question here to the question I had on the last patch: why is it
safe to pass false for row_major here?
> }
> }
>
> @@ -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 at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20130123/21326736/attachment.html>
More information about the mesa-dev
mailing list