aboutsummaryrefslogtreecommitdiff
path: root/mesalib/src/glsl/glcpp/glcpp-parse.y
diff options
context:
space:
mode:
authormarha <marha@users.sourceforge.net>2013-01-14 15:13:52 +0100
committermarha <marha@users.sourceforge.net>2013-01-14 15:13:52 +0100
commit2a1abdc8fe640583dac90dc316caf2d40b9ee4e2 (patch)
tree721982dda954c217323cf726bf1ff527b0477ebe /mesalib/src/glsl/glcpp/glcpp-parse.y
parentddc05759f098f06bd93253a7bffe38640963dfb3 (diff)
downloadvcxsrv-2a1abdc8fe640583dac90dc316caf2d40b9ee4e2.tar.gz
vcxsrv-2a1abdc8fe640583dac90dc316caf2d40b9ee4e2.tar.bz2
vcxsrv-2a1abdc8fe640583dac90dc316caf2d40b9ee4e2.zip
libxtrans xwininfo libX11 libXau libXmu libXdmcp mesa mkfontscale
xkeyboard-config git update 14 jan 2013 libxtrans: ec3136232f7ce930f9ca812b6ab42a71b60af4af xwininfo: 3e60a26559221e561770710a8c4ed0b8ebc31afb libX11: 3cd974b1d4d1fa6389d3695fa9fcc0c22a51d50c libXau: 8570d287396934f26224c76d48d7f17d87380e72 libXmu: 9b253d99d5b4f3fbb681c2cb1b84f8f9acfee528 libXdmcp: ca65a92405500393f09d34388edbbf6350e6c146 mesa: e3e1ffb2520498584ef402213d0c8aa4303a46a3 mkfontscale: 1157b3039551b552b483f05f6a411e57941a87c0
Diffstat (limited to 'mesalib/src/glsl/glcpp/glcpp-parse.y')
-rw-r--r--mesalib/src/glsl/glcpp/glcpp-parse.y28
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,