mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-07 04:58:05 +02:00
Fix parsing of precision qualifiers
This causes the following tests to pass:
glslparsertest/glsl2/precision-02.vert
glslparsertest/glsl2/precision-04.vert
glslparsertest/glsl2/precision-06.vert
This causes the following test to fail. This shader was previously
failing to compile, but it was failing for the wrong reasons.
glslparsertest/glsl2/precision-03.vert
This commit is contained in:
parent
15d162d7b1
commit
9bcb67bdc4
1 changed files with 45 additions and 7 deletions
|
|
@ -94,7 +94,7 @@
|
||||||
%token MOD_ASSIGN LEFT_ASSIGN RIGHT_ASSIGN AND_ASSIGN XOR_ASSIGN OR_ASSIGN
|
%token MOD_ASSIGN LEFT_ASSIGN RIGHT_ASSIGN AND_ASSIGN XOR_ASSIGN OR_ASSIGN
|
||||||
%token SUB_ASSIGN
|
%token SUB_ASSIGN
|
||||||
%token INVARIANT
|
%token INVARIANT
|
||||||
%token HIGH_PRECISION MEDIUM_PRECISION LOW_PRECISION PRECISION
|
%token LOWP MEDIUMP HIGHP PRECISION
|
||||||
|
|
||||||
%token VERSION EXTENSION LINE PRAGMA COLON EOL INTERFACE OUTPUT
|
%token VERSION EXTENSION LINE PRAGMA COLON EOL INTERFACE OUTPUT
|
||||||
|
|
||||||
|
|
@ -105,7 +105,7 @@
|
||||||
%token LONG SHORT DOUBLE HALF FIXED UNSIGNED INPUT OUPTUT
|
%token LONG SHORT DOUBLE HALF FIXED UNSIGNED INPUT OUPTUT
|
||||||
%token HVEC2 HVEC3 HVEC4 DVEC2 DVEC3 DVEC4 FVEC2 FVEC3 FVEC4
|
%token HVEC2 HVEC3 HVEC4 DVEC2 DVEC3 DVEC4 FVEC2 FVEC3 FVEC4
|
||||||
%token SAMPLER2DRECT SAMPLER3DRECT SAMPLER2DRECTSHADOW
|
%token SAMPLER2DRECT SAMPLER3DRECT SAMPLER2DRECTSHADOW
|
||||||
%token SIZEOF CAST NAMESPACE USING LOWP MEDIUMP HIGHP
|
%token SIZEOF CAST NAMESPACE USING
|
||||||
|
|
||||||
%type <identifier> variable_identifier
|
%type <identifier> variable_identifier
|
||||||
%type <node> statement
|
%type <node> statement
|
||||||
|
|
@ -234,11 +234,19 @@ extension_statement:
|
||||||
external_declaration_list:
|
external_declaration_list:
|
||||||
external_declaration
|
external_declaration
|
||||||
{
|
{
|
||||||
state->translation_unit.push_tail(& $1->link);
|
/* FINISHME: The NULL test is only required because 'precision'
|
||||||
|
* FINISHME: statements are not yet supported.
|
||||||
|
*/
|
||||||
|
if ($1 != NULL)
|
||||||
|
state->translation_unit.push_tail(& $1->link);
|
||||||
}
|
}
|
||||||
| external_declaration_list external_declaration
|
| external_declaration_list external_declaration
|
||||||
{
|
{
|
||||||
state->translation_unit.push_tail(& $2->link);
|
/* FINISHME: The NULL test is only required because 'precision'
|
||||||
|
* FINISHME: statements are not yet supported.
|
||||||
|
*/
|
||||||
|
if ($2 != NULL)
|
||||||
|
state->translation_unit.push_tail(& $2->link);
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|
@ -999,9 +1007,39 @@ basic_type_specifier_nonarray:
|
||||||
;
|
;
|
||||||
|
|
||||||
precision_qualifier:
|
precision_qualifier:
|
||||||
HIGH_PRECISION { $$ = ast_precision_high; }
|
HIGHP {
|
||||||
| MEDIUM_PRECISION { $$ = ast_precision_medium; }
|
if (state->language_version < 130)
|
||||||
| LOW_PRECISION { $$ = ast_precision_low; }
|
_mesa_glsl_error(& @1, state,
|
||||||
|
"precission 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,
|
||||||
|
"precission 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,
|
||||||
|
"precission qualifier forbidden "
|
||||||
|
"in GLSL %d.%d (1.30 or later "
|
||||||
|
"required)\n",
|
||||||
|
state->language_version / 100,
|
||||||
|
state->language_version % 100);
|
||||||
|
|
||||||
|
$$ = ast_precision_low;
|
||||||
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
struct_specifier:
|
struct_specifier:
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue