[Mesa-dev] [PATCH 09/16] glsl: clean-up link uniform code
Samuel Iglesias Gonsálvez
siglesias at igalia.com
Tue Jul 21 01:03:59 PDT 2015
On 18/07/15 03:25, Timothy Arceri wrote:
> ---
> src/glsl/link_uniforms.cpp | 16 ++++++----------
> 1 file changed, 6 insertions(+), 10 deletions(-)
>
> diff --git a/src/glsl/link_uniforms.cpp b/src/glsl/link_uniforms.cpp
> index 11ae06f..2d50b9b 100644
> --- a/src/glsl/link_uniforms.cpp
> +++ b/src/glsl/link_uniforms.cpp
> @@ -71,6 +71,7 @@ void
> program_resource_visitor::process(ir_variable *var)
> {
> const glsl_type *t = var->type;
> + const glsl_type *t_without_array = var->type->without_array();
> const bool row_major =
> var->data.matrix_layout == GLSL_MATRIX_LAYOUT_ROW_MAJOR;
>
> @@ -140,12 +141,8 @@ program_resource_visitor::process(ir_variable *var)
> char *name = ralloc_strdup(NULL, var->name);
> recursion(var->type, &name, strlen(name), row_major, NULL, false);
> ralloc_free(name);
> - } else if (t->is_interface()) {
> - char *name = ralloc_strdup(NULL, var->type->name);
> - recursion(var->type, &name, strlen(name), row_major, NULL, false);
> - ralloc_free(name);
> - } else if (t->is_array() && t->fields.array->is_interface()) {
> - char *name = ralloc_strdup(NULL, var->type->fields.array->name);
> + } else if (t_without_array->is_interface()) {
> + char *name = ralloc_strdup(NULL, t_without_array->name);
> recursion(var->type, &name, strlen(name), row_major, NULL, false);
> ralloc_free(name);
> } else {
> @@ -216,8 +213,8 @@ program_resource_visitor::recursion(const glsl_type *t, char **name,
> (*name)[name_length] = '\0';
> this->leave_record(t, *name, row_major);
> }
> - } else if (t->is_array() && (t->fields.array->is_record()
> - || t->fields.array->is_interface())) {
> + } else if (t->without_array()->is_record()
> + || t->without_array()->is_interface()) {
I have my doubts about this change. It is not wrong per se but I prefer
to keep the context the original code gives to the reader.
With your change, readers might not see that we are checking an array of
interfaces/records and they could ask themselves why this code is not
merged to previous t->is_interface() or t->is_record() cases.
I would do only that change if we are planning to merge this code to the
non-array case.
> if (record_type == NULL && t->fields.array->is_record())
> record_type = t->fields.array;
>
> @@ -778,8 +775,7 @@ link_update_uniform_buffer_variables(struct gl_shader *shader)
>
> if (var->type->is_record()) {
> sentinel = '.';
> - } else if (var->type->is_array()
> - && var->type->fields.array->is_record()) {
> + } else if (var->type->without_array()->is_record()) {
Same doubt as before.
However, I think it is a matter of taste. What do you think?
Sam
> sentinel = '[';
> }
>
>
More information about the mesa-dev
mailing list