mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 17:48:10 +02:00
glsl: Recognize GLSL ES 1.00 keywords.
This commit is contained in:
parent
7dcfc44b72
commit
c5e74871d9
4 changed files with 284 additions and 278 deletions
File diff suppressed because it is too large
Load diff
|
|
@ -46,6 +46,16 @@
|
|||
} \
|
||||
} while (0)
|
||||
|
||||
/* Handle reserved words in GLSL ES (version 100) */
|
||||
#define TOKEN_OR_IDENTIFIER_ES(version, token) \
|
||||
do { \
|
||||
if (yyextra->es_shader) { \
|
||||
return token; \
|
||||
} else { \
|
||||
TOKEN_OR_IDENTIFIER(version, token); \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#define RESERVED_WORD(version, token) \
|
||||
do { \
|
||||
if (yyextra->language_version >= version) { \
|
||||
|
|
@ -190,9 +200,9 @@ inout return INOUT_TOK;
|
|||
uniform return UNIFORM;
|
||||
varying return VARYING;
|
||||
centroid TOKEN_OR_IDENTIFIER(120, CENTROID);
|
||||
invariant TOKEN_OR_IDENTIFIER(120, INVARIANT);
|
||||
invariant TOKEN_OR_IDENTIFIER_ES(120, INVARIANT);
|
||||
|
||||
flat TOKEN_OR_IDENTIFIER(130, FLAT);
|
||||
flat TOKEN_OR_IDENTIFIER_ES(130, FLAT);
|
||||
smooth TOKEN_OR_IDENTIFIER(130, SMOOTH);
|
||||
noperspective TOKEN_OR_IDENTIFIER(130, NOPERSPECTIVE);
|
||||
|
||||
|
|
@ -327,16 +337,16 @@ namespace RESERVED_WORD(999, NAMESPACE);
|
|||
using RESERVED_WORD(999, USING);
|
||||
|
||||
/* Additional reserved words in GLSL 1.20. */
|
||||
lowp TOKEN_OR_IDENTIFIER(120, LOWP);
|
||||
mediump TOKEN_OR_IDENTIFIER(120, MEDIUMP);
|
||||
highp TOKEN_OR_IDENTIFIER(120, HIGHP);
|
||||
precision TOKEN_OR_IDENTIFIER(120, PRECISION);
|
||||
lowp TOKEN_OR_IDENTIFIER_ES(120, LOWP);
|
||||
mediump TOKEN_OR_IDENTIFIER_ES(120, MEDIUMP);
|
||||
highp TOKEN_OR_IDENTIFIER_ES(120, HIGHP);
|
||||
precision TOKEN_OR_IDENTIFIER_ES(120, PRECISION);
|
||||
|
||||
/* Additional reserved words in GLSL 1.30. */
|
||||
common TOKEN_OR_IDENTIFIER(130, COMMON);
|
||||
partition TOKEN_OR_IDENTIFIER(130, PARTITION);
|
||||
active TOKEN_OR_IDENTIFIER(130, ACTIVE);
|
||||
superp TOKEN_OR_IDENTIFIER(130, SUPERP);
|
||||
superp TOKEN_OR_IDENTIFIER_ES(130, SUPERP);
|
||||
samplerBuffer TOKEN_OR_IDENTIFIER(130, SAMPLERBUFFER);
|
||||
filter TOKEN_OR_IDENTIFIER(130, FILTER);
|
||||
image1D TOKEN_OR_IDENTIFIER(130, IMAGE1D);
|
||||
|
|
|
|||
|
|
@ -4529,16 +4529,16 @@ yyreduce:
|
|||
/* Line 1464 of yacc.c */
|
||||
#line 1152 "glsl_parser.ypp"
|
||||
{
|
||||
if (state->language_version < 130)
|
||||
_mesa_glsl_error(& (yylsp[(1) - (1)]), state,
|
||||
"precision qualifier forbidden "
|
||||
"in GLSL %d.%d (1.30 or later "
|
||||
"required)\n",
|
||||
state->language_version / 100,
|
||||
state->language_version % 100);
|
||||
if (!state->es_shader && state->language_version < 130)
|
||||
_mesa_glsl_error(& (yylsp[(1) - (1)]), state,
|
||||
"precision qualifier forbidden "
|
||||
"in GLSL %d.%d (1.30 or later "
|
||||
"required)\n",
|
||||
state->language_version / 100,
|
||||
state->language_version % 100);
|
||||
|
||||
(yyval.n) = ast_precision_high;
|
||||
;}
|
||||
(yyval.n) = ast_precision_high;
|
||||
;}
|
||||
break;
|
||||
|
||||
case 217:
|
||||
|
|
@ -4546,16 +4546,16 @@ yyreduce:
|
|||
/* Line 1464 of yacc.c */
|
||||
#line 1163 "glsl_parser.ypp"
|
||||
{
|
||||
if (state->language_version < 130)
|
||||
_mesa_glsl_error(& (yylsp[(1) - (1)]), state,
|
||||
"precision qualifier forbidden "
|
||||
"in GLSL %d.%d (1.30 or later "
|
||||
"required)\n",
|
||||
state->language_version / 100,
|
||||
state->language_version % 100);
|
||||
if (!state->es_shader && state->language_version < 130)
|
||||
_mesa_glsl_error(& (yylsp[(1) - (1)]), state,
|
||||
"precision qualifier forbidden "
|
||||
"in GLSL %d.%d (1.30 or later "
|
||||
"required)\n",
|
||||
state->language_version / 100,
|
||||
state->language_version % 100);
|
||||
|
||||
(yyval.n) = ast_precision_medium;
|
||||
;}
|
||||
(yyval.n) = ast_precision_medium;
|
||||
;}
|
||||
break;
|
||||
|
||||
case 218:
|
||||
|
|
@ -4563,16 +4563,16 @@ yyreduce:
|
|||
/* Line 1464 of yacc.c */
|
||||
#line 1174 "glsl_parser.ypp"
|
||||
{
|
||||
if (state->language_version < 130)
|
||||
_mesa_glsl_error(& (yylsp[(1) - (1)]), state,
|
||||
"precision qualifier forbidden "
|
||||
"in GLSL %d.%d (1.30 or later "
|
||||
"required)\n",
|
||||
state->language_version / 100,
|
||||
state->language_version % 100);
|
||||
if (!state->es_shader && state->language_version < 130)
|
||||
_mesa_glsl_error(& (yylsp[(1) - (1)]), state,
|
||||
"precision qualifier forbidden "
|
||||
"in GLSL %d.%d (1.30 or later "
|
||||
"required)\n",
|
||||
state->language_version / 100,
|
||||
state->language_version % 100);
|
||||
|
||||
(yyval.n) = ast_precision_low;
|
||||
;}
|
||||
(yyval.n) = ast_precision_low;
|
||||
;}
|
||||
break;
|
||||
|
||||
case 219:
|
||||
|
|
|
|||
|
|
@ -1149,39 +1149,39 @@ basic_type_specifier_nonarray:
|
|||
;
|
||||
|
||||
precision_qualifier:
|
||||
HIGHP {
|
||||
if (state->language_version < 130)
|
||||
_mesa_glsl_error(& @1, state,
|
||||
"precision qualifier forbidden "
|
||||
"in GLSL %d.%d (1.30 or later "
|
||||
"required)\n",
|
||||
state->language_version / 100,
|
||||
state->language_version % 100);
|
||||
HIGHP {
|
||||
if (!state->es_shader && state->language_version < 130)
|
||||
_mesa_glsl_error(& @1, state,
|
||||
"precision qualifier forbidden "
|
||||
"in GLSL %d.%d (1.30 or later "
|
||||
"required)\n",
|
||||
state->language_version / 100,
|
||||
state->language_version % 100);
|
||||
|
||||
$$ = ast_precision_high;
|
||||
}
|
||||
| MEDIUMP {
|
||||
if (state->language_version < 130)
|
||||
_mesa_glsl_error(& @1, state,
|
||||
"precision qualifier forbidden "
|
||||
"in GLSL %d.%d (1.30 or later "
|
||||
"required)\n",
|
||||
state->language_version / 100,
|
||||
state->language_version % 100);
|
||||
$$ = ast_precision_high;
|
||||
}
|
||||
| MEDIUMP {
|
||||
if (!state->es_shader && state->language_version < 130)
|
||||
_mesa_glsl_error(& @1, state,
|
||||
"precision qualifier forbidden "
|
||||
"in GLSL %d.%d (1.30 or later "
|
||||
"required)\n",
|
||||
state->language_version / 100,
|
||||
state->language_version % 100);
|
||||
|
||||
$$ = ast_precision_medium;
|
||||
}
|
||||
| LOWP {
|
||||
if (state->language_version < 130)
|
||||
_mesa_glsl_error(& @1, state,
|
||||
"precision qualifier forbidden "
|
||||
"in GLSL %d.%d (1.30 or later "
|
||||
"required)\n",
|
||||
state->language_version / 100,
|
||||
state->language_version % 100);
|
||||
$$ = ast_precision_medium;
|
||||
}
|
||||
| LOWP {
|
||||
if (!state->es_shader && state->language_version < 130)
|
||||
_mesa_glsl_error(& @1, state,
|
||||
"precision qualifier forbidden "
|
||||
"in GLSL %d.%d (1.30 or later "
|
||||
"required)\n",
|
||||
state->language_version / 100,
|
||||
state->language_version % 100);
|
||||
|
||||
$$ = ast_precision_low;
|
||||
}
|
||||
$$ = ast_precision_low;
|
||||
}
|
||||
;
|
||||
|
||||
struct_specifier:
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue