mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-27 23:30:10 +01:00
glsl: Compute version_string on the fly.
Fixes a bug where version_string would be left uninitialized if no GLSL "#version" directive was used. Reviewed-by: Kenneth Graunke <kenneth@whitecape.org> Acked-by: Carl Worth <cworth@cworth.org>
This commit is contained in:
parent
d9bfaa104e
commit
dc9f9d8e66
3 changed files with 18 additions and 12 deletions
|
|
@ -449,7 +449,7 @@ modulus_result_type(const struct glsl_type *type_a,
|
|||
if (state->language_version < 130) {
|
||||
_mesa_glsl_error(loc, state,
|
||||
"operator '%%' is reserved in %s",
|
||||
state->version_string);
|
||||
state->get_version_string());
|
||||
return glsl_type::error_type;
|
||||
}
|
||||
|
||||
|
|
@ -2618,13 +2618,13 @@ ast_declarator_list::hir(exec_list *instructions,
|
|||
_mesa_glsl_error(& loc, state,
|
||||
"`out' qualifier in declaration of `%s' "
|
||||
"only valid for function parameters in %s.",
|
||||
decl->identifier, state->version_string);
|
||||
decl->identifier, state->get_version_string());
|
||||
}
|
||||
if (this->type->qualifier.flags.q.in) {
|
||||
_mesa_glsl_error(& loc, state,
|
||||
"`in' qualifier in declaration of `%s' "
|
||||
"only valid for function parameters in %s.",
|
||||
decl->identifier, state->version_string);
|
||||
decl->identifier, state->get_version_string());
|
||||
}
|
||||
/* FINISHME: Test for other invalid qualifiers. */
|
||||
}
|
||||
|
|
|
|||
|
|
@ -289,14 +289,11 @@ version_statement:
|
|||
}
|
||||
|
||||
state->language_version = $2;
|
||||
state->version_string =
|
||||
glsl_compute_version_string(state, state->es_shader,
|
||||
state->language_version);
|
||||
|
||||
if (!supported) {
|
||||
_mesa_glsl_error(& @2, state, "%s is not supported. "
|
||||
"Supported versions are: %s\n",
|
||||
state->version_string,
|
||||
state->get_version_string(),
|
||||
state->supported_version_string);
|
||||
}
|
||||
|
||||
|
|
@ -316,7 +313,7 @@ pragma_statement:
|
|||
if (state->language_version == 110) {
|
||||
_mesa_glsl_warning(& @1, state,
|
||||
"pragma `invariant(all)' not supported in %s",
|
||||
state->version_string);
|
||||
state->get_version_string());
|
||||
} else {
|
||||
state->all_invariant = true;
|
||||
}
|
||||
|
|
@ -1501,7 +1498,7 @@ precision_qualifier:
|
|||
"precision qualifier forbidden "
|
||||
"in %s (1.30 or later "
|
||||
"required)\n",
|
||||
state->version_string);
|
||||
state->get_version_string());
|
||||
|
||||
$$ = ast_precision_high;
|
||||
}
|
||||
|
|
@ -1511,7 +1508,7 @@ precision_qualifier:
|
|||
"precision qualifier forbidden "
|
||||
"in %s (1.30 or later "
|
||||
"required)\n",
|
||||
state->version_string);
|
||||
state->get_version_string());
|
||||
|
||||
$$ = ast_precision_medium;
|
||||
}
|
||||
|
|
@ -1521,7 +1518,7 @@ precision_qualifier:
|
|||
"precision qualifier forbidden "
|
||||
"in %s (1.30 or later "
|
||||
"required)\n",
|
||||
state->version_string);
|
||||
state->get_version_string());
|
||||
|
||||
$$ = ast_precision_low;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -80,6 +80,16 @@ struct _mesa_glsl_parse_state {
|
|||
ralloc_free(mem);
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate a string representing the GLSL version currently being compiled
|
||||
* (useful for error messages).
|
||||
*/
|
||||
const char *get_version_string()
|
||||
{
|
||||
return glsl_compute_version_string(this, this->es_shader,
|
||||
this->language_version);
|
||||
}
|
||||
|
||||
struct gl_context *const ctx;
|
||||
void *scanner;
|
||||
exec_list translation_unit;
|
||||
|
|
@ -91,7 +101,6 @@ struct _mesa_glsl_parse_state {
|
|||
|
||||
bool es_shader;
|
||||
unsigned language_version;
|
||||
const char *version_string;
|
||||
enum _mesa_glsl_parser_targets target;
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue