Am Sonntag, den 26.11.2017, 18:01 -0800 schrieb Eric Anholt: > Gert Wollny <[email protected]> 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 _______________________________________________ mesa-dev mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-dev
