[Mesa-dev] [PATCH 00/11 v2] TGSI: improved live range tracking, also including arrays

Dieter Nützel Dieter at nuetzel-hh.de
Fri Mar 30 14:33:44 UTC 2018


For the series:

Tested-by: Dieter Nützel <Dieter at nuetzel-hh.de>

with glmark2, UH, UV, KDE Plasma5 (my desktop)
R600_DEBUG=sisched,nir
but on radeonsi, Polaris 20 (RX580) not r600 ;-)

GREAT work Gert!

Dieter

Am 26.03.2018 11:27, schrieb Gert Wollny:
> Dear all,
> 
> 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 (11):
>   mesa/st: glsl_to_tgsi: Split arrays who's elements are only accessed
>     directly
>   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 hold array information
>   mesa/st/glsl_to_tgsi: Add array merge logic
>   mesa/st/tests: Add unit tests for array merge helper classes.
>   mesa/st/glsl_to_tgsi: refactor access_record and its use
>   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         | 144 +++-
>  .../state_tracker/st_glsl_to_tgsi_array_merge.cpp  | 735 
> +++++++++++++++++++++
>  .../state_tracker/st_glsl_to_tgsi_array_merge.h    | 186 ++++++
>  .../state_tracker/st_glsl_to_tgsi_temprename.cpp   | 290 +++++---
>  .../state_tracker/st_glsl_to_tgsi_temprename.h     |  47 +-
>  src/mesa/state_tracker/tests/Makefile.am           |  20 +-
>  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           |  10 +-
>  12 files changed, 1644 insertions(+), 133 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