This patch replaces the old register livetime estimation with the new approach. --- src/mesa/state_tracker/st_glsl_to_tgsi.cpp | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-)
diff --git a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp index f64aedb876..d57004c269 100644 --- a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp +++ b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp @@ -55,10 +55,11 @@ #include "st_glsl_types.h" #include "st_nir.h" #include "st_shader_cache.h" -#include "st_glsl_to_tgsi_private.h" +#include "st_glsl_to_tgsi_temprename.h" #include "util/hash_table.h" #include <algorithm> +#include <iostream> #define PROGRAM_ANY_CONST ((1 << PROGRAM_STATE_VAR) | \ (1 << PROGRAM_CONSTANT) | \ @@ -325,6 +326,7 @@ public: void merge_two_dsts(void); void merge_registers(void); + void merge_registers_alternative(void); void renumber_registers(void); void emit_block_mov(ir_assignment *ir, const struct glsl_type *type, @@ -5140,6 +5142,16 @@ glsl_to_tgsi_visitor::merge_two_dsts(void) } } +void +glsl_to_tgsi_visitor::merge_registers_alternative(void) +{ + struct rename_reg_pair *renames = rzalloc_array(mem_ctx, struct rename_reg_pair, this->next_temp); + auto lt = estimate_temporary_lifetimes(&this->instructions, this->next_temp); + evaluate_remapping(lt, renames); + rename_temp_registers(&renames[0]); + ralloc_free(renames); +} + /* Merges temporary registers together where possible to reduce the number of * registers needed to run a program. * @@ -6605,7 +6617,7 @@ get_mesa_program_tgsi(struct gl_context *ctx, v->merge_two_dsts(); if (!skip_merge_registers) - v->merge_registers(); + v->merge_registers_alternative(); v->renumber_registers(); /* Write the END instruction. */ -- 2.13.0 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev