mesa/st: glsl_to_tgsi: add register rename mapping evaluator
authorGert Wollny <gw.fossdev@gmail.com>
Fri, 30 Jun 2017 06:45:48 +0000 (08:45 +0200)
committerNicolai Hähnle <nicolai.haehnle@amd.com>
Wed, 6 Sep 2017 09:49:46 +0000 (11:49 +0200)
commit84529c077b96a7ad0fa529aa77b0845b95a70d4c
treeb0a665d18a6f6b02e402d7a430a3d2c23b5832f8
parent7be6d8fe1250f3b1d5fb2347839567049526c5be
mesa/st: glsl_to_tgsi: add register rename mapping evaluator

The remapping evaluator first sorts the temporary registers ascending
based on their first life time instruction, and then uses a binary search
to find merge canidates.
For the initial sorting it uses std::sort because qsort is quite slow in
comparison. By removing the define USE_STL_SORT in
  src/mesa/state_tracker/st_glsl_to_tgsi_temprename.cpp
one can enable the alternative code path that uses qsort.

Registers that are not written to are not considered for renaming since in
glsl_to_tgsi_visitor::renumber_registers they are eliminated anyway.

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
src/mesa/state_tracker/st_glsl_to_tgsi_temprename.cpp
src/mesa/state_tracker/st_glsl_to_tgsi_temprename.h
src/mesa/state_tracker/tests/test_glsl_to_tgsi_lifetime.cpp