mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-02 09:30:11 +01:00
glsl: Allow arrays of arrays in GLSL ES 3.10 and GLSL 4.30
V3: use a check_*_allowed style function for requirements checking rather than has_* which doesn't encapsulate the error message V2: add missing 's' to the extension name in error messages and add decimal place in version string Reviewed-by: Marta Lofstedt <marta.lofstedt@intel.com>
This commit is contained in:
parent
f22b7933e2
commit
8da9e154b7
3 changed files with 20 additions and 18 deletions
|
|
@ -2141,12 +2141,7 @@ process_array_type(YYLTYPE *loc, const glsl_type *base,
|
|||
*
|
||||
* "Only one-dimensional arrays may be declared."
|
||||
*/
|
||||
if (!state->ARB_arrays_of_arrays_enable) {
|
||||
_mesa_glsl_error(loc, state,
|
||||
"invalid array of `%s'"
|
||||
"GL_ARB_arrays_of_arrays "
|
||||
"required for defining arrays of arrays",
|
||||
base->name);
|
||||
if (!state->check_arrays_of_arrays_allowed(loc)) {
|
||||
return glsl_type::error_type;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1978,25 +1978,18 @@ array_specifier:
|
|||
void *ctx = state;
|
||||
$$ = $1;
|
||||
|
||||
if (!state->ARB_arrays_of_arrays_enable) {
|
||||
_mesa_glsl_error(& @1, state,
|
||||
"GL_ARB_arrays_of_arrays "
|
||||
"required for defining arrays of arrays");
|
||||
if (state->check_arrays_of_arrays_allowed(& @1)) {
|
||||
$$->add_dimension(new(ctx) ast_expression(ast_unsized_array_dim, NULL,
|
||||
NULL, NULL));
|
||||
}
|
||||
$$->add_dimension(new(ctx) ast_expression(ast_unsized_array_dim, NULL,
|
||||
NULL, NULL));
|
||||
}
|
||||
| array_specifier '[' constant_expression ']'
|
||||
{
|
||||
$$ = $1;
|
||||
|
||||
if (!state->ARB_arrays_of_arrays_enable) {
|
||||
_mesa_glsl_error(& @1, state,
|
||||
"GL_ARB_arrays_of_arrays "
|
||||
"required for defining arrays of arrays");
|
||||
if (state->check_arrays_of_arrays_allowed(& @1)) {
|
||||
$$->add_dimension($3);
|
||||
}
|
||||
|
||||
$$->add_dimension($3);
|
||||
}
|
||||
;
|
||||
|
||||
|
|
|
|||
|
|
@ -115,6 +115,20 @@ struct _mesa_glsl_parse_state {
|
|||
unsigned required_glsl_es_version,
|
||||
YYLTYPE *locp, const char *fmt, ...) PRINTFLIKE(5, 6);
|
||||
|
||||
bool check_arrays_of_arrays_allowed(YYLTYPE *locp)
|
||||
{
|
||||
if (!(ARB_arrays_of_arrays_enable || is_version(430, 310))) {
|
||||
const char *const requirement = this->es_shader
|
||||
? "GLSL ES 3.10"
|
||||
: "GL_ARB_arrays_of_arrays or GLSL 4.30";
|
||||
_mesa_glsl_error(locp, this,
|
||||
"%s required for defining arrays of arrays.",
|
||||
requirement);
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool check_precision_qualifiers_allowed(YYLTYPE *locp)
|
||||
{
|
||||
return check_version(130, 100, locp,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue