From 6305caea521fb2c7f82100db490f03d279185c43 Mon Sep 17 00:00:00 2001 From: Ian Romanick Date: Sat, 19 Jul 2014 14:41:04 -0700 Subject: [PATCH] glsl: Use the without_array predicate to simplify some code Signed-off-by: Ian Romanick Reviewed-by: Matt Turner [v1] Reviewed-by: Timothy Arceri --- src/glsl/ast_to_hir.cpp | 3 +-- src/glsl/glsl_types.cpp | 3 +-- src/glsl/link_uniforms.cpp | 23 ++++++++--------------- src/glsl/link_varyings.cpp | 6 ++---- 4 files changed, 12 insertions(+), 23 deletions(-) diff --git a/src/glsl/ast_to_hir.cpp b/src/glsl/ast_to_hir.cpp index 7249a06c928..397a575501d 100644 --- a/src/glsl/ast_to_hir.cpp +++ b/src/glsl/ast_to_hir.cpp @@ -5203,8 +5203,7 @@ ast_process_structure_or_interface_block(exec_list *instructions, "in uniform blocks or structures."); } - if (field_type->is_matrix() || - (field_type->is_array() && field_type->fields.array->is_matrix())) { + if (field_type->without_array()->is_matrix()) { fields[i].row_major = block_row_major; if (qual->flags.q.row_major) fields[i].row_major = true; diff --git a/src/glsl/glsl_types.cpp b/src/glsl/glsl_types.cpp index f9cd258fefa..737e6dd0422 100644 --- a/src/glsl/glsl_types.cpp +++ b/src/glsl/glsl_types.cpp @@ -872,8 +872,7 @@ glsl_type::std140_size(bool row_major) const * and rows, the matrix is stored identically to a row of * * row vectors with components each, according to rule (4). */ - if (this->is_matrix() || (this->is_array() && - this->fields.array->is_matrix())) { + if (this->without_array()->is_matrix()) { const struct glsl_type *element_type; const struct glsl_type *vec_type; unsigned int array_len; diff --git a/src/glsl/link_uniforms.cpp b/src/glsl/link_uniforms.cpp index 6c731976b74..74895362c7d 100644 --- a/src/glsl/link_uniforms.cpp +++ b/src/glsl/link_uniforms.cpp @@ -59,10 +59,8 @@ values_for_type(const glsl_type *type) void program_resource_visitor::process(const glsl_type *type, const char *name) { - assert(type->is_record() - || (type->is_array() && type->fields.array->is_record()) - || type->is_interface() - || (type->is_array() && type->fields.array->is_interface())); + assert(type->without_array()->is_record() + || type->without_array()->is_interface()); char *name_copy = ralloc_strdup(NULL, name); recursion(type, &name_copy, strlen(name), false, NULL); @@ -136,7 +134,7 @@ program_resource_visitor::process(ir_variable *var) */ recursion(var->type, &name, strlen(name), false, NULL); ralloc_free(name); - } else if (t->is_record() || (t->is_array() && t->fields.array->is_record())) { + } else if (t->without_array()->is_record()) { char *name = ralloc_strdup(NULL, var->name); recursion(var->type, &name, strlen(name), false, NULL); ralloc_free(name); @@ -299,10 +297,8 @@ private: 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())); - assert(!type->is_interface()); - assert(!(type->is_array() && type->fields.array->is_interface())); + assert(!type->without_array()->is_record()); + assert(!type->without_array()->is_interface()); (void) row_major; @@ -514,10 +510,8 @@ private: virtual void visit_field(const glsl_type *type, const char *name, bool row_major, const glsl_type *record_type) { - assert(!type->is_record()); - assert(!(type->is_array() && type->fields.array->is_record())); - assert(!type->is_interface()); - assert(!(type->is_array() && type->fields.array->is_interface())); + assert(!type->without_array()->is_record()); + assert(!type->without_array()->is_interface()); (void) row_major; @@ -590,8 +584,7 @@ private: this->uniforms[id].array_stride = 0; } - if (type->is_matrix() || - (type->is_array() && type->fields.array->is_matrix())) { + if (type->without_array()->is_matrix()) { this->uniforms[id].matrix_stride = 16; this->uniforms[id].row_major = ubo_row_major; } else { diff --git a/src/glsl/link_varyings.cpp b/src/glsl/link_varyings.cpp index a3fc2ae3489..1438a4b16c2 100644 --- a/src/glsl/link_varyings.cpp +++ b/src/glsl/link_varyings.cpp @@ -1068,10 +1068,8 @@ private: 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())); - assert(!type->is_interface()); - assert(!(type->is_array() && type->fields.array->is_interface())); + assert(!type->without_array()->is_record()); + assert(!type->without_array()->is_interface()); (void) row_major; -- 2.30.2