summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/bgfx/3rdparty/glsl-optimizer/src/glsl/glsl_optimizer.cpp
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/bgfx/3rdparty/glsl-optimizer/src/glsl/glsl_optimizer.cpp')
-rw-r--r--3rdparty/bgfx/3rdparty/glsl-optimizer/src/glsl/glsl_optimizer.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/3rdparty/bgfx/3rdparty/glsl-optimizer/src/glsl/glsl_optimizer.cpp b/3rdparty/bgfx/3rdparty/glsl-optimizer/src/glsl/glsl_optimizer.cpp
index c4e7a03cccc..e91b86a935e 100644
--- a/3rdparty/bgfx/3rdparty/glsl-optimizer/src/glsl/glsl_optimizer.cpp
+++ b/3rdparty/bgfx/3rdparty/glsl-optimizer/src/glsl/glsl_optimizer.cpp
@@ -440,8 +440,12 @@ static bool propagate_precision(exec_list* list, bool assign_high_to_undefined)
static void do_optimization_passes(exec_list* ir, bool linked, _mesa_glsl_parse_state* state, void* mem_ctx)
{
bool progress;
+ // FIXME: Shouldn't need to bound the number of passes
+ int passes = 0,
+ kMaximumPasses = 1000;
do {
progress = false;
+ ++passes;
bool progress2;
debug_print_ir ("Initial", ir, state, mem_ctx);
if (linked) {
@@ -497,7 +501,7 @@ static void do_optimization_passes(exec_list* ir, bool linked, _mesa_glsl_parse_
}
delete ls;
}
- } while (progress);
+ } while (progress && passes < kMaximumPasses);
if (!state->metal_target)
{