Mesa (master): compiler/glsl: Return progress from propagate_invariance()

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Tue Apr 20 19:17:40 UTC 2021


Module: Mesa
Branch: master
Commit: 5ef4296cb651e39402263c426d3edbee99ea1220
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=5ef4296cb651e39402263c426d3edbee99ea1220

Author: Matt Turner <mattst88 at gmail.com>
Date:   Fri Apr 16 13:50:41 2021 -0400

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 at itsqueeze.com>
Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10292>

---

 src/compiler/glsl/glsl_parser_extras.cpp   | 2 +-
 src/compiler/glsl/ir_optimization.h        | 2 +-
 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;
 }



More information about the mesa-commit mailing list