[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