[Mesa-dev] [PATCH v3 00/13] TGSI: improved live range tracking, also including arrays
Roland Scheidegger
sroland at vmware.com
Mon Apr 30 17:46:36 UTC 2018
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
>
More information about the mesa-dev
mailing list