diff options
Diffstat (limited to 'src/glsl/glcpp')
| -rw-r--r-- | src/glsl/glcpp/glcpp-parse.y | 10 | ||||
| -rw-r--r-- | src/glsl/glcpp/glcpp.c | 5 | ||||
| -rw-r--r-- | src/glsl/glcpp/glcpp.h | 7 | ||||
| -rw-r--r-- | src/glsl/glcpp/pp.c | 5 | 
4 files changed, 18 insertions, 9 deletions
| diff --git a/src/glsl/glcpp/glcpp-parse.y b/src/glsl/glcpp/glcpp-parse.y index d4cb006bbc..e5544fe29b 100644 --- a/src/glsl/glcpp/glcpp-parse.y +++ b/src/glsl/glcpp/glcpp-parse.y @@ -28,6 +28,7 @@  #include <inttypes.h>  #include "glcpp.h" +#include "main/mtypes.h"  #define glcpp_print(stream, str) stream = talloc_strdup_append(stream, str)  #define glcpp_printf(stream, fmt, args...) \ @@ -894,7 +895,7 @@ yyerror (YYLTYPE *locp, glcpp_parser_t *parser, const char *error)  }  glcpp_parser_t * -glcpp_parser_create (void) +glcpp_parser_create (const struct gl_extensions *extensions)  {  	glcpp_parser_t *parser;  	token_t *tok; @@ -932,6 +933,13 @@ glcpp_parser_create (void)  	_token_list_append(list, tok);  	_define_object_macro(parser, NULL, "GL_ARB_texture_rectangle", list); +	if ((extensions != NULL) && extensions->EXT_texture_array) { +		list = _token_list_create(parser); +		_token_list_append(list, tok); +		_define_object_macro(parser, NULL, +				     "GL_EXT_texture_array", list); +	} +  	talloc_unlink(parser, tok);  	return parser; diff --git a/src/glsl/glcpp/glcpp.c b/src/glsl/glcpp/glcpp.c index cc87e14950..a245cb5406 100644 --- a/src/glsl/glcpp/glcpp.c +++ b/src/glsl/glcpp/glcpp.c @@ -69,15 +69,12 @@ load_text_file(void *ctx, const char *file_name)  }  int -preprocess(void *talloc_ctx, const char **shader, char **info_log); - -int  main (void)  {  	void *ctx = talloc(NULL, void*);  	const char *shader = load_text_file(ctx, NULL);  	char *info_log = talloc_strdup(ctx, ""); -	int ret = preprocess(ctx, &shader, &info_log); +	int ret = preprocess(ctx, &shader, &info_log, NULL);  	printf("%s", shader);  	fprintf(stderr, "%s", info_log); diff --git a/src/glsl/glcpp/glcpp.h b/src/glsl/glcpp/glcpp.h index 2cfa98d2b1..fc9511a67a 100644 --- a/src/glsl/glcpp/glcpp.h +++ b/src/glsl/glcpp/glcpp.h @@ -158,8 +158,10 @@ struct glcpp_parser {  	int error;  }; +struct gl_extensions; +  glcpp_parser_t * -glcpp_parser_create (void); +glcpp_parser_create (const struct gl_extensions *extensions);  int  glcpp_parser_parse (glcpp_parser_t *parser); @@ -168,7 +170,8 @@ void  glcpp_parser_destroy (glcpp_parser_t *parser);  int -preprocess(void *talloc_ctx, const char **shader, char **info_log); +preprocess(void *talloc_ctx, const char **shader, char **info_log, +	   const struct gl_extensions *extensions);  /* Functions for writing to the info log */ diff --git a/src/glsl/glcpp/pp.c b/src/glsl/glcpp/pp.c index a25b7b72a6..1ce829a2c9 100644 --- a/src/glsl/glcpp/pp.c +++ b/src/glsl/glcpp/pp.c @@ -134,10 +134,11 @@ remove_line_continuations(glcpp_parser_t *ctx, const char *shader)  }  extern int -preprocess(void *talloc_ctx, const char **shader, char **info_log) +preprocess(void *talloc_ctx, const char **shader, char **info_log, +	   const struct gl_extensions *extensions)  {  	int errors; -	glcpp_parser_t *parser = glcpp_parser_create (); +	glcpp_parser_t *parser = glcpp_parser_create (extensions);  	*shader = remove_line_continuations(parser, *shader);  	glcpp_lex_set_source_string (parser, *shader); | 
