From 58c988ada56114b56477983f66b4039219f1a82c Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Mon, 17 Jan 2011 22:07:55 -0800 Subject: glsl: Skip the rest of loop unrolling if no loops were found. Shaves 1.6% (+/- 1.0%) off of ff_fragment_shader glean texCombine time (n=5). --- src/glsl/glsl_parser_extras.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src/glsl/glsl_parser_extras.cpp') diff --git a/src/glsl/glsl_parser_extras.cpp b/src/glsl/glsl_parser_extras.cpp index cbeacd5633..77885d4e1e 100644 --- a/src/glsl/glsl_parser_extras.cpp +++ b/src/glsl/glsl_parser_extras.cpp @@ -748,8 +748,10 @@ do_common_optimization(exec_list *ir, bool linked, unsigned max_unroll_iteration progress = optimize_redundant_jumps(ir) || progress; loop_state *ls = analyze_loop_variables(ir); - progress = set_loop_controls(ir, ls) || progress; - progress = unroll_loops(ir, ls, max_unroll_iterations) || progress; + if (ls->loop_found) { + progress = set_loop_controls(ir, ls) || progress; + progress = unroll_loops(ir, ls, max_unroll_iterations) || progress; + } delete ls; return progress; -- cgit v1.2.3