<div dir="ltr"><div><div>I sent a replacement for patch 1.  Patches 2 and 3 are<br><br></div>Reviewed-by: Jason Ekstrand <<a href="mailto:jason@jlekstrand.net">jason@jlekstrand.net</a>><br><br></div><div>We should CC stable on my replacement for 1 and 2 because these affect Vulkan even without the AoA splitting patch.<br><br></div><div>--Jason<br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Sat, Jul 15, 2017 at 12:48 AM, Timothy Arceri <span dir="ltr"><<a href="mailto:tarceri@itsqueeze.com" target="_blank">tarceri@itsqueeze.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On Mon, Jul 3, 2017, at 10:16 AM, Jason Ekstrand wrote:<br>
> I'd like the chance to look at these, please.  I'm on vacation today and<br>
> tomorrow though.<br>
<br>
</span>Ping!<br>
<div class="HOEnZb"><div class="h5"><br>
><br>
><br>
> On July 3, 2017 7:19:04 AM <a href="mailto:funfunctor@folklore1984.net">funfunctor@folklore1984.net</a> wrote:<br>
><br>
> > On 2017-07-03 08:47, Timothy Arceri wrote:<br>
> >> While it produces functioning code the pass creates worse code<br>
> >> for arrays of arrays. See the comment added in this patch for more<br>
> >> detail.<br>
> >><br>
> >> V2: skip splitting of AoA of matrices too.<br>
> ><br>
> > Reviewed-by: Edward O'Callaghan <<a href="mailto:funfunctor@folklore1984.net">funfunctor@folklore1984.net</a>><br>
> ><br>
> >> ---<br>
> >>  src/compiler/glsl/opt_array_<wbr>splitting.cpp | 23 +++++++++++++++++++++++<br>
> >>  1 file changed, 23 insertions(+)<br>
> >><br>
> >> diff --git a/src/compiler/glsl/opt_array_<wbr>splitting.cpp<br>
> >> b/src/compiler/glsl/opt_array_<wbr>splitting.cpp<br>
> >> index fb6d77b..d2e81665 100644<br>
> >> --- a/src/compiler/glsl/opt_array_<wbr>splitting.cpp<br>
> >> +++ b/src/compiler/glsl/opt_array_<wbr>splitting.cpp<br>
> >> @@ -140,6 +140,29 @@<br>
> >> ir_array_reference_visitor::<wbr>get_variable_entry(ir_variable *var)<br>
> >>     if (var->type->is_unsized_array()<wbr>)<br>
> >>        return NULL;<br>
> >><br>
> >> +   /* FIXME: arrays of arrays are not handled correctly by this pass<br>
> >> so we<br>
> >> +    * skip it for now. While the pass will create functioning code it<br>
> >> actually<br>
> >> +    * produces worse code.<br>
> >> +    *<br>
> >> +    * For example the array:<br>
> >> +    *<br>
> >> +    *    int[3][2] a;<br>
> >> +    *<br>
> >> +    * ends up being split up into:<br>
> >> +    *<br>
> >> +    *    int[3][2] a_0;<br>
> >> +    *    int[3][2] a_1;<br>
> >> +    *    int[3][2] a_2;<br>
> >> +    *<br>
> >> +    * And we end up referencing each of these new arrays for example:<br>
> >> +    *<br>
> >> +    *    a[0][1] will be turned into a_0[0][1]<br>
> >> +    *    a[1][0] will be turned into a_1[1][0]<br>
> >> +    *    a[2][0] will be turned into a_2[2][0]<br>
> >> +    */<br>
> >> +   if (var->type->is_array() && var->type->fields.array->is_<wbr>array())<br>
> >> +      return NULL;<br>
> >> +<br>
> >>     foreach_in_list(variable_<wbr>entry, entry, &this->variable_list) {<br>
> >>        if (entry->var == var)<br>
> >>           return entry;<br>
> ><br>
> > ______________________________<wbr>_________________<br>
> > mesa-dev mailing list<br>
> > <a href="mailto:mesa-dev@lists.freedesktop.org">mesa-dev@lists.freedesktop.org</a><br>
> > <a href="https://lists.freedesktop.org/mailman/listinfo/mesa-dev" rel="noreferrer" target="_blank">https://lists.freedesktop.org/<wbr>mailman/listinfo/mesa-dev</a><br>
><br>
><br>
</div></div></blockquote></div><br></div>