diff options
author | Ian Romanick <ian.d.romanick@intel.com> | 2012-11-09 12:26:42 -0800 |
---|---|---|
committer | Ian Romanick <ian.d.romanick@intel.com> | 2012-12-06 12:13:22 -0800 |
commit | 62c0938639401dbf75c61ed7f6f10fd860994cfd (patch) | |
tree | 56b68b24b5a67ab19e019f9df9b009cfcc85c62c /src | |
parent | 486f9556548292e776781e85052ec4122180891d (diff) |
glsl: Allow layout qualifiers in GLSL 3.00 ES
Note that while 'packed' is a reserved word in GLSL ES, row_major is not.
This means that we have to use the string-based matching for that.
Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
Acked-by: Carl Worth <cworth@cworth.org>
Diffstat (limited to 'src')
-rw-r--r-- | src/glsl/glsl_lexer.ll | 2 | ||||
-rw-r--r-- | src/glsl/glsl_parser.yy | 2 | ||||
-rw-r--r-- | src/glsl/glsl_parser_extras.cpp | 4 |
3 files changed, 7 insertions, 1 deletions
diff --git a/src/glsl/glsl_lexer.ll b/src/glsl/glsl_lexer.ll index af39512ed15..2f66c5828a8 100644 --- a/src/glsl/glsl_lexer.ll +++ b/src/glsl/glsl_lexer.ll @@ -437,7 +437,7 @@ enum KEYWORD(110, 100, 0, 0, ENUM); typedef KEYWORD(110, 100, 0, 0, TYPEDEF); template KEYWORD(110, 100, 0, 0, TEMPLATE); this KEYWORD(110, 100, 0, 0, THIS); -packed KEYWORD_WITH_ALT(110, 100, 140, 0, yyextra->ARB_uniform_buffer_object_enable, PACKED_TOK); +packed KEYWORD_WITH_ALT(110, 100, 140, 300, yyextra->ARB_uniform_buffer_object_enable, PACKED_TOK); goto KEYWORD(110, 100, 0, 0, GOTO); switch KEYWORD(110, 100, 130, 300, SWITCH); default KEYWORD(110, 100, 130, 300, DEFAULT); diff --git a/src/glsl/glsl_parser.yy b/src/glsl/glsl_parser.yy index d938765d750..f1233688348 100644 --- a/src/glsl/glsl_parser.yy +++ b/src/glsl/glsl_parser.yy @@ -1143,6 +1143,8 @@ layout_qualifier_id: $$.flags.q.shared = 1; } else if (strcmp($1, "column_major") == 0) { $$.flags.q.column_major = 1; + } else if (strcmp($1, "row_major") == 0) { + $$.flags.q.row_major = 1; } if ($$.flags.i && state->ARB_uniform_buffer_object_warn) { diff --git a/src/glsl/glsl_parser_extras.cpp b/src/glsl/glsl_parser_extras.cpp index 1cf4571e5a9..d36089226f1 100644 --- a/src/glsl/glsl_parser_extras.cpp +++ b/src/glsl/glsl_parser_extras.cpp @@ -279,6 +279,10 @@ _mesa_glsl_parse_state::process_version_directive(YYLTYPE *locp, int version, if (this->language_version >= 140) { this->ARB_uniform_buffer_object_enable = true; } + + if (this->language_version == 300 && this->es_shader) { + this->ARB_explicit_attrib_location_enable = true; + } } const char * |