[Mesa-dev] [PATCH] mesa/st: glsl_to_tgsi: Dissolve arrays who's elements are only accessed directly

Gert Wollny gw.fossdev at gmail.com
Mon Nov 27 11:14:28 UTC 2017


Am Sonntag, den 26.11.2017, 18:01 -0800 schrieb Eric Anholt:
> Gert Wollny <gw.fossdev at gmail.com> writes:
> 
> > Array who's elements are only accessed directly are replaced by the
> > according number of temporary registers. By doing so the otherwise
> > > reserved register range becomes subject to further optimizations 
> > >  like copy propagation and register merging.
> > >
> > > Thanks to the resulting reduced register pressure this patch
> > > makes the piglits
> > >
> > > spec/glsl-1.50/execution -
> > >   variable-indexing/vs-output-array-vec3-index-wr-before-gs
> > >   geometry/max-input-components
> > > 
> > > pass 
> > 
> > 
> This looks like something that should be done with (at most) a small
> change to opt_array_splitting.cpp, rather than reimplementing it
> here.

It seems that the reason the arrays are not split there is that in the
case of the given piglits, the arrays are accessed in loops, and only
because the loops are completely unrolled (on r600), the array elements
are then no longer addressed indirectly and can be split.

Since I have not yet looked at that part of the code I wonder now 
whether it one can simply move the "optieie_split_arrays" step past the
loop unrolling, or whether one should duplicate that step. 

many thanks, 
Gert



More information about the mesa-dev mailing list