Dear all, 

I'd like to get this series in the 18.3 release cycle applied. I've
been using it for quite some time without issues, and it seems to fix a
number of problems on r600. For instance, a number of dEQP-GLES31 tests
fail because of issued with spilling, but with these patches the need
for spilling can be eliminated in these cases. I also didn't see any
piglit regressions, and the patches still apply cleanly. 

Many thanks to anyone who reviews, or at least ack. this series, 
Gert

Am Dienstag, den 05.06.2018, 22:26 +0200 schrieb Gert Wollny:
> taking the comments of Nicolai Hähnle into account I've updated the
> series. I'd also 
> like to thank Benedikt Schemmer for going out on the adventure to
> these these patches
> on radeonsi for which this code path is actually not relevant. It
> made me realize, 
> that I was not tracking the inst->resources register. I think,
> however, that r600 and 
> llvmpipe are not really using that register, so I cannot test whether
> there are any 
> fixes or regressions coming with this (for me the piglit results
> didn't change).
> 
> v4: 
>  - make the TGSI statistics collection routine thread save, 
>  - rework the classes that are used to evaluate and apply the array
> merging (I 
>    did not follow Nicolais suggestion to handle the array live range
> also within 
>    the class that tracks temporary registers because I think the
> handling is 
>    sufficiently different, and because the temporary register live
> range 
>    evaluation code is already difficult enough, no need to add more
> complexity 
>    to also handle arrays), 
>  - inst->resource to be also taken into account in the live range
> tracking and 
>    array remapping
>  - add two patches that add test infrastructure and unit tests for
> array live 
>    range tracking and remapping
> 
> 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.
> 
> Many thanks for reviews and comments, 
> Gert 
> 
> PS: I have no commit rights. 
> 
> Gert Wollny (15):
>   mesa/st/glsl_to_tgsi: Add method to collect some TGSI statistics
>   mesa/st/glsl_to_tgsi: Split arrays whose 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/glsl_to_tgsi: Add helper class for array live range merging
>     and interleaving
>   mesa/st/glsl_to_tgsi: Add helper classes to apply array merging and
>     interleaving
>   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
>   mesa/st/tests: Add array life range tests infrastructure to common
>     test class
>   mesa/st/tests: Add array life range estimation and renumbering
> tests
> 
>  src/mesa/Makefile.sources                          |   2 +
>  src/mesa/meson.build                               |   2 +
>  src/mesa/state_tracker/st_glsl_to_tgsi.cpp         | 214 ++++-
>  .../state_tracker/st_glsl_to_tgsi_array_merge.cpp  | 698
> +++++++++++++++
>  .../state_tracker/st_glsl_to_tgsi_array_merge.h    | 188 ++++
>  .../state_tracker/st_glsl_to_tgsi_temprename.cpp   | 307 +++++--
>  .../state_tracker/st_glsl_to_tgsi_temprename.h     |  45 +-
>  src/mesa/state_tracker/tests/Makefile.am           |  20 +-
>  src/mesa/state_tracker/tests/meson.build           |  16 +-
>  src/mesa/state_tracker/tests/st_tests_common.cpp   | 190 +++-
>  src/mesa/state_tracker/tests/st_tests_common.h     |  52 +-
>  .../tests/test_glsl_to_tgsi_array_merge.cpp        | 962
> +++++++++++++++++++++
>  .../tests/test_glsl_to_tgsi_lifetime.cpp           |  35 +-
>  13 files changed, 2579 insertions(+), 152 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

Reply via email to