Browse Source

Don't process empty shaders

Some valid shaders, such as 'precision highp float;', evaluate to
empty sets of instructions.  This causes some of the optimization
stages to enter infinite loops.  Instead, don't bother processing the
empty ones.
tags/mesa-7.9-rc1
Ian Romanick 15 years ago
parent
commit
15d162d7b1
1 changed files with 3 additions and 2 deletions
  1. 3
    2
      glsl_parser_extras.cpp

+ 3
- 2
glsl_parser_extras.cpp View File

@@ -737,7 +737,8 @@ main(int argc, char **argv)
ast->print();
}

_mesa_ast_to_hir(&instructions, &state);
if (!state.translation_unit.is_empty())
_mesa_ast_to_hir(&instructions, &state);
} else {
/* FINISHME: We should initialize this to the max GLSL version supported
* FINISHME: by the driver. At the moment, we don't know what that is.
@@ -748,7 +749,7 @@ main(int argc, char **argv)
}

/* Optimization passes */
if (!state.error) {
if (!state.error && !instructions.is_empty()) {
bool progress;
do {
progress = false;

Loading…
Cancel
Save