Mesa (gles3): glsl: Allow layout qualifiers in GLSL 3.00 ES

Anuj Phogat aphogat at kemper.freedesktop.org
Mon Nov 19 21:33:44 UTC 2012


Module: Mesa
Branch: gles3
Commit: 1cc4ac33e951dde1354521ffcd12336399fa3a1c
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=1cc4ac33e951dde1354521ffcd12336399fa3a1c

Author: Ian Romanick <ian.d.romanick at intel.com>
Date:   Fri Nov  9 12:26:42 2012 -0800

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 at intel.com>
Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>

---

 src/glsl/glsl_lexer.ll          |    2 +-
 src/glsl/glsl_parser.yy         |    2 ++
 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 e3a5732..c683bce 100644
--- a/src/glsl/glsl_lexer.ll
+++ b/src/glsl/glsl_lexer.ll
@@ -455,7 +455,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 bc4d08a..89175f5 100644
--- a/src/glsl/glsl_parser.yy
+++ b/src/glsl/glsl_parser.yy
@@ -1138,6 +1138,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 c1a004a..94ae222 100644
--- a/src/glsl/glsl_parser_extras.cpp
+++ b/src/glsl/glsl_parser_extras.cpp
@@ -260,6 +260,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 *




More information about the mesa-commit mailing list