diff options
author | Matt Turner <mattst88@gmail.com> | 2021-04-16 13:50:41 -0400 |
---|---|---|
committer | Marge Bot <eric+marge@anholt.net> | 2021-04-20 18:54:57 +0000 |
commit | 5ef4296cb651e39402263c426d3edbee99ea1220 (patch) | |
tree | c85b8cda4ad634667d68e0552c2a8ec53e91c38c | |
parent | 9fb1f9303b5e082f1aa6133c76a71cbf075bfd11 (diff) |
compiler/glsl: Return progress from propagate_invariance()
Doing so allow you to easily tell what the pass did using the existing
infrastructure in the OPT macro.
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10292>
-rw-r--r-- | src/compiler/glsl/glsl_parser_extras.cpp | 2 | ||||
-rw-r--r-- | src/compiler/glsl/ir_optimization.h | 2 | ||||
-rw-r--r-- | src/compiler/glsl/propagate_invariance.cpp | 6 |
3 files changed, 7 insertions, 3 deletions
diff --git a/src/compiler/glsl/glsl_parser_extras.cpp b/src/compiler/glsl/glsl_parser_extras.cpp index 0cabd73be49..90f2328e67c 100644 --- a/src/compiler/glsl/glsl_parser_extras.cpp +++ b/src/compiler/glsl/glsl_parser_extras.cpp @@ -2331,7 +2331,7 @@ do_common_optimization(exec_list *ir, bool linked, OPT(do_dead_functions, ir); OPT(do_structure_splitting, ir); } - propagate_invariance(ir); + OPT(propagate_invariance, ir); OPT(do_if_simplification, ir); OPT(opt_flatten_nested_if_blocks, ir); OPT(opt_conditional_discard, ir); diff --git a/src/compiler/glsl/ir_optimization.h b/src/compiler/glsl/ir_optimization.h index 9f002e9b9e2..7a3aadd6295 100644 --- a/src/compiler/glsl/ir_optimization.h +++ b/src/compiler/glsl/ir_optimization.h @@ -177,7 +177,7 @@ bool lower_blend_equation_advanced(gl_linked_shader *shader, bool coherent); bool lower_builtins(exec_list *instructions); bool lower_subroutine(exec_list *instructions, struct _mesa_glsl_parse_state *state); -void propagate_invariance(exec_list *instructions); +bool propagate_invariance(exec_list *instructions); namespace ir_builder { class ir_factory; }; diff --git a/src/compiler/glsl/propagate_invariance.cpp b/src/compiler/glsl/propagate_invariance.cpp index b3f1d810cdb..2673fa16378 100644 --- a/src/compiler/glsl/propagate_invariance.cpp +++ b/src/compiler/glsl/propagate_invariance.cpp @@ -113,13 +113,17 @@ ir_invariance_propagation_visitor::visit(ir_dereference_variable *ir) return visit_continue; } -void +bool propagate_invariance(exec_list *instructions) { ir_invariance_propagation_visitor visitor; + bool progress = false; do { visitor.progress = false; visit_list_elements(&visitor, instructions); + progress = progress || visitor.progress; } while (visitor.progress); + + return progress; } |