This patch moves vec4_visitor::run()'s optimization loop to its own method.
This helps pave the way for separating the IR visiting parts of vec4_visitor from the code generation parts, by reducing the number of function calls between the two parts. --- src/mesa/drivers/dri/i965/brw_vec4.h | 1 + src/mesa/drivers/dri/i965/brw_vec4_emit.cpp | 23 ++++++++++++++--------- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/src/mesa/drivers/dri/i965/brw_vec4.h b/src/mesa/drivers/dri/i965/brw_vec4.h index c0284fc..5d2f120 100644 --- a/src/mesa/drivers/dri/i965/brw_vec4.h +++ b/src/mesa/drivers/dri/i965/brw_vec4.h @@ -411,6 +411,7 @@ public: bool opt_copy_propagation(); bool opt_algebraic(); bool opt_compute_to_mrf(); + void optimize(); vec4_instruction *emit(vec4_instruction *inst); diff --git a/src/mesa/drivers/dri/i965/brw_vec4_emit.cpp b/src/mesa/drivers/dri/i965/brw_vec4_emit.cpp index dceacc7..5724a29 100644 --- a/src/mesa/drivers/dri/i965/brw_vec4_emit.cpp +++ b/src/mesa/drivers/dri/i965/brw_vec4_emit.cpp @@ -622,6 +622,19 @@ vec4_visitor::generate_vs_instruction(vec4_instruction *instruction, } void +vec4_visitor::optimize() +{ + bool progress; + do { + progress = false; + progress = dead_code_eliminate() || progress; + progress = opt_copy_propagation() || progress; + progress = opt_algebraic() || progress; + progress = opt_compute_to_mrf() || progress; + } while (progress); +} + +void vec4_visitor::run() { if (c->key.userclip_active && !c->key.uses_clip_distance) @@ -645,15 +658,7 @@ vec4_visitor::run() pack_uniform_registers(); move_push_constants_to_pull_constants(); - bool progress; - do { - progress = false; - progress = dead_code_eliminate() || progress; - progress = opt_copy_propagation() || progress; - progress = opt_algebraic() || progress; - progress = opt_compute_to_mrf() || progress; - } while (progress); - + optimize(); if (failed()) return; -- 1.7.6.4 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev