diff options
author | marha <marha@users.sourceforge.net> | 2013-01-14 15:26:50 +0100 |
---|---|---|
committer | marha <marha@users.sourceforge.net> | 2013-01-14 15:26:50 +0100 |
commit | c67a0f76ca34e441a817a7cdf261f496f3b3f2d6 (patch) | |
tree | c197b74a8c2f076aaa4f5506b90d6ad8e38b52b2 /mesalib/src/glsl/glcpp/glcpp-parse.y | |
parent | 8d07c58314685d56a0586d0a437b541ea2b92a54 (diff) | |
parent | 2a1abdc8fe640583dac90dc316caf2d40b9ee4e2 (diff) | |
download | vcxsrv-c67a0f76ca34e441a817a7cdf261f496f3b3f2d6.tar.gz vcxsrv-c67a0f76ca34e441a817a7cdf261f496f3b3f2d6.tar.bz2 vcxsrv-c67a0f76ca34e441a817a7cdf261f496f3b3f2d6.zip |
Merge remote-tracking branch 'origin/released'
* origin/released:
libxtrans xwininfo libX11 libXau libXmu libXdmcp mesa mkfontscale xkeyboard-config git update 14 jan 2013
Conflicts:
mesalib/src/glsl/glcpp/.gitignore
Diffstat (limited to 'mesalib/src/glsl/glcpp/glcpp-parse.y')
-rw-r--r-- | mesalib/src/glsl/glcpp/glcpp-parse.y | 28 |
1 files changed, 17 insertions, 11 deletions
diff --git a/mesalib/src/glsl/glcpp/glcpp-parse.y b/mesalib/src/glsl/glcpp/glcpp-parse.y index 380a1d99c..8fba923a2 100644 --- a/mesalib/src/glsl/glcpp/glcpp-parse.y +++ b/mesalib/src/glsl/glcpp/glcpp-parse.y @@ -363,6 +363,8 @@ integer_constant: expression: integer_constant | IDENTIFIER { + if (parser->is_gles) + glcpp_error(& @1, parser, "undefined macro %s in expression (illegal in GLES)", $1); $$ = 0; } | expression OR expression { @@ -1179,15 +1181,18 @@ glcpp_parser_create (const struct gl_extensions *extensions, int api) parser->has_new_source_number = 0; parser->new_source_number = 0; + parser->is_gles = false; + /* Add pre-defined macros. */ if (extensions != NULL) { if (extensions->OES_EGL_image_external) add_builtin_define(parser, "GL_OES_EGL_image_external", 1); } - if (api == API_OPENGLES2) + if (api == API_OPENGLES2) { + parser->is_gles = true; add_builtin_define(parser, "GL_ES", 1); - else { + } else { add_builtin_define(parser, "GL_ARB_draw_buffers", 1); add_builtin_define(parser, "GL_ARB_texture_rectangle", 1); @@ -2026,11 +2031,6 @@ static void _glcpp_parser_handle_version_declaration(glcpp_parser_t *parser, intmax_t version, const char *es_identifier) { - /* Note: We assume that if any identifier is present, it means ES. - * The GLSL parser will double-check that the identifier is correct. - */ - bool is_es = es_identifier != NULL; - macro_t *macro = hash_table_find (parser->defines, "__VERSION__"); if (macro) { hash_table_remove (parser->defines, "__VERSION__"); @@ -2038,17 +2038,23 @@ _glcpp_parser_handle_version_declaration(glcpp_parser_t *parser, intmax_t versio } add_builtin_define (parser, "__VERSION__", version); - if (version == 100) - is_es = true; - if (is_es) + /* If we didn't have a GLES context to begin with, (indicated + * by parser->api), then the version declaration here might + * indicate GLES. */ + if (! parser->is_gles && + (version == 100 || + (es_identifier && (strcmp(es_identifier, "es") == 0)))) + { + parser->is_gles = true; add_builtin_define (parser, "GL_ES", 1); + } /* Currently, all ES2/ES3 implementations support highp in the * fragment shader, so we always define this macro in ES2/ES3. * If we ever get a driver that doesn't support highp, we'll * need to add a flag to the gl_context and check that here. */ - if (version >= 130 || is_es) + if (version >= 130 || parser->is_gles) add_builtin_define (parser, "GL_FRAGMENT_PRECISION_HIGH", 1); ralloc_asprintf_rewrite_tail (&parser->output, &parser->output_length, |