glsl2: Define preprocessor tokens for extensions
authorIan Romanick <ian.d.romanick@intel.com>
Wed, 30 Jun 2010 23:03:19 +0000 (16:03 -0700)
committerIan Romanick <ian.d.romanick@intel.com>
Fri, 2 Jul 2010 03:40:08 +0000 (20:40 -0700)
Currently only GL_ARB_draw_buffers and GL_ARB_texture_rectangle are
defined because those extensions are always enabled.  This make
tex_rect-03.frag pass.

src/glsl/glcpp/glcpp-parse.y

index 6beac18c65d40522fd13b2cc74f199b889f16833..d4cb006bbcdaf94478e35bad5ee771ff05bed822 100644 (file)
@@ -897,6 +897,8 @@ glcpp_parser_t *
 glcpp_parser_create (void)
 {
        glcpp_parser_t *parser;
+       token_t *tok;
+       token_list_t *list;
 
        parser = xtalloc (NULL, glcpp_parser_t);
 
@@ -919,6 +921,19 @@ glcpp_parser_create (void)
        parser->info_log = talloc_strdup(parser, "");
        parser->error = 0;
 
+       /* Add pre-defined macros. */
+       tok = _token_create_ival (parser, INTEGER, 1);
+
+       list = _token_list_create(parser);
+       _token_list_append(list, tok);
+       _define_object_macro(parser, NULL, "GL_ARB_draw_buffers", list);
+
+       list = _token_list_create(parser);
+       _token_list_append(list, tok);
+       _define_object_macro(parser, NULL, "GL_ARB_texture_rectangle", list);
+
+       talloc_unlink(parser, tok);
+
        return parser;
 }
 
@@ -1413,7 +1428,8 @@ _define_object_macro (glcpp_parser_t *parser,
 {
        macro_t *macro;
 
-       _check_for_reserved_macro_name(parser, loc, identifier);
+       if (loc != NULL)
+               _check_for_reserved_macro_name(parser, loc, identifier);
 
        macro = xtalloc (parser, macro_t);