Module: Mesa Branch: 10.1 Commit: ecaf9259e92b22f5f219fc050337336abae642fb URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=ecaf9259e92b22f5f219fc050337336abae642fb
Author: Kenneth Graunke <kenn...@whitecape.org> Date: Wed Feb 5 21:42:00 2014 -0800 glsl: Don't lose precision qualifiers when encountering "centroid". Mesa fails to retain the precision qualifier when parsing: #version 300 es centroid in mediump vec2 v; Consider how the parser's type_qualifier production is applied. First, the precision_qualifier rule creates a new ast_type_qualifier: <precision: mediump> Then the storage_qualifier rule creates a second one: <flags: in> and calls merge_qualifier() to fold in any previous qualifications, returning: <flags: in, precision: mediump> Finally, the auxiliary_storage_qualifier creates one for "centroid": <flags: centroid> it then does $$ = $1 and $$.flags |= $2.flags, resulting in: <flags: centroid, in> Since precision isn't stored in the flags bitfield, it is lost. We need to instead call merge_qualifier to combine all the fields. Cc: mesa-sta...@lists.freedesktop.org Signed-off-by: Kenneth Graunke <kenn...@whitecape.org> Reported-by: Kevin Rogovin <kevin.rogo...@intel.com> Reviewed-by: Matt Turner <matts...@gmail.com> Reviewed-by: Ian Romanick <ian.d.roman...@intel.com> (cherry picked from commit 2062f40d81de4743758851b03dad506f9cb6f306) --- src/glsl/glsl_parser.yy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/glsl/glsl_parser.yy b/src/glsl/glsl_parser.yy index 928c57e..f939fe8 100644 --- a/src/glsl/glsl_parser.yy +++ b/src/glsl/glsl_parser.yy @@ -1466,7 +1466,7 @@ type_qualifier: "just before storage qualifiers"); } $$ = $1; - $$.flags.i |= $2.flags.i; + $$.merge_qualifier(&@1, state, $2); } | storage_qualifier type_qualifier { _______________________________________________ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit