FWIW I'm not really qualified to review this, but this alleviates the concerns I had some time ago about doing spilling for r600 before sb. So this makes all sense to me.
Roland Am 28.04.2018 um 21:30 schrieb Gert Wollny: > this is another update of the series I've sent before. > > v3: > - Add new test mesa/st/tests/meson.build > - rebase patches to latest HEAD > > this is the merged version of two series [1] (TGSI: split, merge > and interleave arrays) and [2] (mesa/st/glsl_to_tgsi: Properly > resolve life times for simple if/else + use constructs) I sent > earlier. Considering that both parts target the same optimization > step and fix a bug if both are applied, I thought it is better to > add this second patch to the series. Changes refer to v1 of [1]: > > v2: > - rebase patches to latest HEAD > - add some code that allows obtaining some statistics about register > and instruction usage > - Add patch [2] that improves resolving the live range estimation with > simple if/else and use constructs. By adding this patch the series > fixes https://bugs.freedesktop.org/show_bug.cgi?id=105371 > > v1: > Patch 1: Split arrays that are only accessed directly: > I posted a first version off the the array splitting in patch 1 some > time ago. Eric Anholt pointed out that this might be done in > opt_array_splitting.cpp, but in another comment Timothy pointed out > that this is far from trivial, and he also pointed out that he was > proposing similar patches for NIR, but since currently no NIR->TGSI > transformation is available, TGSI based drivers can't make use of this. > > While the reminder off the series could be applied without this patch, I > think it makes less sense to do all the optimizations on arrays that could > simply be split into individual registers, so I repost the patch with some > changes. > > I tried to be exhaustive with comments and make the variable any type names > self-explaining, but since I've been staring at this code for a long time I > don't think I am capable of seeing any problems any more, so comments are > very > welcome. > > Best, > Gert > > PS: I have no git write access. > > > [1] https://patchwork.freedesktop.org/series/37991/ > [2] https://patchwork.freedesktop.org/series/39471/ > > > Gert Wollny (13): > mesa/st/glsl_to_tgsi: Add method to collect some statistics > mesa/st: glsl_to_tgsi: Split arrays who's elements are only accessed > directly > mesa/st/glsl_to_tgsi: Properly resolve life times simple if/else + use > constructs > mesa/st/glsl_to_tgsi:rename lifetime to register_live_range > mesa/st: Add helper classes for array merging and interleaving > mesa/st/glsl_to_tgsi: Add class to track array live range > mesa/st/glsl_to_tgsi:Add array merge logic > mesa/st/tests: Add tests for array merge helper classes. > mesa/st/glsl_to_tgsi: rename access_record to register_merge_record > and some more renames > mesa/st/glsl_to_tgsi: move evaluation of read mask up in the call > hierarchy > mesa/st/glsl_to_tgsi: add class for array access tracking > mesa/st/glsl_to_tgsi: add array life range evaluation into tracking > code > mesa/st/glsl_to_tgsi: Expose array live range tracking and merging > > src/mesa/Makefile.sources | 2 + > src/mesa/meson.build | 2 + > src/mesa/state_tracker/st_glsl_to_tgsi.cpp | 205 +++++- > .../state_tracker/st_glsl_to_tgsi_array_merge.cpp | 739 > +++++++++++++++++++++ > .../state_tracker/st_glsl_to_tgsi_array_merge.h | 186 ++++++ > .../state_tracker/st_glsl_to_tgsi_temprename.cpp | 304 ++++++--- > .../state_tracker/st_glsl_to_tgsi_temprename.h | 45 +- > src/mesa/state_tracker/tests/Makefile.am | 20 +- > src/mesa/state_tracker/tests/meson.build | 14 + > src/mesa/state_tracker/tests/st_tests_common.cpp | 25 +- > src/mesa/state_tracker/tests/st_tests_common.h | 20 +- > .../tests/test_glsl_to_tgsi_array_merge.cpp | 296 +++++++++ > .../tests/test_glsl_to_tgsi_lifetime.cpp | 33 +- > 13 files changed, 1760 insertions(+), 131 deletions(-) > create mode 100644 src/mesa/state_tracker/st_glsl_to_tgsi_array_merge.cpp > create mode 100644 src/mesa/state_tracker/st_glsl_to_tgsi_array_merge.h > create mode 100644 > src/mesa/state_tracker/tests/test_glsl_to_tgsi_array_merge.cpp > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev