On 06/10/15 13:14, Timothy Arceri wrote: > On Tue, 2015-10-06 at 10:26 +0200, Samuel Iglesias Gonsalvez wrote: >> Signed-off-by: Samuel Iglesias Gonsalvez <sigles...@igalia.com> >> Cc: Timothy Arceri <t_arc...@yahoo.com.au> > > > I haven't looked at this too hard yet but just fyi I sent a v6 of my > patchseries that added UBO AoA support that this patch might clash > with. Also you remove some of the changes here in the next patch. > > You can get v7 (branch AoA_v7) here which just rebases v6 on master > from today: > > https://github.com/tarceri/Mesa_arrays_of_arrays >
OK, I rebased my patches on top of your branch and I got the following results... > >> --- >> src/glsl/lower_ubo_reference.cpp | 12 ++++++------ >> 1 file changed, 6 insertions(+), 6 deletions(-) >> >> diff --git a/src/glsl/lower_ubo_reference.cpp >> b/src/glsl/lower_ubo_reference.cpp >> index 183435e..f4150df 100644 >> --- a/src/glsl/lower_ubo_reference.cpp >> +++ b/src/glsl/lower_ubo_reference.cpp >> @@ -325,17 +325,17 @@ >> lower_ubo_reference_visitor::setup_for_load_or_store(ir_variable >> *var, >> case ir_type_dereference_array: { >> ir_dereference_array *deref_array = (ir_dereference_array >> *) deref; >> unsigned array_stride; >> - if (deref_array->array->type->is_matrix() && *row_major) { >> + if (deref_array->type->without_array()->is_matrix() && >> *row_major) { >> /* When loading a vector out of a row major matrix, the >> * step between the columns (vectors) is the size of a >> * float, while the step between the rows (elements of a >> * vector) is handled below in emit_ubo_loads. >> */ >> array_stride = 4; >> - if (deref_array->array->type->is_double()) >> + if (deref_array->type->without_array()->is_double()) >> array_stride *= 2; >> *matrix_columns = deref_array->array->type >> ->matrix_columns; >> - } else if (deref_array->type->is_interface()) { >> + } else if (deref_array->type->without_array() >> ->is_interface()) { >> /* We're processing an array dereference of an interface >> instance >> * array. The thing being dereferenced *must* be a >> variable >> * dereference because interfaces cannot be embedded in >> other >> @@ -649,10 +649,10 @@ lower_ubo_reference_visitor::emit_access(bool >> is_write, >> Ignore the above hunk. As you mentioned in the next patch, this is undo-ed later (I merged wrongly the changes). >> if (deref->type->is_array()) { >> unsigned array_stride = packing == >> GLSL_INTERFACE_PACKING_STD430 ? >> - deref->type->fields.array->std430_array_stride(row_major) : >> - glsl_align(deref->type->fields.array >> ->std140_size(row_major), 16); >> + deref->type->without_array() >> ->std430_array_stride(row_major) : >> + glsl_align(deref->type->without_array() >> ->std140_size(row_major), 16); >> >> - for (unsigned i = 0; i < deref->type->length; i++) { >> + for (unsigned i = 0; i < deref->type->arrays_of_arrays_size(); >> i++) { >> ir_constant *element = new(mem_ctx) ir_constant(i); >> ir_dereference *element_deref = >> new(mem_ctx) ir_dereference_array(deref->clone(mem_ctx, >> NULL), > This hunk still applies. Sam _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev