diff options
Diffstat (limited to 'mesalib')
54 files changed, 644 insertions, 898 deletions
| diff --git a/mesalib/configure.ac b/mesalib/configure.ac index 1b2083df5..5072ee007 100644 --- a/mesalib/configure.ac +++ b/mesalib/configure.ac @@ -1079,8 +1079,8 @@ if test "x$enable_dri" = xyes; then  	LIBS="$save_LIBS"      fi -    # if we are building any dri driver other than swrast ... -    if test -n "$DRI_DIRS" -a x"$DRI_DIRS" != xswrast; then +    # if we are building any dri driver other than swrast or using the dri state tracker ... +    if test -n "$DRI_DIRS" -a x"$DRI_DIRS" != xswrast || test "x$enable_dri" = xyes; then          # ... libdrm is required          if test "x$have_libdrm" != xyes; then              AC_MSG_ERROR([DRI drivers requires libdrm >= $LIBDRM_REQUIRED]) @@ -1830,7 +1830,7 @@ if test "x$with_gallium_drivers" != x; then              PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])              gallium_require_llvm "Gallium R300"              GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r300" -            gallium_check_st "radeon/drm" "dri-r300" "xorg-r300" "" "xvmc-r300" "vdpau-r300" +            gallium_check_st "radeon/drm" "dri-r300" "" "" "xvmc-r300" "vdpau-r300"              ;;          xr600)              HAVE_GALLIUM_R600=yes @@ -2057,7 +2057,6 @@ AC_CONFIG_FILES([Makefile  		src/gallium/targets/xa-vmwgfx/xatracker.pc  		src/gallium/targets/xorg-i915/Makefile  		src/gallium/targets/xorg-nouveau/Makefile -		src/gallium/targets/xorg-r300/Makefile  		src/gallium/targets/xorg-r600/Makefile  		src/gallium/targets/xorg-radeonsi/Makefile  		src/gallium/targets/xvmc-nouveau/Makefile @@ -2104,6 +2103,7 @@ AC_CONFIG_FILES([Makefile  		src/mesa/drivers/Makefile  		src/mesa/drivers/dri/dri.pc  		src/mesa/drivers/dri/common/Makefile +		src/mesa/drivers/dri/common/xmlpool/Makefile  		src/mesa/drivers/dri/i915/Makefile  		src/mesa/drivers/dri/i965/Makefile  		src/mesa/drivers/dri/Makefile diff --git a/mesalib/docs/GL3.txt b/mesalib/docs/GL3.txt index 34cce729b..567781d90 100644 --- a/mesalib/docs/GL3.txt +++ b/mesalib/docs/GL3.txt @@ -41,15 +41,15 @@ GLX_ARB_create_context (GLX 1.4 is required)          DONE  GL 3.1: -GLSL 1.40                                             DONE (i965) -Forward compatibile context support/deprecations      DONE (i965) +GLSL 1.40                                             DONE (i965, r600) +Forward compatibile context support/deprecations      DONE (i965, r600)  Instanced drawing (GL_ARB_draw_instanced)             DONE (i965, gallium, swrast)  Buffer copying (GL_ARB_copy_buffer)                   DONE (i965, r300, r600, swrast)  Primitive restart (GL_NV_primitive_restart)           DONE (i965, r600)  16 vertex texture image units                         DONE -Texture buffer objs (GL_ARB_texture_buffer_object)    DONE for OpenGL 3.1 contexts (i965) +Texture buffer objs (GL_ARB_texture_buffer_object)    DONE for OpenGL 3.1 contexts (i965, r600)  Rectangular textures (GL_ARB_texture_rectangle)       DONE (i965, r300, r600, swrast) -Uniform buffer objs (GL_ARB_uniform_buffer_object)    DONE (i965) +Uniform buffer objs (GL_ARB_uniform_buffer_object)    DONE (i965, r600, swrast)  Signed normalized textures (GL_EXT_texture_snorm)     DONE (i965, r300, r600) diff --git a/mesalib/src/gallium/auxiliary/Makefile.am b/mesalib/src/gallium/auxiliary/Makefile.am index b8ac7c9dd..a4eee4773 100644 --- a/mesalib/src/gallium/auxiliary/Makefile.am +++ b/mesalib/src/gallium/auxiliary/Makefile.am @@ -45,7 +45,3 @@ util/u_format_srgb.c: $(srcdir)/util/u_format_srgb.py  util/u_format_table.c: $(srcdir)/util/u_format_table.py $(srcdir)/util/u_format_pack.py $(srcdir)/util/u_format_parse.py $(srcdir)/util/u_format.csv  	$(AM_V_GEN) $(PYTHON2) $(srcdir)/util/u_format_table.py $(srcdir)/util/u_format.csv > $@ - -#XXX: Delete this when all targets are converted to automake. -all-local: libgallium.la -	ln -f $(builddir)/.libs/libgallium.a $(builddir)/libgallium.a diff --git a/mesalib/src/glsl/Makefile.am b/mesalib/src/glsl/Makefile.am index aff1559e0..0f545d548 100644 --- a/mesalib/src/glsl/Makefile.am +++ b/mesalib/src/glsl/Makefile.am @@ -78,10 +78,3 @@ CLEANFILES = glsl_lexer.cc glsl_parser.cc $(BUILT_SOURCES) builtin_function.cpp  builtin_function.cpp: $(srcdir)/builtins/profiles/* $(srcdir)/builtins/ir/* $(srcdir)/builtins/glsl/* $(srcdir)/builtins/tools/generate_builtins.py $(srcdir)/builtins/tools/texture_builtins.py builtin_compiler/builtin_compiler$(BUILD_EXEEXT)  	$(AM_V_GEN) $(PYTHON2) $(PYTHON_FLAGS) $(srcdir)/builtins/tools/generate_builtins.py builtin_compiler/builtin_compiler$(BUILD_EXEEXT) > builtin_function.cpp || rm -f builtin_function.cpp - -# Provide compatibility with scripts for the old Mesa build system for -# a while by putting a link to the library in the current directory. -all-local: libglsl.la -	ln -f .libs/libglsl.a . - -CLEANFILES += libglsl.a diff --git a/mesalib/src/glsl/glcpp/.gitignore b/mesalib/src/glsl/glcpp/.gitignore index 01d2888e7..24a7119ca 100644 --- a/mesalib/src/glsl/glcpp/.gitignore +++ b/mesalib/src/glsl/glcpp/.gitignore @@ -3,3 +3,4 @@ glcpp-lex.c  glcpp-parse.output  glcpp-parse.c  glcpp-parse.h +tests/*.out diff --git a/mesalib/src/glsl/glcpp/glcpp-lex.l b/mesalib/src/glsl/glcpp/glcpp-lex.l index fd28711d1..a029f6203 100644 --- a/mesalib/src/glsl/glcpp/glcpp-lex.l +++ b/mesalib/src/glsl/glcpp/glcpp-lex.l @@ -260,6 +260,8 @@ HEXADECIMAL_INTEGER	0[xX][0-9a-fA-F]+[uU]?  }  "##" { +	if (parser->is_gles) +		glcpp_error(yylloc, yyextra, "Token pasting (##) is illegal in GLES");  	return PASTE;  } 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, diff --git a/mesalib/src/glsl/glcpp/glcpp.c b/mesalib/src/glsl/glcpp/glcpp.c index 7c2ded850..6994d7bb9 100644 --- a/mesalib/src/glsl/glcpp/glcpp.c +++ b/mesalib/src/glsl/glcpp/glcpp.c @@ -24,6 +24,8 @@  #include <stdio.h>  #include <string.h>  #include <errno.h> +#include <getopt.h> +  #include "glcpp.h"  #include "main/mtypes.h"  #include "main/shaderobj.h" @@ -94,6 +96,37 @@ load_text_file(void *ctx, const char *filename)  	return text;  } +/* Initialize only those things that glcpp cares about. + */ +static void +init_fake_gl_context (struct gl_context *gl_ctx) +{ +	gl_ctx->API = API_OPENGL_COMPAT; +	gl_ctx->Const.DisableGLSLLineContinuations = false; +} + +static void +usage (void) +{ +	fprintf (stderr, +		 "Usage: glcpp [OPTIONS] [--] [<filename>]\n" +		 "\n" +		 "Pre-process the given filename (stdin if no filename given).\n" +		 "The following options are supported:\n" +		 "    --disable-line-continuations      Do not interpret lines ending with a\n" +		 "                                      backslash ('\\') as a line continuation.\n"); +} + +enum { +	DISABLE_LINE_CONTINUATIONS_OPT = CHAR_MAX + 1 +}; + +const static struct option +long_options[] = { +	{"disable-line-continuations", no_argument, 0, DISABLE_LINE_CONTINUATIONS_OPT }, +	{0,                            0,           0, 0 } +}; +  int  main (int argc, char *argv[])  { @@ -102,16 +135,36 @@ main (int argc, char *argv[])  	char *info_log = ralloc_strdup(ctx, "");  	const char *shader;  	int ret; +	struct gl_context gl_ctx; +	int c; + +	init_fake_gl_context (&gl_ctx); + +	while ((c = getopt_long(argc, argv, "", long_options, NULL)) != -1) { +		switch (c) { +		case DISABLE_LINE_CONTINUATIONS_OPT: +			gl_ctx.Const.DisableGLSLLineContinuations = true; +			break; +		default: +			usage (); +			exit (1); +		} +	} -	if (argc) { -		filename = argv[1]; +	if (optind + 1 < argc) { +		printf ("Unexpected argument: %s\n", argv[optind+1]); +		usage (); +		exit (1); +	} +	if (optind < argc) { +		filename = argv[optind];  	}  	shader = load_text_file (ctx, filename);  	if (shader == NULL)  	   return 1; -	ret = glcpp_preprocess(ctx, &shader, &info_log, NULL, API_OPENGL_COMPAT); +	ret = glcpp_preprocess(ctx, &shader, &info_log, NULL, &gl_ctx);  	printf("%s", shader);  	fprintf(stderr, "%s", info_log); diff --git a/mesalib/src/glsl/glcpp/glcpp.h b/mesalib/src/glsl/glcpp/glcpp.h index a459289b2..8aaa551d1 100644 --- a/mesalib/src/glsl/glcpp/glcpp.h +++ b/mesalib/src/glsl/glcpp/glcpp.h @@ -27,6 +27,8 @@  #include <stdint.h>  #include <stdbool.h> +#include "main/mtypes.h" +  #include "../ralloc.h"  #include "program/hash_table.h" @@ -182,6 +184,7 @@ struct glcpp_parser {  	int new_line_number;  	bool has_new_source_number;  	int new_source_number; +	bool is_gles;  };  struct gl_extensions; @@ -197,7 +200,7 @@ glcpp_parser_destroy (glcpp_parser_t *parser);  int  glcpp_preprocess(void *ralloc_ctx, const char **shader, char **info_log, -	   const struct gl_extensions *extensions, int api); +	   const struct gl_extensions *extensions, struct gl_context *g_ctx);  /* Functions for writing to the info log */ diff --git a/mesalib/src/glsl/glcpp/pp.c b/mesalib/src/glsl/glcpp/pp.c index 11b29417b..789f7f941 100644 --- a/mesalib/src/glsl/glcpp/pp.c +++ b/mesalib/src/glsl/glcpp/pp.c @@ -70,92 +70,77 @@ glcpp_warning (YYLTYPE *locp, glcpp_parser_t *parser, const char *fmt, ...)  				     &parser->info_log_length, "\n");  } -/* Searches backwards for '^ *#' from a given starting point. */ -static int -in_directive(const char *shader, const char *ptr) -{ -	assert(ptr >= shader); - -	/* Search backwards for '#'. If we find a \n first, it doesn't count */ -	for (; ptr >= shader && *ptr != '#'; ptr--) { -		if (*ptr == '\n') -			return 0; -	} -	if (ptr >= shader) { -		/* Found '#'...look for spaces preceded by a newline */ -		for (ptr--; ptr >= shader && isblank(*ptr); ptr--); -		// FIXME: I don't think the '\n' case can happen -		if (ptr < shader || *ptr == '\n') -			return 1; -	} -	return 0; -} - -/* Remove any line continuation characters in preprocessing directives. - * However, ignore any in GLSL code, as "There is no line continuation - * character" (1.30 page 9) in GLSL. +/* Remove any line continuation characters in the shader, (whether in + * preprocessing directives or in GLSL code).   */  static char *  remove_line_continuations(glcpp_parser_t *ctx, const char *shader)  { -	int in_continued_line = 0; -	int extra_newlines = 0;  	char *clean = ralloc_strdup(ctx, ""); -	const char *search_start = shader; -	const char *newline; -	while ((newline = strchr(search_start, '\n')) != NULL) { -		const char *backslash = NULL; - -		/* # of characters preceding the newline. */ -		int n = newline - shader; - -		/* Find the preceding '\', if it exists */ -		if (n >= 1 && newline[-1] == '\\') -			backslash = newline - 1; -		else if (n >= 2 && newline[-1] == '\r' && newline[-2] == '\\') -			backslash = newline - 2; - -		/* Double backslashes don't count (the backslash is escaped) */ -		if (backslash != NULL && backslash[-1] == '\\') { -			backslash = NULL; -		} - -		if (backslash != NULL) { -			/* We found a line continuation, but do we care? */ -			if (!in_continued_line) { -				if (in_directive(shader, backslash)) { -					in_continued_line = 1; -					extra_newlines = 0; -				} -			} -			if (in_continued_line) { -				/* Copy everything before the \ */ -				ralloc_strncat(&clean, shader, backslash - shader); +	const char *backslash, *newline, *search_start; +	int collapsed_newlines = 0; + +	search_start = shader; + +	while (true) { +		backslash = strchr(search_start, '\\'); + +		/* If we have previously collapsed any line-continuations, +		 * then we want to insert additional newlines at the next +		 * occurrence of a newline character to avoid changing any +		 * line numbers. +		 */ +		if (collapsed_newlines) { +			newline = strchr(search_start, '\n'); +			if (newline && +			    (backslash == NULL || newline < backslash)) +			{ +				ralloc_strncat(&clean, shader, +					       newline - shader + 1); +				while (collapsed_newlines--) +					ralloc_strcat(&clean, "\n");  				shader = newline + 1; -				extra_newlines++; +				search_start = shader;  			} -		} else if (in_continued_line) { -			/* Copy everything up to and including the \n */ -			ralloc_strncat(&clean, shader, newline - shader + 1); -			shader = newline + 1; -			/* Output extra newlines to make line numbers match */ -			for (; extra_newlines > 0; extra_newlines--) -				ralloc_strcat(&clean, "\n"); -			in_continued_line = 0;  		} -		search_start = newline + 1; + +		search_start = backslash + 1; + +		if (backslash == NULL) +			break; + +		/* At each line continuation, (backslash followed by a +		 * newline), copy all preceding text to the output, then +		 * advance the shader pointer to the character after the +		 * newline. +		 */ +		if (backslash[1] == '\n' || +		    (backslash[1] == '\r' && backslash[2] == '\n')) +		{ +			collapsed_newlines++; +			ralloc_strncat(&clean, shader, backslash - shader); +			if (backslash[1] == '\n') +				shader = backslash + 2; +			else +				shader = backslash + 3; +			search_start = shader; +		}  	} +  	ralloc_strcat(&clean, shader); +  	return clean;  }  int  glcpp_preprocess(void *ralloc_ctx, const char **shader, char **info_log, -	   const struct gl_extensions *extensions, int api) +	   const struct gl_extensions *extensions, struct gl_context *gl_ctx)  {  	int errors; -	glcpp_parser_t *parser = glcpp_parser_create (extensions, api); -	*shader = remove_line_continuations(parser, *shader); +	glcpp_parser_t *parser = glcpp_parser_create (extensions, gl_ctx->API); + +	if (! gl_ctx->Const.DisableGLSLLineContinuations) +		*shader = remove_line_continuations(parser, *shader);  	glcpp_lex_set_source_string (parser, *shader); diff --git a/mesalib/src/glsl/glsl_parser_extras.h b/mesalib/src/glsl/glsl_parser_extras.h index 46e0784ba..2e6bb0b0a 100644 --- a/mesalib/src/glsl/glsl_parser_extras.h +++ b/mesalib/src/glsl/glsl_parser_extras.h @@ -354,7 +354,7 @@ extern "C" {  #endif  extern int glcpp_preprocess(void *ctx, const char **shader, char **info_log, -                      const struct gl_extensions *extensions, int api); +                      const struct gl_extensions *extensions, struct gl_context *gl_ctx);  extern void _mesa_destroy_shader_compiler(void);  extern void _mesa_destroy_shader_compiler_caches(void); diff --git a/mesalib/src/glsl/main.cpp b/mesalib/src/glsl/main.cpp index a84d010f4..ed6f12279 100644 --- a/mesalib/src/glsl/main.cpp +++ b/mesalib/src/glsl/main.cpp @@ -146,7 +146,7 @@ compile_shader(struct gl_context *ctx, struct gl_shader *shader)     const char *source = shader->Source;     state->error = glcpp_preprocess(state, &source, &state->info_log, -			     state->extensions, ctx->API) != 0; +			     state->extensions, ctx) != 0;     if (!state->error) {        _mesa_glsl_lexer_ctor(state, source); diff --git a/mesalib/src/glsl/test_optpass.cpp b/mesalib/src/glsl/test_optpass.cpp index ce5df24d9..117b0b006 100644 --- a/mesalib/src/glsl/test_optpass.cpp +++ b/mesalib/src/glsl/test_optpass.cpp @@ -217,7 +217,7 @@ int test_optpass(int argc, char **argv)        shader->Source = input.c_str();        const char *source = shader->Source;        state->error = glcpp_preprocess(state, &source, &state->info_log, -                                state->extensions, ctx->API) != 0; +                                state->extensions, ctx) != 0;        if (!state->error) {           _mesa_glsl_lexer_ctor(state, source); diff --git a/mesalib/src/mapi/glapi/Makefile.am b/mesalib/src/mapi/glapi/Makefile.am index 181a28a7c..bdb527d5c 100644 --- a/mesalib/src/mapi/glapi/Makefile.am +++ b/mesalib/src/mapi/glapi/Makefile.am @@ -58,12 +58,3 @@ endif  noinst_LTLIBRARIES = libglapi.la  libglapi_la_SOURCES = $(glapi_GLAPI_sources) $(glapi_ASM_sources) $(glapi_MAPI_sources) -libglapi_la_LIBADD = -libglapi_la_LDFLAGS = - -# Provide compatibility with scripts for the old Mesa build system for -# a while by putting a link to libglapi.a here -all-local: libglapi.la -	ln -sf .libs/libglapi.a libglapi.a - -CLEANFILES = libglapi.a diff --git a/mesalib/src/mapi/glapi/gen/ARB_get_program_binary.xml b/mesalib/src/mapi/glapi/gen/ARB_get_program_binary.xml index 7db166564..e84d0678e 100644 --- a/mesalib/src/mapi/glapi/gen/ARB_get_program_binary.xml +++ b/mesalib/src/mapi/glapi/gen/ARB_get_program_binary.xml @@ -5,14 +5,13 @@  <OpenGLAPI> -<category name="GL_ARB_get_program_binary " number="96"> +<category name="GL_ARB_get_program_binary" number="96">      <enum name="PROGRAM_BINARY_RETRIEVABLE_HINT"          value="0x8257"/>      <enum name="PROGRAM_BINARY_LENGTH"                    value="0x8741"/>      <enum name="NUM_PROGRAM_BINARY_FORMATS"               value="0x87FE"/>      <enum name="PROGRAM_BINARY_FORMATS"                   value="0x87FF"/> -    <function name="GetProgramBinary" offset="assign" static_dispatch="false" -              es2="3.0" exec="skip"> +    <function name="GetProgramBinary" offset="assign" es2="3.0">          <param name="program" type="GLuint"/>          <param name="bufSize" type="GLsizei"/>          <param name="length" type="GLsizei *"/> @@ -20,16 +19,14 @@          <param name="binary" type="GLvoid *"/>      </function> -    <function name="ProgramBinary" offset="assign" static_dispatch="false" -              es2="3.0" exec="skip"> +    <function name="ProgramBinary" offset="assign" es2="3.0">          <param name="program" type="GLuint"/>          <param name="binaryFormat" type="GLenum"/>          <param name="binary" type="const GLvoid *"/>          <param name="length" type="GLsizei"/>      </function> -    <function name="ProgramParameteri" offset="assign" static_dispatch="false" -              es2="3.0" exec="skip"> +    <function name="ProgramParameteri" offset="assign" es2="3.0">          <param name="program" type="GLuint"/>          <param name="pname" type="GLenum"/>          <param name="value" type="GLint"/> diff --git a/mesalib/src/mapi/glapi/gen/Makefile.am b/mesalib/src/mapi/glapi/gen/Makefile.am index ff22c8e0d..f869d28e5 100644 --- a/mesalib/src/mapi/glapi/gen/Makefile.am +++ b/mesalib/src/mapi/glapi/gen/Makefile.am @@ -1,11 +1,3 @@ -# This file isn't used during a normal compilation since we don't want to -# require Python in order to compile Mesa. -# Instead, when the Mesa developers update/change the API interface it's -# up to him/her to re-run this makefile and check in the newly generated files. - - -TOP = ../../../.. -  # These are the "official" xserver indent flags from utils/modular/x-indent.sh  XORG_INDENT_FLAGS = -linux -bad -bap -blf -bli0 -cbi0 -cdw -nce -cs -i4 -lc80 -psl -nbbo \      -nbc -psl -nbfda -nut -nss -T pointer -T ScreenPtr -T ScrnInfoPtr -T pointer \ @@ -26,10 +18,10 @@ XORG_INDENT_FLAGS = -linux -bad -bap -blf -bli0 -cbi0 -cdw -nce -cs -i4 -lc80 -p      -T _XFUNCPROTOBEGIN -T _XFUNCPROTOEND -T _X_EXPORT -MESA_DIR = $(TOP)/src/mesa -MESA_GLAPI_DIR = $(TOP)/src/mapi/glapi -MESA_MAPI_DIR = $(TOP)/src/mapi/mapi -MESA_GLX_DIR = $(TOP)/src/glx +MESA_DIR = $(top_srcdir)/src/mesa +MESA_GLAPI_DIR = $(top_srcdir)/src/mapi/glapi +MESA_MAPI_DIR = $(top_srcdir)/src/mapi/mapi +MESA_GLX_DIR = $(top_srcdir)/src/glx  MESA_GLAPI_OUTPUTS = \  	$(MESA_GLAPI_DIR)/glapi_mapi_tmp.h \ diff --git a/mesalib/src/mapi/glapi/gen/gl_API.xml b/mesalib/src/mapi/glapi/gen/gl_API.xml index 8a8a1ee03..934386031 100644 --- a/mesalib/src/mapi/glapi/gen/gl_API.xml +++ b/mesalib/src/mapi/glapi/gen/gl_API.xml @@ -8269,20 +8269,18 @@    </function>  </category> +<!-- ARB extensions #95...#108 --> +  <xi:include href="ARB_ES2_compatibility.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/> -<!-- ARB extensions #96...#103 --> +<xi:include href="ARB_get_program_binary.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>  <xi:include href="ARB_debug_output.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>  <xi:include href="ARB_robustness.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/> -<!-- ARB extensions #106 --> -  <xi:include href="ARB_base_instance.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/> -<!-- ARB extensions #108 --> -  <category name="GL_ARB_transform_feedback_instanced" number="109">    <function name="DrawTransformFeedbackInstanced" offset="assign"              exec="dynamic"> @@ -12994,6 +12992,4 @@  <xi:include href="EXT_transform_feedback.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/> -<xi:include href="ARB_get_program_binary.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/> -  </OpenGLAPI> diff --git a/mesalib/src/mesa/Makefile.am b/mesalib/src/mesa/Makefile.am index 9809ee437..41483dd63 100644 --- a/mesalib/src/mesa/Makefile.am +++ b/mesalib/src/mesa/Makefile.am @@ -128,20 +128,9 @@ libmesagallium_la_LIBADD = \          $(top_builddir)/src/mesa/program/libprogram.la \          $() -libmesagallium_la_LDFLAGS = - -if HAVE_GALLIUM -# Provide compatibility with scripts for the old Mesa build system for -# a while by putting a link to the library in the current directory. -all-local: $(noinst_LTLIBRARIES) -	ln -f .libs/libmesagallium.a . -endif - -CLEANFILES += libmesagallium.a -  pkgconfigdir = $(libdir)/pkgconfig  pkgconfig_DATA = gl.pc  # Emacs tags  tags: -	etags `find . -name \*.[ch]` $(TOP)/include/GL/*.h +	etags `find . -name \*.[ch]` $(top_srcdir)/include/GL/*.h diff --git a/mesalib/src/mesa/drivers/SConscript b/mesalib/src/mesa/drivers/SConscript index f1c4da6b8..6dcc50655 100644 --- a/mesalib/src/mesa/drivers/SConscript +++ b/mesalib/src/mesa/drivers/SConscript @@ -5,5 +5,8 @@ SConscript('osmesa/SConscript')  if env['x11']:      SConscript('x11/SConscript') +if env['drm']: +    SConscript('dri/common/xmlpool/SConscript') +  if env['platform'] == 'windows':      SConscript('windows/gdi/SConscript') diff --git a/mesalib/src/mesa/drivers/dri/Android.mk b/mesalib/src/mesa/drivers/dri/Android.mk index d6196bb43..88629531a 100644 --- a/mesalib/src/mesa/drivers/dri/Android.mk +++ b/mesalib/src/mesa/drivers/dri/Android.mk @@ -38,6 +38,7 @@ MESA_DRI_CFLAGS := \  	-DHAVE_ANDROID_PLATFORM  MESA_DRI_C_INCLUDES := \ +	$(call intermediates-dir-for,STATIC_LIBRARIES,libmesa_dri_common) \  	$(addprefix $(MESA_TOP)/, $(mesa_dri_common_INCLUDES)) \  	$(DRM_TOP) \  	$(DRM_TOP)/include/drm \ @@ -56,6 +57,9 @@ MESA_DRI_SHARED_LIBRARIES := \  	libglapi \  	liblog +# All DRI modules must add this to LOCAL_GENERATED_SOURCES. +MESA_DRI_OPTIONS_H := $(call intermediates-dir-for,STATIC_LIBRARIES,libmesa_dri_common)/xmlpool/options.h +  #-----------------------------------------------  # Build drivers and libmesa_dri_common diff --git a/mesalib/src/mesa/drivers/dri/common/Android.mk b/mesalib/src/mesa/drivers/dri/common/Android.mk index 76464a153..f428c3855 100644 --- a/mesalib/src/mesa/drivers/dri/common/Android.mk +++ b/mesalib/src/mesa/drivers/dri/common/Android.mk @@ -34,8 +34,54 @@ include $(LOCAL_PATH)/Makefile.sources  LOCAL_MODULE := libmesa_dri_common  LOCAL_MODULE_CLASS := STATIC_LIBRARIES -LOCAL_C_INCLUDES := $(MESA_DRI_C_INCLUDES) +intermediates := $(call local-intermediates-dir) + +LOCAL_C_INCLUDES := \ +    $(intermediates) \ +    $(MESA_DRI_C_INCLUDES) +  LOCAL_SRC_FILES := $(mesa_dri_common_SOURCES) +LOCAL_GENERATED_SOURCES := \ +    $(intermediates)/xmlpool/options.h + +# +# Generate options.h from gettext translations. +# + +MESA_DRI_OPTIONS_LANGS := de es nl fr sv +POT := $(intermediates)/xmlpool.pot + +$(POT): $(LOCAL_PATH)/xmlpool/t_options.h +	@mkdir -p $(dir $@) +	xgettext -L C --from-code utf-8 -o $@ $< + +$(intermediates)/xmlpool/%.po: $(LOCAL_PATH)/xmlpool/%.po $(POT) +	lang=$(basename $(notdir $@)); \ +	mkdir -p $(dir $@); \ +	if [ -f $< ]; then \ +		msgmerge -o $@ $^; \ +	else \ +		msginit -i $(POT) \ +			-o $@ \ +			--locale=$$lang \ +			--no-translator; \ +		sed -i -e 's/charset=.*\\n/charset=UTF-8\\n/' $@; \ +	fi + +$(intermediates)/xmlpool/%/LC_MESSAGES/options.mo: $(intermediates)/xmlpool/%.po +	mkdir -p $(dir $@) +	msgfmt -o $@ $< + +$(intermediates)/xmlpool/options.h: PRIVATE_SCRIPT := $(LOCAL_PATH)/xmlpool/gen_xmlpool.py +$(intermediates)/xmlpool/options.h: PRIVATE_LOCALEDIR := $(intermediates)/xmlpool +$(intermediates)/xmlpool/options.h: PRIVATE_TEMPLATE_HEADER := $(LOCAL_PATH)/xmlpool/t_options.h +$(intermediates)/xmlpool/options.h: PRIVATE_MO_FILES := $(MESA_DRI_OPTIONS_LANGS:%=$(intermediates)/xmlpool/%/LC_MESSAGES/options.mo) +$(intermediates)/xmlpool/options.h: $(PRIVATE_SCRIPT) $(PRIVATE_TEMPLATE_HEADER) $(PRIVATE_MO_FILES) +	mkdir -p $(dir $@) +	mkdir -p $(PRIVATE_LOCALEDIR) +	$(MESA_PYTHON2) $(PRIVATE_SCRIPT) $(PRIVATE_TEMPLATE_HEADER) \ +		$(PRIVATE_LOCALEDIR) $(MESA_DRI_OPTIONS_LANGS) > $@ +  include $(MESA_COMMON_MK)  include $(BUILD_STATIC_LIBRARY) diff --git a/mesalib/src/mesa/drivers/dri/common/Makefile.am b/mesalib/src/mesa/drivers/dri/common/Makefile.am index a662919b5..dfc8f3b7a 100644 --- a/mesalib/src/mesa/drivers/dri/common/Makefile.am +++ b/mesalib/src/mesa/drivers/dri/common/Makefile.am @@ -19,6 +19,8 @@  # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS  # IN THE SOFTWARE. +SUBDIRS = xmlpool +  AM_CFLAGS = \  	-I$(top_srcdir)/include \  	-I$(top_srcdir)/src/ \ diff --git a/mesalib/src/mesa/drivers/dri/common/drirc b/mesalib/src/mesa/drivers/dri/common/drirc index cf13cdb80..a13941f68 100644 --- a/mesalib/src/mesa/drivers/dri/common/drirc +++ b/mesalib/src/mesa/drivers/dri/common/drirc @@ -22,5 +22,8 @@          <application name="Unigine OilRush (64-bit)" executable="OilRush_x64">              <option name="disable_blend_func_extended" value="true" />  	</application> +        <application name="Savage 2" executable="savage2.bin"> +            <option name="disable_glsl_line_continuations" value="true" /> +        </application>      </device>  </driconf> diff --git a/mesalib/src/mesa/drivers/dri/common/xmlpool/.gitignore b/mesalib/src/mesa/drivers/dri/common/xmlpool/.gitignore index a5a437849..f6ba5c849 100644 --- a/mesalib/src/mesa/drivers/dri/common/xmlpool/.gitignore +++ b/mesalib/src/mesa/drivers/dri/common/xmlpool/.gitignore @@ -3,3 +3,6 @@ es  fr  nl  sv +options.h +Makefile +xmlpool.pot diff --git a/mesalib/src/mesa/drivers/dri/common/xmlpool/Makefile b/mesalib/src/mesa/drivers/dri/common/xmlpool/Makefile.am index b71629e9f..b99df40d8 100644 --- a/mesalib/src/mesa/drivers/dri/common/xmlpool/Makefile +++ b/mesalib/src/mesa/drivers/dri/common/xmlpool/Makefile.am @@ -54,43 +54,41 @@ POT=xmlpool.pot  all: options.h -# Only intermediate files are cleaned up. options.h is not deleted because -# it's in CVS.  +# All generated files are cleaned up.  clean: -	-rm -f $(POT) *~ +	-rm -f $(POT) options.h *~  	-rm -rf $(LANGS)  # Default target options.h -options.h: t_options.h mo -	$(PYTHON2) $(PYTHON_FLAGS) gen_xmlpool.py $(LANGS) > options.h +options.h: LOCALEDIR := . +options.h: t_options.h $(MOS) +	$(AM_V_GEN) $(PYTHON2) $(PYTHON_FLAGS) $(srcdir)/gen_xmlpool.py $(srcdir)/t_options.h $(LOCALEDIR) $(LANGS) > options.h  # Update .mo files from the corresponding .po files. -mo: -	@for mo in $(MOS); do \ -		lang=$${mo%%/*}; \ -		echo "Updating $$mo from $$lang.po."; \ -		mkdir -p $${mo%/*}; \ -		msgfmt -o $$mo $$lang.po; \ -	done +%/LC_MESSAGES/options.mo: %.po +	@mo="$@" \ +	lang=$${mo%%/*}; \ +	echo "Updating ($$lang) $@ from $?."; \ +	mkdir -p $$lang/LC_MESSAGES; \ +	msgfmt -o $@ $?  # Use this target to create or update .po files with new messages in  # driconf.py. -po: $(POS) +po: $(POT) +	@for po in $(POS); do \ +		if [ -f $$po ]; then \ +			echo "Merging new strings from $(POT) into $@."; \ +			mv $$po $$po~; \ +			msgmerge -o $$po $$po~ $(POT); \ +		else \ +			echo "Initializing $$po from $(POT)."; \ +			msginit -i $(POT) -o $$po~ --locale=$*; \ +			sed -e 's/charset=.*\\n/charset=UTF-8\\n/' $$po~ > $$po; \ +		fi \ +	done  pot: $(POT)  # Extract message catalog from driconf.py.  $(POT): t_options.h  	xgettext -L C --from-code utf-8 -o $(POT) t_options.h - -# Create or update a .po file for a specific language. -%.po: $(POT) -	@if [ -f $@ ]; then \ -		echo "Merging new strings from $(POT) into $@."; \ -		mv $@ $@~; \ -		msgmerge -o $@ $@~ $(POT); \ -	else \ -		echo "Initializing $@ from $(POT)."; \ -		msginit -i $(POT) -o $@~ --locale=$*; \ -		sed -e 's/charset=.*\\n/charset=UTF-8\\n/' $@~ > $@; \ -	fi diff --git a/mesalib/src/mesa/drivers/dri/common/xmlpool/SConscript b/mesalib/src/mesa/drivers/dri/common/xmlpool/SConscript new file mode 100644 index 000000000..fa42554d3 --- /dev/null +++ b/mesalib/src/mesa/drivers/dri/common/xmlpool/SConscript @@ -0,0 +1,14 @@ +Import('*') + +from sys import executable as python_cmd + +LOCALEDIR = env.Dir('.').srcnode().abspath + +xmlpool_options, = env.CodeGenerate( +    target = 'options.h', +    script = 'gen_xmlpool.py', +    source = ['t_options.h'], +    command = python_cmd + ' $SCRIPT $SOURCE ' + LOCALEDIR + ' > $TARGET' +) + +Export('xmlpool_options') diff --git a/mesalib/src/mesa/drivers/dri/common/xmlpool/de.po b/mesalib/src/mesa/drivers/dri/common/xmlpool/de.po index 724237929..a87c8d513 100644 --- a/mesalib/src/mesa/drivers/dri/common/xmlpool/de.po +++ b/mesalib/src/mesa/drivers/dri/common/xmlpool/de.po @@ -207,14 +207,14 @@ msgid ""  "Morphological anti-aliasing based on Jimenez\\' MLAA. 0 to disable, 8 for "  "default quality"  msgstr "Morphologische Kantenglättung (Anti-Aliasing) basierend auf " -"Jimenez\' MLAA. 0 für deaktiviert, 8 für Standardqualität" +"Jimenez' MLAA. 0 für deaktiviert, 8 für Standardqualität"  #: t_options.h:221  msgid ""  "Morphological anti-aliasing based on Jimenez\\' MLAA. 0 to disable, 8 for "  "default quality. Color version, usable with 2d GL apps"  msgstr "Morphologische Kantenglättung (Anti-Aliasing) basierend auf " -"Jimenez\' MLAA. 0 für deaktiviert, 8 für Standardqualität. " +"Jimenez' MLAA. 0 für deaktiviert, 8 für Standardqualität. "  "Farbversion, für 2D-Anwendungen"  #: t_options.h:226 diff --git a/mesalib/src/mesa/drivers/dri/common/xmlpool/gen_xmlpool.py b/mesalib/src/mesa/drivers/dri/common/xmlpool/gen_xmlpool.py index 7398c4cd0..acfdcf48a 100644 --- a/mesalib/src/mesa/drivers/dri/common/xmlpool/gen_xmlpool.py +++ b/mesalib/src/mesa/drivers/dri/common/xmlpool/gen_xmlpool.py @@ -1,11 +1,24 @@  #!/usr/bin/python +# +# Usage: +#     gen_xmlpool.py /path/to/t_option.h localedir lang lang lang ... +# +# For each given language, this script expects to find a .mo file at +# `{localedir}/{language}/LC_MESSAGES/options.mo`. +# +  import sys  import gettext  import re +# Path to t_options.h +template_header_path = sys.argv[1] + +localedir = sys.argv[2] +  # List of supported languages -languages = sys.argv[1:] +languages = sys.argv[3:]  # Escape special characters in C strings  def escapeCString (s): @@ -134,7 +147,7 @@ def expandMatches (matches, translations, end=None):  translations = [("en", gettext.NullTranslations())]  for lang in languages:      try: -        trans = gettext.translation ("options", ".", [lang]) +        trans = gettext.translation ("options", localedir, [lang])      except IOError:          sys.stderr.write ("Warning: language '%s' not found.\n" % lang)          continue @@ -155,7 +168,7 @@ print \  # Process the options template and generate options.h with all  # translations. -template = file ("t_options.h", "r") +template = file (template_header_path, "r")  descMatches = []  for line in template:      if len(descMatches) > 0: diff --git a/mesalib/src/mesa/drivers/dri/common/xmlpool/options.h b/mesalib/src/mesa/drivers/dri/common/xmlpool/options.h deleted file mode 100644 index 112a046d2..000000000 --- a/mesalib/src/mesa/drivers/dri/common/xmlpool/options.h +++ /dev/null @@ -1,638 +0,0 @@ -/*********************************************************************** - ***        THIS FILE IS GENERATED AUTOMATICALLY. DON'T EDIT!        *** - ***********************************************************************/ -/* - * XML DRI client-side driver configuration - * Copyright (C) 2003 Felix Kuehling - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL - * FELIX KUEHLING, OR ANY OTHER CONTRIBUTORS BE LIABLE FOR ANY CLAIM,  - * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR  - * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE  - * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - *  - */ -/** - * \file t_options.h - * \brief Templates of common options - * \author Felix Kuehling - * - * This file defines macros for common options that can be used to - * construct driConfigOptions in the drivers. This file is only a - * template containing English descriptions for options wrapped in - * gettext(). xgettext can be used to extract translatable - * strings. These strings can then be translated by anyone familiar - * with GNU gettext. gen_xmlpool.py takes this template and fills in - * all the translations. The result (options.h) is included by - * xmlpool.h which in turn can be included by drivers. - * - * The macros used to describe otions in this file are defined in - * ../xmlpool.h. - */ - -/* This is needed for xgettext to extract translatable strings. - * gen_xmlpool.py will discard this line. */ -/* #include <libintl.h> - * commented out by gen_xmlpool.py */ - -/* - * predefined option sections and options with multi-lingual descriptions - */ - -/** \brief Debugging options */ -#define DRI_CONF_SECTION_DEBUG \ -DRI_CONF_SECTION_BEGIN \ -	DRI_CONF_DESC(en,"Debugging") \ -	DRI_CONF_DESC(de,"Fehlersuche") \ -	DRI_CONF_DESC(es,"Depurando") \ -	DRI_CONF_DESC(nl,"Debuggen") \ -	DRI_CONF_DESC(fr,"Debogage") \ -	DRI_CONF_DESC(sv,"Felsökning") - -#define DRI_CONF_NO_RAST(def) \ -DRI_CONF_OPT_BEGIN(no_rast,bool,def) \ -        DRI_CONF_DESC(en,"Disable 3D acceleration") \ -        DRI_CONF_DESC(de,"3D-Beschleunigung abschalten") \ -        DRI_CONF_DESC(es,"Desactivar aceleración 3D") \ -        DRI_CONF_DESC(nl,"3D versnelling uitschakelen") \ -        DRI_CONF_DESC(fr,"Désactiver l'accélération 3D") \ -        DRI_CONF_DESC(sv,"Inaktivera 3D-accelerering") \ -DRI_CONF_OPT_END - -#define DRI_CONF_PERFORMANCE_BOXES(def) \ -DRI_CONF_OPT_BEGIN(performance_boxes,bool,def) \ -        DRI_CONF_DESC(en,"Show performance boxes") \ -        DRI_CONF_DESC(de,"Zeige Performanceboxen") \ -        DRI_CONF_DESC(es,"Mostrar cajas de rendimiento") \ -        DRI_CONF_DESC(nl,"Laat prestatie boxjes zien") \ -        DRI_CONF_DESC(fr,"Afficher les boîtes de performance") \ -        DRI_CONF_DESC(sv,"Visa prestandarutor") \ -DRI_CONF_OPT_END - - -/** \brief Texture-related options */ -#define DRI_CONF_SECTION_QUALITY \ -DRI_CONF_SECTION_BEGIN \ -	DRI_CONF_DESC(en,"Image Quality") \ -	DRI_CONF_DESC(de,"Bildqualität") \ -	DRI_CONF_DESC(es,"Calidad de imagen") \ -	DRI_CONF_DESC(nl,"Beeldkwaliteit") \ -	DRI_CONF_DESC(fr,"Qualité d'image") \ -	DRI_CONF_DESC(sv,"Bildkvalitet") - -#define DRI_CONF_EXCESS_MIPMAP(def) \ -DRI_CONF_OPT_BEGIN(excess_mipmap,bool,def) \ -	DRI_CONF_DESC(en,"Enable extra mipmap level") \ -DRI_CONF_OPT_END - -#define DRI_CONF_TEXTURE_DEPTH_FB       0 -#define DRI_CONF_TEXTURE_DEPTH_32       1 -#define DRI_CONF_TEXTURE_DEPTH_16       2 -#define DRI_CONF_TEXTURE_DEPTH_FORCE_16 3 -#define DRI_CONF_TEXTURE_DEPTH(def) \ -DRI_CONF_OPT_BEGIN_V(texture_depth,enum,def,"0:3") \ -	DRI_CONF_DESC_BEGIN(en,"Texture color depth") \ -                DRI_CONF_ENUM(0,"Prefer frame buffer color depth") \ -                DRI_CONF_ENUM(1,"Prefer 32 bits per texel") \ -                DRI_CONF_ENUM(2,"Prefer 16 bits per texel") \ -                DRI_CONF_ENUM(3,"Force 16 bits per texel") \ -        DRI_CONF_DESC_END \ -	DRI_CONF_DESC_BEGIN(de,"Texturfarbtiefe") \ -                DRI_CONF_ENUM(0,"Bevorzuge Farbtiefe des Framebuffers") \ -                DRI_CONF_ENUM(1,"Bevorzuge 32 bits pro Texel") \ -                DRI_CONF_ENUM(2,"Bevorzuge 16 bits pro Texel") \ -                DRI_CONF_ENUM(3,"Erzwinge 16 bits pro Texel") \ -        DRI_CONF_DESC_END \ -	DRI_CONF_DESC_BEGIN(es,"Profundidad de color de textura") \ -                DRI_CONF_ENUM(0,"Preferir profundidad de color del ”framebuffer“") \ -                DRI_CONF_ENUM(1,"Preferir 32 bits por texel") \ -                DRI_CONF_ENUM(2,"Preferir 16 bits por texel") \ -                DRI_CONF_ENUM(3,"Forzar a 16 bits por texel") \ -        DRI_CONF_DESC_END \ -	DRI_CONF_DESC_BEGIN(nl,"Textuurkleurendiepte") \ -                DRI_CONF_ENUM(0,"Prefereer kaderbufferkleurdiepte") \ -                DRI_CONF_ENUM(1,"Prefereer 32 bits per texel") \ -                DRI_CONF_ENUM(2,"Prefereer 16 bits per texel") \ -                DRI_CONF_ENUM(3,"Dwing 16 bits per texel af") \ -        DRI_CONF_DESC_END \ -	DRI_CONF_DESC_BEGIN(fr,"Profondeur de texture") \ -                DRI_CONF_ENUM(0,"Profondeur de couleur") \ -                DRI_CONF_ENUM(1,"Préférer 32 bits par texel") \ -                DRI_CONF_ENUM(2,"Prérérer 16 bits par texel") \ -                DRI_CONF_ENUM(3,"Forcer 16 bits par texel") \ -        DRI_CONF_DESC_END \ -	DRI_CONF_DESC_BEGIN(sv,"Färgdjup för texturer") \ -                DRI_CONF_ENUM(0,"Föredra färgdjupet för framebuffer") \ -                DRI_CONF_ENUM(1,"Föredra 32 bitar per texel") \ -                DRI_CONF_ENUM(2,"Föredra 16 bitar per texel") \ -                DRI_CONF_ENUM(3,"Tvinga 16 bitar per texel") \ -        DRI_CONF_DESC_END \ -DRI_CONF_OPT_END - -#define DRI_CONF_DEF_MAX_ANISOTROPY(def,range) \ -DRI_CONF_OPT_BEGIN_V(def_max_anisotropy,float,def,range) \ -        DRI_CONF_DESC(en,"Initial maximum value for anisotropic texture filtering") \ -        DRI_CONF_DESC(de,"Initialer Maximalwert für anisotropische Texturfilterung") \ -        DRI_CONF_DESC(es,"Valor máximo inicial para filtrado anisotrópico de textura") \ -        DRI_CONF_DESC(nl,"Initïele maximum waarde voor anisotrophische textuur filtering") \ -        DRI_CONF_DESC(fr,"Valeur maximale initiale pour le filtrage anisotropique de texture") \ -        DRI_CONF_DESC(sv,"Initialt maximalt värde för anisotropisk texturfiltrering") \ -DRI_CONF_OPT_END - -#define DRI_CONF_NO_NEG_LOD_BIAS(def) \ -DRI_CONF_OPT_BEGIN(no_neg_lod_bias,bool,def) \ -        DRI_CONF_DESC(en,"Forbid negative texture LOD bias") \ -        DRI_CONF_DESC(de,"Verbiete negative Textur-Detailgradverschiebung") \ -        DRI_CONF_DESC(es,"Prohibir valores negativos de Nivel De Detalle (LOD) de texturas") \ -        DRI_CONF_DESC(nl,"Verbied negatief niveau detailonderscheid (LOD) van texturen") \ -        DRI_CONF_DESC(fr,"Interdire le LOD bias negatif") \ -        DRI_CONF_DESC(sv,"Förbjud negativ LOD-kompensation för texturer") \ -DRI_CONF_OPT_END - -#define DRI_CONF_FORCE_S3TC_ENABLE(def) \ -DRI_CONF_OPT_BEGIN(force_s3tc_enable,bool,def) \ -        DRI_CONF_DESC(en,"Enable S3TC texture compression even if software support is not available") \ -        DRI_CONF_DESC(de,"Aktiviere S3TC Texturkomprimierung auch wenn die nötige Softwareunterstützung fehlt") \ -        DRI_CONF_DESC(es,"Activar la compresión de texturas S3TC incluso si el soporte por software no está disponible") \ -        DRI_CONF_DESC(nl,"Schakel S3TC textuurcompressie in, zelfs als softwareondersteuning niet aanwezig is") \ -        DRI_CONF_DESC(fr,"Activer la compression de texture S3TC même si le support logiciel est absent") \ -        DRI_CONF_DESC(sv,"Aktivera S3TC-texturkomprimering även om programvarustöd saknas") \ -DRI_CONF_OPT_END - -#define DRI_CONF_COLOR_REDUCTION_ROUND 0 -#define DRI_CONF_COLOR_REDUCTION_DITHER 1 -#define DRI_CONF_COLOR_REDUCTION(def) \ -DRI_CONF_OPT_BEGIN_V(color_reduction,enum,def,"0:1") \ -        DRI_CONF_DESC_BEGIN(en,"Initial color reduction method") \ -                DRI_CONF_ENUM(0,"Round colors") \ -                DRI_CONF_ENUM(1,"Dither colors") \ -        DRI_CONF_DESC_END \ -        DRI_CONF_DESC_BEGIN(de,"Initiale Farbreduktionsmethode") \ -                DRI_CONF_ENUM(0,"Farben runden") \ -                DRI_CONF_ENUM(1,"Farben rastern") \ -        DRI_CONF_DESC_END \ -        DRI_CONF_DESC_BEGIN(es,"Método inicial de reducción de color") \ -                DRI_CONF_ENUM(0,"Colores redondeados") \ -                DRI_CONF_ENUM(1,"Colores suavizados") \ -        DRI_CONF_DESC_END \ -        DRI_CONF_DESC_BEGIN(nl,"Initïele kleurreductie methode") \ -                DRI_CONF_ENUM(0,"Rond kleuren af") \ -                DRI_CONF_ENUM(1,"Rasteriseer kleuren") \ -        DRI_CONF_DESC_END \ -        DRI_CONF_DESC_BEGIN(fr,"Technique de réduction de couleurs") \ -                DRI_CONF_ENUM(0,"Arrondir les valeurs de couleur") \ -                DRI_CONF_ENUM(1,"Tramer les couleurs") \ -        DRI_CONF_DESC_END \ -        DRI_CONF_DESC_BEGIN(sv,"Initial färgminskningsmetod") \ -                DRI_CONF_ENUM(0,"Avrunda färger") \ -                DRI_CONF_ENUM(1,"Utjämna färger") \ -        DRI_CONF_DESC_END \ -DRI_CONF_OPT_END - -#define DRI_CONF_ROUND_TRUNC 0 -#define DRI_CONF_ROUND_ROUND 1 -#define DRI_CONF_ROUND_MODE(def) \ -DRI_CONF_OPT_BEGIN_V(round_mode,enum,def,"0:1") \ -	DRI_CONF_DESC_BEGIN(en,"Color rounding method") \ -                DRI_CONF_ENUM(0,"Round color components downward") \ -                DRI_CONF_ENUM(1,"Round to nearest color") \ -        DRI_CONF_DESC_END \ -	DRI_CONF_DESC_BEGIN(de,"Farbrundungsmethode") \ -                DRI_CONF_ENUM(0,"Farbkomponenten abrunden") \ -                DRI_CONF_ENUM(1,"Zur ähnlichsten Farbe runden") \ -        DRI_CONF_DESC_END \ -	DRI_CONF_DESC_BEGIN(es,"Método de redondeo de colores") \ -                DRI_CONF_ENUM(0,"Redondear hacia abajo los componentes de color") \ -                DRI_CONF_ENUM(1,"Redondear al color más cercano") \ -        DRI_CONF_DESC_END \ -	DRI_CONF_DESC_BEGIN(nl,"Kleurafrondingmethode") \ -                DRI_CONF_ENUM(0,"Rond kleurencomponenten af naar beneden") \ -                DRI_CONF_ENUM(1,"Rond af naar dichtsbijzijnde kleur") \ -        DRI_CONF_DESC_END \ -	DRI_CONF_DESC_BEGIN(fr,"Méthode d'arrondi des couleurs") \ -                DRI_CONF_ENUM(0,"Arrondi à l'inférieur") \ -                DRI_CONF_ENUM(1,"Arrondi au plus proche") \ -        DRI_CONF_DESC_END \ -	DRI_CONF_DESC_BEGIN(sv,"Färgavrundningsmetod") \ -                DRI_CONF_ENUM(0,"Avrunda färdkomponenter nedåt") \ -                DRI_CONF_ENUM(1,"Avrunda till närmsta färg") \ -        DRI_CONF_DESC_END \ -DRI_CONF_OPT_END - -#define DRI_CONF_DITHER_XERRORDIFF 0 -#define DRI_CONF_DITHER_XERRORDIFFRESET 1 -#define DRI_CONF_DITHER_ORDERED 2 -#define DRI_CONF_DITHER_MODE(def) \ -DRI_CONF_OPT_BEGIN_V(dither_mode,enum,def,"0:2") \ -	DRI_CONF_DESC_BEGIN(en,"Color dithering method") \ -                DRI_CONF_ENUM(0,"Horizontal error diffusion") \ -                DRI_CONF_ENUM(1,"Horizontal error diffusion, reset error at line start") \ -                DRI_CONF_ENUM(2,"Ordered 2D color dithering") \ -        DRI_CONF_DESC_END \ -	DRI_CONF_DESC_BEGIN(de,"Farbrasterungsmethode") \ -                DRI_CONF_ENUM(0,"Horizontale Fehlerstreuung") \ -                DRI_CONF_ENUM(1,"Horizontale Fehlerstreuung, Fehler am Zeilenanfang zurücksetzen") \ -                DRI_CONF_ENUM(2,"Geordnete 2D Farbrasterung") \ -        DRI_CONF_DESC_END \ -	DRI_CONF_DESC_BEGIN(es,"Método de suavizado de color") \ -                DRI_CONF_ENUM(0,"Difusión de error horizontal") \ -                DRI_CONF_ENUM(1,"Difusión de error horizontal, reiniciar error al comienzo de línea") \ -                DRI_CONF_ENUM(2,"Suavizado de color 2D ordenado") \ -        DRI_CONF_DESC_END \ -	DRI_CONF_DESC_BEGIN(nl,"Kleurrasteriseringsmethode") \ -                DRI_CONF_ENUM(0,"Horizontale foutdiffusie") \ -                DRI_CONF_ENUM(1,"Horizontale foutdiffusie, zet fout bij lijnbegin terug") \ -                DRI_CONF_ENUM(2,"Geordende 2D kleurrasterisering") \ -        DRI_CONF_DESC_END \ -	DRI_CONF_DESC_BEGIN(fr,"Méthode de tramage") \ -                DRI_CONF_ENUM(0,"Diffusion d'erreur horizontale") \ -                DRI_CONF_ENUM(1,"Diffusion d'erreur horizontale, réinitialisé pour chaque ligne") \ -                DRI_CONF_ENUM(2,"Tramage ordonné des couleurs") \ -        DRI_CONF_DESC_END \ -	DRI_CONF_DESC_BEGIN(sv,"Färgutjämningsmetod") \ -                DRI_CONF_ENUM(0,"Horisontell felspridning") \ -                DRI_CONF_ENUM(1,"Horisontell felspridning, återställ fel vid radbörjan") \ -                DRI_CONF_ENUM(2,"Ordnad 2D-färgutjämning") \ -        DRI_CONF_DESC_END \ -DRI_CONF_OPT_END - -#define DRI_CONF_FLOAT_DEPTH(def) \ -DRI_CONF_OPT_BEGIN(float_depth,bool,def) \ -        DRI_CONF_DESC(en,"Floating point depth buffer") \ -        DRI_CONF_DESC(de,"Fließkomma z-Puffer") \ -        DRI_CONF_DESC(es,"Búfer de profundidad en coma flotante") \ -        DRI_CONF_DESC(nl,"Dieptebuffer als commagetal") \ -        DRI_CONF_DESC(fr,"Z-buffer en virgule flottante") \ -        DRI_CONF_DESC(sv,"Buffert för flytande punktdjup") \ -DRI_CONF_OPT_END - -/** \brief Performance-related options */ -#define DRI_CONF_SECTION_PERFORMANCE \ -DRI_CONF_SECTION_BEGIN \ -        DRI_CONF_DESC(en,"Performance") \ -        DRI_CONF_DESC(de,"Leistung") \ -        DRI_CONF_DESC(es,"Rendimiento") \ -        DRI_CONF_DESC(nl,"Prestatie") \ -        DRI_CONF_DESC(fr,"Performance") \ -        DRI_CONF_DESC(sv,"Prestanda") - -#define DRI_CONF_TCL_SW 0 -#define DRI_CONF_TCL_PIPELINED 1 -#define DRI_CONF_TCL_VTXFMT 2 -#define DRI_CONF_TCL_CODEGEN 3 -#define DRI_CONF_TCL_MODE(def) \ -DRI_CONF_OPT_BEGIN_V(tcl_mode,enum,def,"0:3") \ -        DRI_CONF_DESC_BEGIN(en,"TCL mode (Transformation, Clipping, Lighting)") \ -                DRI_CONF_ENUM(0,"Use software TCL pipeline") \ -                DRI_CONF_ENUM(1,"Use hardware TCL as first TCL pipeline stage") \ -                DRI_CONF_ENUM(2,"Bypass the TCL pipeline") \ -                DRI_CONF_ENUM(3,"Bypass the TCL pipeline with state-based machine code generated on-the-fly") \ -        DRI_CONF_DESC_END \ -        DRI_CONF_DESC_BEGIN(de,"TCL-Modus (Transformation, Clipping, Licht)") \ -                DRI_CONF_ENUM(0,"Benutze die Software-TCL-Pipeline") \ -                DRI_CONF_ENUM(1,"Benutze Hardware TCL als erste Stufe der TCL-Pipeline") \ -                DRI_CONF_ENUM(2,"Umgehe die TCL-Pipeline") \ -                DRI_CONF_ENUM(3,"Umgehe die TCL-Pipeline mit zur Laufzeit erzeugtem, zustandsbasiertem Maschinencode") \ -        DRI_CONF_DESC_END \ -        DRI_CONF_DESC_BEGIN(es,"Modo TCL (Transformación, Recorte, Iluminación)") \ -                DRI_CONF_ENUM(0,"Usar tubería TCL por software") \ -                DRI_CONF_ENUM(1,"Usar TCL por hardware en la primera fase de la tubería TCL") \ -                DRI_CONF_ENUM(2,"Pasar por alto la tubería TCL") \ -                DRI_CONF_ENUM(3,"Pasar por alto la tubería TCL con código máquina basado en estados generado al vuelo") \ -        DRI_CONF_DESC_END \ -        DRI_CONF_DESC_BEGIN(nl,"TCL-modus (Transformatie, Clipping, Licht)") \ -                DRI_CONF_ENUM(0,"Gebruik software TCL pijpleiding") \ -                DRI_CONF_ENUM(1,"Gebruik hardware TCL as eerste TCL pijpleiding trap") \ -                DRI_CONF_ENUM(2,"Omzeil de TCL pijpleiding") \ -                DRI_CONF_ENUM(3,"Omzeil de TCL pijpleiding met staatgebaseerde machinecode die tijdens executie gegenereerd wordt") \ -        DRI_CONF_DESC_END \ -        DRI_CONF_DESC_BEGIN(fr,"Mode de TCL (Transformation, Clipping, Eclairage)") \ -                DRI_CONF_ENUM(0,"Utiliser un pipeline TCL logiciel") \ -                DRI_CONF_ENUM(1,"Utiliser le TCL matériel pour le premier niveau de pipeline") \ -                DRI_CONF_ENUM(2,"Court-circuiter le pipeline TCL") \ -                DRI_CONF_ENUM(3,"Court-circuiter le pipeline TCL par une machine à états qui génère le codede TCL à la volée") \ -        DRI_CONF_DESC_END \ -        DRI_CONF_DESC_BEGIN(sv,"TCL-läge (Transformation, Clipping, Lighting)") \ -                DRI_CONF_ENUM(0,"Använd programvaru-TCL-rörledning") \ -                DRI_CONF_ENUM(1,"Använd maskinvaru-TCL som första TCL-rörledningssteg") \ -                DRI_CONF_ENUM(2,"Kringgå TCL-rörledningen") \ -                DRI_CONF_ENUM(3,"Kringgå TCL-rörledningen med tillståndsbaserad maskinkod som direktgenereras") \ -        DRI_CONF_DESC_END \ -DRI_CONF_OPT_END - -#define DRI_CONF_FTHROTTLE_BUSY 0 -#define DRI_CONF_FTHROTTLE_USLEEPS 1 -#define DRI_CONF_FTHROTTLE_IRQS 2 -#define DRI_CONF_FTHROTTLE_MODE(def) \ -DRI_CONF_OPT_BEGIN_V(fthrottle_mode,enum,def,"0:2") \ -        DRI_CONF_DESC_BEGIN(en,"Method to limit rendering latency") \ -                DRI_CONF_ENUM(0,"Busy waiting for the graphics hardware") \ -                DRI_CONF_ENUM(1,"Sleep for brief intervals while waiting for the graphics hardware") \ -                DRI_CONF_ENUM(2,"Let the graphics hardware emit a software interrupt and sleep") \ -        DRI_CONF_DESC_END \ -        DRI_CONF_DESC_BEGIN(de,"Methode zur Begrenzung der Bildverzögerung") \ -                DRI_CONF_ENUM(0,"Aktives Warten auf die Grafikhardware") \ -                DRI_CONF_ENUM(1,"Kurze Schlafintervalle beim Warten auf die Grafikhardware") \ -                DRI_CONF_ENUM(2,"Die Grafikhardware eine Softwareunterbrechnung erzeugen lassen und schlafen") \ -        DRI_CONF_DESC_END \ -        DRI_CONF_DESC_BEGIN(es,"Método para limitar la latencia de rénder") \ -                DRI_CONF_ENUM(0,"Esperar activamente al hardware gráfico") \ -                DRI_CONF_ENUM(1,"Dormir en intervalos cortos mientras se espera al hardware gráfico") \ -                DRI_CONF_ENUM(2,"Permitir que el hardware gráfico emita una interrupción de software y duerma") \ -        DRI_CONF_DESC_END \ -        DRI_CONF_DESC_BEGIN(nl,"Methode om beeldopbouwvertraging te onderdrukken") \ -                DRI_CONF_ENUM(0,"Actief wachten voor de grafische hardware") \ -                DRI_CONF_ENUM(1,"Slaap voor korte intervallen tijdens het wachten op de grafische hardware") \ -                DRI_CONF_ENUM(2,"Laat de grafische hardware een software onderbreking uitzenden en in slaap vallen") \ -        DRI_CONF_DESC_END \ -        DRI_CONF_DESC_BEGIN(fr,"Méthode d'attente de la carte graphique") \ -                DRI_CONF_ENUM(0,"Attente active de la carte graphique") \ -                DRI_CONF_ENUM(1,"Attente utilisant usleep()") \ -                DRI_CONF_ENUM(2,"Utiliser les interruptions") \ -        DRI_CONF_DESC_END \ -        DRI_CONF_DESC_BEGIN(sv,"Metod för att begränsa renderingslatens") \ -                DRI_CONF_ENUM(0,"Upptagen med att vänta på grafikhårdvaran") \ -                DRI_CONF_ENUM(1,"Sov i korta intervall under väntan på grafikhårdvaran") \ -                DRI_CONF_ENUM(2,"Låt grafikhårdvaran sända ut ett programvaruavbrott och sov") \ -        DRI_CONF_DESC_END \ -DRI_CONF_OPT_END - -#define DRI_CONF_VBLANK_NEVER 0 -#define DRI_CONF_VBLANK_DEF_INTERVAL_0 1 -#define DRI_CONF_VBLANK_DEF_INTERVAL_1 2 -#define DRI_CONF_VBLANK_ALWAYS_SYNC 3 -#define DRI_CONF_VBLANK_MODE(def) \ -DRI_CONF_OPT_BEGIN_V(vblank_mode,enum,def,"0:3") \ -        DRI_CONF_DESC_BEGIN(en,"Synchronization with vertical refresh (swap intervals)") \ -                DRI_CONF_ENUM(0,"Never synchronize with vertical refresh, ignore application's choice") \ -                DRI_CONF_ENUM(1,"Initial swap interval 0, obey application's choice") \ -                DRI_CONF_ENUM(2,"Initial swap interval 1, obey application's choice") \ -                DRI_CONF_ENUM(3,"Always synchronize with vertical refresh, application chooses the minimum swap interval") \ -        DRI_CONF_DESC_END \ -        DRI_CONF_DESC_BEGIN(de,"Synchronisation mit der vertikalen Bildwiederholung") \ -                DRI_CONF_ENUM(0,"Niemals mit der Bildwiederholung synchronisieren, Anweisungen der Anwendung ignorieren") \ -                DRI_CONF_ENUM(1,"Initiales Bildinterval 0, Anweisungen der Anwendung gehorchen") \ -                DRI_CONF_ENUM(2,"Initiales Bildinterval 1, Anweisungen der Anwendung gehorchen") \ -                DRI_CONF_ENUM(3,"Immer mit der Bildwiederholung synchronisieren, Anwendung wählt das minimale Bildintervall") \ -        DRI_CONF_DESC_END \ -        DRI_CONF_DESC_BEGIN(es,"Sincronización con el refresco vertical (intervalos de intercambio)") \ -                DRI_CONF_ENUM(0,"No sincronizar nunca con el refresco vertical, ignorar la elección de la aplicación") \ -                DRI_CONF_ENUM(1,"Intervalo de intercambio inicial 0, obedecer la elección de la aplicación") \ -                DRI_CONF_ENUM(2,"Intervalo de intercambio inicial 1, obedecer la elección de la aplicación") \ -                DRI_CONF_ENUM(3,"Sincronizar siempre con el refresco vertical, la aplicación elige el intervalo de intercambio mínimo") \ -        DRI_CONF_DESC_END \ -        DRI_CONF_DESC_BEGIN(nl,"Synchronisatie met verticale verversing (interval omwisselen)") \ -                DRI_CONF_ENUM(0,"Nooit synchroniseren met verticale verversing, negeer de keuze van de applicatie") \ -                DRI_CONF_ENUM(1,"Initïeel omwisselingsinterval 0, honoreer de keuze van de applicatie") \ -                DRI_CONF_ENUM(2,"Initïeel omwisselingsinterval 1, honoreer de keuze van de applicatie") \ -                DRI_CONF_ENUM(3,"Synchroniseer altijd met verticale verversing, de applicatie kiest het minimum omwisselingsinterval") \ -        DRI_CONF_DESC_END \ -        DRI_CONF_DESC_BEGIN(fr,"Synchronisation de l'affichage avec le balayage vertical") \ -                DRI_CONF_ENUM(0,"Ne jamais synchroniser avec le balayage vertical, ignorer le choix de l'application") \ -                DRI_CONF_ENUM(1,"Ne pas synchroniser avec le balayage vertical par défaut, mais obéir au choix de l'application") \ -                DRI_CONF_ENUM(2,"Synchroniser avec le balayage vertical par défaut, mais obéir au choix de l'application") \ -                DRI_CONF_ENUM(3,"Toujours synchroniser avec le balayage vertical, l'application choisit l'intervalle minimal") \ -        DRI_CONF_DESC_END \ -        DRI_CONF_DESC_BEGIN(sv,"Synkronisering med vertikal uppdatering (växlingsintervall)") \ -                DRI_CONF_ENUM(0,"Synkronisera aldrig med vertikal uppdatering, ignorera programmets val") \ -                DRI_CONF_ENUM(1,"Initialt växlingsintervall 0, följ programmets val") \ -                DRI_CONF_ENUM(2,"Initialt växlingsintervall 1, följ programmets val") \ -                DRI_CONF_ENUM(3,"Synkronisera alltid med vertikal uppdatering, programmet väljer den minsta växlingsintervallen") \ -        DRI_CONF_DESC_END \ -DRI_CONF_OPT_END - -#define DRI_CONF_HYPERZ_DISABLED 0 -#define DRI_CONF_HYPERZ_ENABLED 1 -#define DRI_CONF_HYPERZ(def) \ -DRI_CONF_OPT_BEGIN(hyperz,bool,def) \ -        DRI_CONF_DESC(en,"Use HyperZ to boost performance") \ -        DRI_CONF_DESC(de,"HyperZ zur Leistungssteigerung verwenden") \ -        DRI_CONF_DESC(es,"Usar HyperZ para potenciar rendimiento") \ -        DRI_CONF_DESC(nl,"Gebruik HyperZ om de prestaties te verbeteren") \ -        DRI_CONF_DESC(fr,"Utiliser le HyperZ pour améliorer les performances") \ -        DRI_CONF_DESC(sv,"Använd HyperZ för att maximera prestandan") \ -DRI_CONF_OPT_END - -#define DRI_CONF_PP_CELSHADE(def) \ -DRI_CONF_OPT_BEGIN_V(pp_celshade,enum,def,"0:1") \ -        DRI_CONF_DESC(en,"A post-processing filter to cel-shade the output") \ -        DRI_CONF_DESC(de,"A post-processing filter to cel-shade the output") \ -        DRI_CONF_DESC(es,"A post-processing filter to cel-shade the output") \ -        DRI_CONF_DESC(nl,"A post-processing filter to cel-shade the output") \ -        DRI_CONF_DESC(fr,"A post-processing filter to cel-shade the output") \ -        DRI_CONF_DESC(sv,"A post-processing filter to cel-shade the output") \ -DRI_CONF_OPT_END - -#define DRI_CONF_PP_NORED(def) \ -DRI_CONF_OPT_BEGIN_V(pp_nored,enum,def,"0:1") \ -        DRI_CONF_DESC(en,"A post-processing filter to remove the red channel") \ -        DRI_CONF_DESC(de,"A post-processing filter to remove the red channel") \ -        DRI_CONF_DESC(es,"A post-processing filter to remove the red channel") \ -        DRI_CONF_DESC(nl,"A post-processing filter to remove the red channel") \ -        DRI_CONF_DESC(fr,"A post-processing filter to remove the red channel") \ -        DRI_CONF_DESC(sv,"A post-processing filter to remove the red channel") \ -DRI_CONF_OPT_END - -#define DRI_CONF_PP_NOGREEN(def) \ -DRI_CONF_OPT_BEGIN_V(pp_nogreen,enum,def,"0:1") \ -        DRI_CONF_DESC(en,"A post-processing filter to remove the green channel") \ -        DRI_CONF_DESC(de,"A post-processing filter to remove the green channel") \ -        DRI_CONF_DESC(es,"A post-processing filter to remove the green channel") \ -        DRI_CONF_DESC(nl,"A post-processing filter to remove the green channel") \ -        DRI_CONF_DESC(fr,"A post-processing filter to remove the green channel") \ -        DRI_CONF_DESC(sv,"A post-processing filter to remove the green channel") \ -DRI_CONF_OPT_END - -#define DRI_CONF_PP_NOBLUE(def) \ -DRI_CONF_OPT_BEGIN_V(pp_noblue,enum,def,"0:1") \ -        DRI_CONF_DESC(en,"A post-processing filter to remove the blue channel") \ -        DRI_CONF_DESC(de,"A post-processing filter to remove the blue channel") \ -        DRI_CONF_DESC(es,"A post-processing filter to remove the blue channel") \ -        DRI_CONF_DESC(nl,"A post-processing filter to remove the blue channel") \ -        DRI_CONF_DESC(fr,"A post-processing filter to remove the blue channel") \ -        DRI_CONF_DESC(sv,"A post-processing filter to remove the blue channel") \ -DRI_CONF_OPT_END - -#define DRI_CONF_PP_JIMENEZMLAA(def,min,max) \ -DRI_CONF_OPT_BEGIN_V(pp_jimenezmlaa,int,def, # min ":" # max ) \ -        DRI_CONF_DESC(en,"Morphological anti-aliasing based on Jimenez\' MLAA. 0 to disable, 8 for default quality") \ -        DRI_CONF_DESC(de,"Morphological anti-aliasing based on Jimenez\' MLAA. 0 to disable, 8 for default quality") \ -        DRI_CONF_DESC(es,"Morphological anti-aliasing based on Jimenez\' MLAA. 0 to disable, 8 for default quality") \ -        DRI_CONF_DESC(nl,"Morphological anti-aliasing based on Jimenez\' MLAA. 0 to disable, 8 for default quality") \ -        DRI_CONF_DESC(fr,"Morphological anti-aliasing based on Jimenez\' MLAA. 0 to disable, 8 for default quality") \ -        DRI_CONF_DESC(sv,"Morphological anti-aliasing based on Jimenez\' MLAA. 0 to disable, 8 for default quality") \ -DRI_CONF_OPT_END - -#define DRI_CONF_PP_JIMENEZMLAA_COLOR(def,min,max) \ -DRI_CONF_OPT_BEGIN_V(pp_jimenezmlaa_color,int,def, # min ":" # max ) \ -        DRI_CONF_DESC(en,"Morphological anti-aliasing based on Jimenez\' MLAA. 0 to disable, 8 for default quality. Color version, usable with 2d GL apps") \ -        DRI_CONF_DESC(de,"Morphological anti-aliasing based on Jimenez\' MLAA. 0 to disable, 8 for default quality. Color version, usable with 2d GL apps") \ -        DRI_CONF_DESC(es,"Morphological anti-aliasing based on Jimenez\' MLAA. 0 to disable, 8 for default quality. Color version, usable with 2d GL apps") \ -        DRI_CONF_DESC(nl,"Morphological anti-aliasing based on Jimenez\' MLAA. 0 to disable, 8 for default quality. Color version, usable with 2d GL apps") \ -        DRI_CONF_DESC(fr,"Morphological anti-aliasing based on Jimenez\' MLAA. 0 to disable, 8 for default quality. Color version, usable with 2d GL apps") \ -        DRI_CONF_DESC(sv,"Morphological anti-aliasing based on Jimenez\' MLAA. 0 to disable, 8 for default quality. Color version, usable with 2d GL apps") \ -DRI_CONF_OPT_END - -#define DRI_CONF_MAX_TEXTURE_UNITS(def,min,max) \ -DRI_CONF_OPT_BEGIN_V(texture_units,int,def, # min ":" # max ) \ -        DRI_CONF_DESC(en,"Number of texture units used") \ -        DRI_CONF_DESC(de,"Anzahl der benutzten Textureinheiten") \ -        DRI_CONF_DESC(es,"Número de unidades de textura usadas") \ -        DRI_CONF_DESC(nl,"Aantal textuureenheden in gebruik") \ -        DRI_CONF_DESC(fr,"Nombre d'unités de texture") \ -        DRI_CONF_DESC(sv,"Antal använda texturenheter") \ -DRI_CONF_OPT_END - -#define DRI_CONF_ALLOW_LARGE_TEXTURES(def) \ -DRI_CONF_OPT_BEGIN_V(allow_large_textures,enum,def,"0:2") \ -	DRI_CONF_DESC_BEGIN(en,"Support larger textures not guaranteed to fit into graphics memory") \ -		DRI_CONF_ENUM(0,"No") \ -		DRI_CONF_ENUM(1,"At least 1 texture must fit under worst-case assumptions") \ -		DRI_CONF_ENUM(2,"Announce hardware limits") \ -	DRI_CONF_DESC_END \ -	DRI_CONF_DESC_BEGIN(de,"Unterstütze grosse Texturen die evtl. nicht in den Grafikspeicher passen") \ -		DRI_CONF_ENUM(0,"Nein") \ -		DRI_CONF_ENUM(1,"Mindestens 1 Textur muss auch im schlechtesten Fall Platz haben") \ -		DRI_CONF_ENUM(2,"Benutze Hardware-Limits") \ -	DRI_CONF_DESC_END \ -	DRI_CONF_DESC_BEGIN(es,"Support larger textures not guaranteed to fit into graphics memory") \ -		DRI_CONF_ENUM(0,"No") \ -		DRI_CONF_ENUM(1,"At least 1 texture must fit under worst-case assumptions") \ -		DRI_CONF_ENUM(2,"Announce hardware limits") \ -	DRI_CONF_DESC_END \ -	DRI_CONF_DESC_BEGIN(nl,"Support larger textures not guaranteed to fit into graphics memory") \ -		DRI_CONF_ENUM(0,"No") \ -		DRI_CONF_ENUM(1,"At least 1 texture must fit under worst-case assumptions") \ -		DRI_CONF_ENUM(2,"Announce hardware limits") \ -	DRI_CONF_DESC_END \ -	DRI_CONF_DESC_BEGIN(fr,"Support larger textures not guaranteed to fit into graphics memory") \ -		DRI_CONF_ENUM(0,"No") \ -		DRI_CONF_ENUM(1,"At least 1 texture must fit under worst-case assumptions") \ -		DRI_CONF_ENUM(2,"Announce hardware limits") \ -	DRI_CONF_DESC_END \ -	DRI_CONF_DESC_BEGIN(sv,"Stöd för större texturer är inte garanterat att passa i grafikminnet") \ -		DRI_CONF_ENUM(0,"Nej") \ -		DRI_CONF_ENUM(1,"Åtminstone en textur måste passa för antaget sämsta förhållande") \ -		DRI_CONF_ENUM(2,"Annonsera hårdvarubegränsningar") \ -	DRI_CONF_DESC_END \ -DRI_CONF_OPT_END - -#define DRI_CONF_TEXTURE_BLEND_QUALITY(def,range) \ -DRI_CONF_OPT_BEGIN_V(texture_blend_quality,float,def,range) \ -	DRI_CONF_DESC(en,"Texture filtering quality vs. speed, AKA “brilinear” texture filtering") \ -	DRI_CONF_DESC(de,"Texturfilterqualität versus -geschwindigkeit, auch bekannt als „brilineare“ Texturfilterung") \ -	DRI_CONF_DESC(es,"Calidad de filtrado de textura vs. velocidad, alias filtrado ”brilinear“ de textura") \ -	DRI_CONF_DESC(nl,"Textuurfilterkwaliteit versus -snelheid, ookwel bekend als “brilineaire” textuurfiltering") \ -	DRI_CONF_DESC(fr,"Qualité/performance du filtrage trilinéaire de texture (filtrage brilinéaire)") \ -	DRI_CONF_DESC(sv,"Texturfiltreringskvalitet mot hastighet, även kallad ”brilinear”-texturfiltrering") \ -DRI_CONF_OPT_END - -#define DRI_CONF_TEXTURE_HEAPS_ALL 0 -#define DRI_CONF_TEXTURE_HEAPS_CARD 1 -#define DRI_CONF_TEXTURE_HEAPS_GART 2 -#define DRI_CONF_TEXTURE_HEAPS(def) \ -DRI_CONF_OPT_BEGIN_V(texture_heaps,enum,def,"0:2") \ -	DRI_CONF_DESC_BEGIN(en,"Used types of texture memory") \ -		DRI_CONF_ENUM(0,"All available memory") \ -		DRI_CONF_ENUM(1,"Only card memory (if available)") \ -		DRI_CONF_ENUM(2,"Only GART (AGP/PCIE) memory (if available)") \ -	DRI_CONF_DESC_END \ -	DRI_CONF_DESC_BEGIN(de,"Benutzte Arten von Texturspeicher") \ -		DRI_CONF_ENUM(0,"Aller verfügbarer Speicher") \ -		DRI_CONF_ENUM(1,"Nur Grafikspeicher (falls verfügbar)") \ -		DRI_CONF_ENUM(2,"Nur GART-Speicher (AGP/PCIE) (falls verfügbar)") \ -	DRI_CONF_DESC_END \ -	DRI_CONF_DESC_BEGIN(es,"Tipos de memoria de textura usados") \ -		DRI_CONF_ENUM(0,"Toda la memoria disponible") \ -		DRI_CONF_ENUM(1,"Sólo la memoria de la tarjeta (si disponible)") \ -		DRI_CONF_ENUM(2,"Sólo memoria GART (AGP/PCIE) (si disponible)") \ -	DRI_CONF_DESC_END \ -	DRI_CONF_DESC_BEGIN(nl,"Gebruikte soorten textuurgeheugen") \ -		DRI_CONF_ENUM(0,"Al het beschikbaar geheugen") \ -		DRI_CONF_ENUM(1,"Alleen geheugen op de kaart (als het aanwezig is)") \ -		DRI_CONF_ENUM(2,"Alleen GART (AGP/PCIE) geheugen (als het aanwezig is)") \ -	DRI_CONF_DESC_END \ -	DRI_CONF_DESC_BEGIN(fr,"Types de mémoire de texture") \ -		DRI_CONF_ENUM(0,"Utiliser toute la mémoire disponible") \ -		DRI_CONF_ENUM(1,"Utiliser uniquement la mémoire graphique (si disponible)") \ -		DRI_CONF_ENUM(2,"Utiliser uniquement la mémoire GART (AGP/PCIE) (si disponible)") \ -	DRI_CONF_DESC_END \ -	DRI_CONF_DESC_BEGIN(sv,"Använda typer av texturminne") \ -		DRI_CONF_ENUM(0,"Allt tillgängligt minne") \ -		DRI_CONF_ENUM(1,"Endast kortminne (om tillgängligt)") \ -		DRI_CONF_ENUM(2,"Endast GART-minne (AGP/PCIE) (om tillgängligt)") \ -	DRI_CONF_DESC_END \ -DRI_CONF_OPT_END - -/* Options for features that are not done in hardware by the driver (like GL_ARB_vertex_program -   On cards where there is no documentation (r200) or on rasterization-only hardware). */ -#define DRI_CONF_SECTION_SOFTWARE \ -DRI_CONF_SECTION_BEGIN \ -        DRI_CONF_DESC(en,"Features that are not hardware-accelerated") \ -        DRI_CONF_DESC(de,"Funktionalität, die nicht hardwarebeschleunigt ist") \ -        DRI_CONF_DESC(es,"Características no aceleradas por hardware") \ -        DRI_CONF_DESC(nl,"Eigenschappen die niet hardwareversneld zijn") \ -        DRI_CONF_DESC(fr,"Fonctionnalités ne bénéficiant pas d'une accélération matérielle") \ -        DRI_CONF_DESC(sv,"Funktioner som inte är hårdvaruaccelererade") - -#define DRI_CONF_ARB_VERTEX_PROGRAM(def) \ -DRI_CONF_OPT_BEGIN(arb_vertex_program,bool,def) \ -        DRI_CONF_DESC(en,"Enable extension GL_ARB_vertex_program") \ -        DRI_CONF_DESC(de,"Erweiterung GL_ARB_vertex_program aktivieren") \ -        DRI_CONF_DESC(es,"Activar la extensión GL_ARB_vertex_program") \ -        DRI_CONF_DESC(nl,"Zet uitbreiding GL_ARB_vertex_program aan") \ -        DRI_CONF_DESC(fr,"Activer l'extension GL_ARB_vertex_program") \ -        DRI_CONF_DESC(sv,"Aktivera tillägget GL_ARB_vertex_program") \ -DRI_CONF_OPT_END - -#define DRI_CONF_ALWAYS_FLUSH_BATCH(def) \ -DRI_CONF_OPT_BEGIN(always_flush_batch,bool,def) \ -        DRI_CONF_DESC(en,"Enable flushing batchbuffer after each draw call") \ -        DRI_CONF_DESC(de,"Enable flushing batchbuffer after each draw call") \ -        DRI_CONF_DESC(es,"Enable flushing batchbuffer after each draw call") \ -        DRI_CONF_DESC(nl,"Enable flushing batchbuffer after each draw call") \ -        DRI_CONF_DESC(fr,"Enable flushing batchbuffer after each draw call") \ -        DRI_CONF_DESC(sv,"Enable flushing batchbuffer after each draw call") \ -DRI_CONF_OPT_END - -#define DRI_CONF_ALWAYS_FLUSH_CACHE(def) \ -DRI_CONF_OPT_BEGIN(always_flush_cache,bool,def) \ -        DRI_CONF_DESC(en,"Enable flushing GPU caches with each draw call") \ -        DRI_CONF_DESC(de,"Enable flushing GPU caches with each draw call") \ -        DRI_CONF_DESC(es,"Enable flushing GPU caches with each draw call") \ -        DRI_CONF_DESC(nl,"Enable flushing GPU caches with each draw call") \ -        DRI_CONF_DESC(fr,"Enable flushing GPU caches with each draw call") \ -        DRI_CONF_DESC(sv,"Enable flushing GPU caches with each draw call") \ -DRI_CONF_OPT_END - -#define DRI_CONF_FORCE_GLSL_EXTENSIONS_WARN(def) \ -DRI_CONF_OPT_BEGIN(force_glsl_extensions_warn,bool,def) \ -        DRI_CONF_DESC(en,"Force GLSL extension default behavior to 'warn'") \ -        DRI_CONF_DESC(de,"Force GLSL extension default behavior to 'warn'") \ -        DRI_CONF_DESC(es,"Force GLSL extension default behavior to 'warn'") \ -        DRI_CONF_DESC(nl,"Force GLSL extension default behavior to 'warn'") \ -        DRI_CONF_DESC(fr,"Force GLSL extension default behavior to 'warn'") \ -        DRI_CONF_DESC(sv,"Force GLSL extension default behavior to 'warn'") \ -DRI_CONF_OPT_END - -#define DRI_CONF_DISABLE_BLEND_FUNC_EXTENDED(def) \ -DRI_CONF_OPT_BEGIN(disable_blend_func_extended,bool,def) \ -        DRI_CONF_DESC(en,"Disable dual source blending") \ -        DRI_CONF_DESC(de,"Disable dual source blending") \ -        DRI_CONF_DESC(es,"Disable dual source blending") \ -        DRI_CONF_DESC(nl,"Disable dual source blending") \ -        DRI_CONF_DESC(fr,"Disable dual source blending") \ -        DRI_CONF_DESC(sv,"Disable dual source blending") \ -DRI_CONF_OPT_END diff --git a/mesalib/src/mesa/drivers/dri/common/xmlpool/t_options.h b/mesalib/src/mesa/drivers/dri/common/xmlpool/t_options.h index e2d4aaee3..683a47366 100644 --- a/mesalib/src/mesa/drivers/dri/common/xmlpool/t_options.h +++ b/mesalib/src/mesa/drivers/dri/common/xmlpool/t_options.h @@ -272,3 +272,18 @@ DRI_CONF_OPT_END  DRI_CONF_OPT_BEGIN(always_flush_cache,bool,def) \          DRI_CONF_DESC(en,gettext("Enable flushing GPU caches with each draw call")) \  DRI_CONF_OPT_END + +#define DRI_CONF_FORCE_GLSL_EXTENSIONS_WARN(def) \ +DRI_CONF_OPT_BEGIN(force_glsl_extensions_warn,bool,def) \ +        DRI_CONF_DESC(en,gettext("Force GLSL extension default behavior to 'warn'")) \ +DRI_CONF_OPT_END + +#define DRI_CONF_DISABLE_BLEND_FUNC_EXTENDED(def) \ +DRI_CONF_OPT_BEGIN(disable_blend_func_extended,bool,def) \ +        DRI_CONF_DESC(en,gettext("Disable dual source blending")) \ +DRI_CONF_OPT_END + +#define DRI_CONF_DISABLE_GLSL_LINE_CONTINUATIONS(def) \ +DRI_CONF_OPT_BEGIN(disable_glsl_line_continuations,bool,def) \ +        DRI_CONF_DESC(en,gettext("Disable backslash-based line continuations in GLSL source")) \ +DRI_CONF_OPT_END diff --git a/mesalib/src/mesa/drivers/dri/swrast/Makefile.am b/mesalib/src/mesa/drivers/dri/swrast/Makefile.am index 244aa8b27..3e539073c 100644 --- a/mesalib/src/mesa/drivers/dri/swrast/Makefile.am +++ b/mesalib/src/mesa/drivers/dri/swrast/Makefile.am @@ -23,9 +23,6 @@  include Makefile.sources -# Hack to make some of the non-automake variables work. -TOP=$(top_builddir) -  AM_CFLAGS = \  	-D__NOT_HAVE_DRM_H \  	-I$(top_srcdir)/include \ diff --git a/mesalib/src/mesa/main/api_arrayelt.c b/mesalib/src/mesa/main/api_arrayelt.c index 0fa242997..ea3361488 100644 --- a/mesalib/src/mesa/main/api_arrayelt.c +++ b/mesalib/src/mesa/main/api_arrayelt.c @@ -1636,7 +1636,7 @@ void GLAPIENTRY _ae_ArrayElement( GLint elt )     /* If PrimitiveRestart is enabled and the index is the RestartIndex      * then we call PrimitiveRestartNV and return.      */ -   if (ctx->Array.PrimitiveRestart && (elt == ctx->Array.RestartIndex)) { +   if (ctx->Array._PrimitiveRestart && (elt == ctx->Array._RestartIndex)) {        CALL_PrimitiveRestartNV((struct _glapi_table *)disp, ());        return;     } diff --git a/mesalib/src/mesa/main/attrib.c b/mesalib/src/mesa/main/attrib.c index a19d61054..d6f298d93 100644 --- a/mesalib/src/mesa/main/attrib.c +++ b/mesalib/src/mesa/main/attrib.c @@ -1377,7 +1377,10 @@ copy_array_attrib(struct gl_context *ctx,     dest->LockFirst = src->LockFirst;     dest->LockCount = src->LockCount;     dest->PrimitiveRestart = src->PrimitiveRestart; +   dest->PrimitiveRestartFixedIndex = src->PrimitiveRestartFixedIndex; +   dest->_PrimitiveRestart = src->_PrimitiveRestart;     dest->RestartIndex = src->RestartIndex; +   dest->_RestartIndex = src->_RestartIndex;     /* skip NewState */     /* skip RebindArrays */ diff --git a/mesalib/src/mesa/main/enable.c b/mesalib/src/mesa/main/enable.c index b48794f95..73257290e 100644 --- a/mesalib/src/mesa/main/enable.c +++ b/mesalib/src/mesa/main/enable.c @@ -48,6 +48,20 @@     } +static void +update_derived_primitive_restart_state(struct gl_context *ctx) +{ +   /* Update derived primitive restart state. +    */ +   if (ctx->Array.PrimitiveRestart) +      ctx->Array._RestartIndex = ctx->Array.RestartIndex; +   else +      ctx->Array._RestartIndex = ~0; + +   ctx->Array._PrimitiveRestart = ctx->Array.PrimitiveRestart +      || ctx->Array.PrimitiveRestartFixedIndex; +} +  /**   * Helper to enable/disable client-side state.   */ @@ -119,6 +133,8 @@ client_state(struct gl_context *ctx, GLenum cap, GLboolean state)     *var = state; +   update_derived_primitive_restart_state(ctx); +     if (state)        arrayObj->_Enabled |= flag;     else @@ -967,6 +983,17 @@ _mesa_set_enable(struct gl_context *ctx, GLenum cap, GLboolean state)           if (ctx->Array.PrimitiveRestart != state) {              FLUSH_VERTICES(ctx, _NEW_TRANSFORM);              ctx->Array.PrimitiveRestart = state; +            update_derived_primitive_restart_state(ctx); +         } +         break; + +      case GL_PRIMITIVE_RESTART_FIXED_INDEX: +	 if (!_mesa_is_gles3(ctx) && !ctx->Extensions.ARB_ES3_compatibility) +            goto invalid_enum_error; +         if (ctx->Array.PrimitiveRestartFixedIndex != state) { +            FLUSH_VERTICES(ctx, _NEW_TRANSFORM); +            ctx->Array.PrimitiveRestartFixedIndex = state; +            update_derived_primitive_restart_state(ctx);           }           break; @@ -1542,6 +1569,12 @@ _mesa_IsEnabled( GLenum cap )           }           return ctx->Array.PrimitiveRestart; +      case GL_PRIMITIVE_RESTART_FIXED_INDEX: +	 if (!_mesa_is_gles3(ctx) && !ctx->Extensions.ARB_ES3_compatibility) { +            goto invalid_enum_error; +         } +         return ctx->Array.PrimitiveRestartFixedIndex; +        /* GL3.0 - GL_framebuffer_sRGB */        case GL_FRAMEBUFFER_SRGB_EXT:           if (!_mesa_is_desktop_gl(ctx)) diff --git a/mesalib/src/mesa/main/extensions.c b/mesalib/src/mesa/main/extensions.c index 3486b65a4..c3c73fc26 100644 --- a/mesalib/src/mesa/main/extensions.c +++ b/mesalib/src/mesa/main/extensions.c @@ -100,6 +100,7 @@ static const struct extension extension_table[] = {     { "GL_ARB_fragment_shader",                     o(ARB_fragment_shader),                     GL,             2002 },     { "GL_ARB_framebuffer_object",                  o(ARB_framebuffer_object),                  GL,             2005 },     { "GL_ARB_framebuffer_sRGB",                    o(EXT_framebuffer_sRGB),                    GL,             1998 }, +   { "GL_ARB_get_program_binary",                  o(ARB_shader_objects),                      GL,             2010 },     { "GL_ARB_half_float_pixel",                    o(ARB_half_float_pixel),                    GL,             2003 },     { "GL_ARB_half_float_vertex",                   o(ARB_half_float_vertex),                   GL,             2008 },     { "GL_ARB_instanced_arrays",                    o(ARB_instanced_arrays),                    GL,             2008 }, @@ -249,6 +250,7 @@ static const struct extension extension_table[] = {     { "GL_OES_fbo_render_mipmap",                   o(EXT_framebuffer_object),                       ES1 | ES2, 2005 },     { "GL_OES_fixed_point",                         o(dummy_true),                                   ES1,       2002 },     { "GL_OES_framebuffer_object",                  o(EXT_framebuffer_object),                       ES1,       2005 }, +   { "GL_OES_get_program_binary",                  o(ARB_shader_objects),                                 ES2, 2008 },     { "GL_OES_mapbuffer",                           o(dummy_true),                                   ES1 | ES2, 2005 },     { "GL_OES_matrix_get",                          o(dummy_true),                                   ES1,       2004 },     { "GL_OES_packed_depth_stencil",                o(EXT_packed_depth_stencil),                     ES1 | ES2, 2007 }, diff --git a/mesalib/src/mesa/main/format_unpack.c b/mesalib/src/mesa/main/format_unpack.c index d34a27b82..92ce86908 100644 --- a/mesalib/src/mesa/main/format_unpack.c +++ b/mesalib/src/mesa/main/format_unpack.c @@ -2696,6 +2696,20 @@ unpack_int_rgba_ABGR2101010_UINT(const GLuint *src, GLuint dst[][4], GLuint n)     }  } +static void +unpack_int_rgba_ARGB2101010(const GLuint *src, GLuint dst[][4], GLuint n) +{ +   unsigned int i; + +   for (i = 0; i < n; i++) { +      GLuint tmp = src[i]; +      dst[i][0] = (tmp >> 20) & 0x3ff; +      dst[i][1] = (tmp >> 10) & 0x3ff; +      dst[i][2] = (tmp >> 0) & 0x3ff; +      dst[i][3] = (tmp >> 30) & 0x3; +   } +} +  void  _mesa_unpack_uint_rgba_row(gl_format format, GLuint n,                             const void *src, GLuint dst[][4]) @@ -2871,6 +2885,10 @@ _mesa_unpack_uint_rgba_row(gl_format format, GLuint n,        unpack_int_rgba_ABGR2101010_UINT(src, dst, n);        break; +   case MESA_FORMAT_ARGB2101010: +      unpack_int_rgba_ARGB2101010(src, dst, n); +      break; +     default:        _mesa_problem(NULL, "%s: bad format %s", __FUNCTION__,                      _mesa_get_format_name(format)); diff --git a/mesalib/src/mesa/main/get_hash_params.py b/mesalib/src/mesa/main/get_hash_params.py index 3db820a77..26a722a87 100644 --- a/mesalib/src/mesa/main/get_hash_params.py +++ b/mesalib/src/mesa/main/get_hash_params.py @@ -310,6 +310,12 @@ descriptor=[    [ "MAX_VARYING_VECTORS", "CONTEXT_INT(Const.MaxVarying), extra_ARB_ES2_compatibility_api_es2" ],    [ "MAX_VERTEX_UNIFORM_VECTORS", "LOC_CUSTOM, TYPE_INT, 0, extra_ARB_ES2_compatibility_api_es2" ],    [ "MAX_FRAGMENT_UNIFORM_VECTORS", "LOC_CUSTOM, TYPE_INT, 0, extra_ARB_ES2_compatibility_api_es2" ], +  [ "NUM_SHADER_BINARY_FORMATS", "CONST(0), extra_ARB_ES2_compatibility_api_es2" ], +  [ "SHADER_BINARY_FORMATS", "CONST(0), extra_ARB_ES2_compatibility_api_es2" ], + +# GL_ARB_get_program_binary / GL_OES_get_program_binary +  [ "NUM_PROGRAM_BINARY_FORMATS", "CONST(0), extra_ARB_shader_objects" ], +  [ "PROGRAM_BINARY_FORMATS", "LOC_CUSTOM, TYPE_INVALID, 0, extra_ARB_shader_objects" ],  ]},  # GLES3 is not a typo. @@ -379,14 +385,6 @@ descriptor=[    [ "TEXTURE_EXTERNAL_OES", "LOC_CUSTOM, TYPE_BOOLEAN, 0, extra_OES_EGL_image_external" ],  ]}, -# Enums unique to OpenGL ES 2.0 -{ "apis": ["GLES2"], "params": [ -# OES_get_program_binary -  [ "NUM_SHADER_BINARY_FORMATS", "CONST(0), NO_EXTRA" ], -  [ "SHADER_BINARY_FORMATS", "CONST(0), NO_EXTRA" ], -]}, - -  # Remaining enums are only in OpenGL  { "apis": ["GL", "GL_CORE"], "params": [    [ "ACCUM_RED_BITS", "BUFFER_INT(Visual.accumRedBits), NO_EXTRA" ], diff --git a/mesalib/src/mesa/main/glformats.c b/mesalib/src/mesa/main/glformats.c index f33a0503d..ff56ffad0 100644 --- a/mesalib/src/mesa/main/glformats.c +++ b/mesalib/src/mesa/main/glformats.c @@ -271,7 +271,8 @@ _mesa_bytes_per_pixel(GLenum format, GLenum type)     case GL_UNSIGNED_INT_10_10_10_2:     case GL_UNSIGNED_INT_2_10_10_10_REV:        if (format == GL_RGBA || format == GL_BGRA || format == GL_ABGR_EXT || -          format == GL_RGBA_INTEGER_EXT || format == GL_BGRA_INTEGER_EXT) +          format == GL_RGBA_INTEGER_EXT || format == GL_BGRA_INTEGER_EXT || +          format == GL_RGB)           return sizeof(GLuint);        else           return -1; @@ -353,21 +354,9 @@ _mesa_bytes_per_vertex_attrib(GLint comps, GLenum type)   * Test if the given format is an integer (non-normalized) format.   */  GLboolean -_mesa_is_enum_format_integer(GLenum format) +_mesa_is_enum_format_unsigned_int(GLenum format)  {     switch (format) { -   /* generic integer formats */ -   case GL_RED_INTEGER_EXT: -   case GL_GREEN_INTEGER_EXT: -   case GL_BLUE_INTEGER_EXT: -   case GL_ALPHA_INTEGER_EXT: -   case GL_RGB_INTEGER_EXT: -   case GL_RGBA_INTEGER_EXT: -   case GL_BGR_INTEGER_EXT: -   case GL_BGRA_INTEGER_EXT: -   case GL_LUMINANCE_INTEGER_EXT: -   case GL_LUMINANCE_ALPHA_INTEGER_EXT: -   case GL_RG_INTEGER:     /* specific integer formats */     case GL_RGBA32UI_EXT:     case GL_RGB32UI_EXT: @@ -393,6 +382,34 @@ _mesa_is_enum_format_integer(GLenum format)     case GL_INTENSITY8UI_EXT:     case GL_LUMINANCE8UI_EXT:     case GL_LUMINANCE_ALPHA8UI_EXT: +   case GL_RGB10_A2UI: +      return GL_TRUE; +   default: +      return GL_FALSE; +   } +} + + +/** + * Test if the given format is an integer (non-normalized) format. + */ +GLboolean +_mesa_is_enum_format_signed_int(GLenum format) +{ +   switch (format) { +   /* generic integer formats */ +   case GL_RED_INTEGER_EXT: +   case GL_GREEN_INTEGER_EXT: +   case GL_BLUE_INTEGER_EXT: +   case GL_ALPHA_INTEGER_EXT: +   case GL_RGB_INTEGER_EXT: +   case GL_RGBA_INTEGER_EXT: +   case GL_BGR_INTEGER_EXT: +   case GL_BGRA_INTEGER_EXT: +   case GL_LUMINANCE_INTEGER_EXT: +   case GL_LUMINANCE_ALPHA_INTEGER_EXT: +   case GL_RG_INTEGER: +   /* specific integer formats */     case GL_RGBA32I_EXT:     case GL_RGB32I_EXT:     case GL_RG32I: @@ -417,7 +434,6 @@ _mesa_is_enum_format_integer(GLenum format)     case GL_INTENSITY8I_EXT:     case GL_LUMINANCE8I_EXT:     case GL_LUMINANCE_ALPHA8I_EXT: -   case GL_RGB10_A2UI:        return GL_TRUE;     default:        return GL_FALSE; @@ -426,6 +442,17 @@ _mesa_is_enum_format_integer(GLenum format)  /** + * Test if the given format is an integer (non-normalized) format. + */ +GLboolean +_mesa_is_enum_format_integer(GLenum format) +{ +   return _mesa_is_enum_format_unsigned_int(format) || +          _mesa_is_enum_format_signed_int(format); +} + + +/**   * Test if the given type is an integer (non-normalized) format.   */  GLboolean @@ -1032,6 +1059,32 @@ _mesa_base_format_has_channel(GLenum base_format, GLenum pname)  /** + * Returns the number of channels/components for a base format. + */ +GLint +_mesa_base_format_component_count(GLenum base_format) +{ +   switch (base_format) { +   case GL_RED: +   case GL_ALPHA: +   case GL_INTENSITY: +   case GL_DEPTH_COMPONENT: +      return 1; +   case GL_RG: +   case GL_LUMINANCE_ALPHA: +   case GL_DEPTH_STENCIL: +      return 2; +   case GL_RGB: +      return 3; +   case GL_RGBA: +      return 4; +   default: +      return -1; +   } +} + + +/**   * If format is a generic compressed format, return the corresponding   * non-compressed format.  For other formats, return the format as-is.   */ diff --git a/mesalib/src/mesa/main/glformats.h b/mesalib/src/mesa/main/glformats.h index ccfb5e13c..fe604ddc9 100644 --- a/mesalib/src/mesa/main/glformats.h +++ b/mesalib/src/mesa/main/glformats.h @@ -62,6 +62,12 @@ extern GLboolean  _mesa_is_enum_format_integer(GLenum format);  extern GLboolean +_mesa_is_enum_format_unsigned_int(GLenum format); + +extern GLboolean +_mesa_is_enum_format_signed_int(GLenum format); + +extern GLboolean  _mesa_is_enum_format_or_type_integer(GLenum format, GLenum type);  extern GLboolean @@ -94,6 +100,9 @@ _mesa_base_format_to_integer_format(GLenum format);  extern GLboolean  _mesa_base_format_has_channel(GLenum base_format, GLenum pname); +extern GLint +_mesa_base_format_component_count(GLenum base_format); +  extern GLenum  _mesa_generic_compressed_format_to_uncompressed_format(GLenum format); diff --git a/mesalib/src/mesa/main/mtypes.h b/mesalib/src/mesa/main/mtypes.h index 318dcb548..8904b13d9 100644 --- a/mesalib/src/mesa/main/mtypes.h +++ b/mesalib/src/mesa/main/mtypes.h @@ -1634,9 +1634,20 @@ struct gl_array_attrib     GLuint LockFirst;            /**< GL_EXT_compiled_vertex_array */     GLuint LockCount;            /**< GL_EXT_compiled_vertex_array */ -   /** GL 3.1 (slightly different from GL_NV_primitive_restart) */ +   /** +    * \name Primitive restart controls +    * +    * Primitive restart is enabled if either \c PrimitiveRestart or +    * \c PrimitiveRestart is set.  If \c PrimitiveRestart is set, then +    * \c RestartIndex is used as the cut vertex.  Otherwise ~0 is used. +    */ +   /*@{*/     GLboolean PrimitiveRestart; +   GLboolean PrimitiveRestartFixedIndex; +   GLboolean _PrimitiveRestart;     GLuint RestartIndex; +   GLuint _RestartIndex; +   /*@}*/     /* GL_ARB_vertex_buffer_object */     struct gl_buffer_object *ArrayBufferObj; @@ -2303,6 +2314,11 @@ struct gl_shader_program     GLboolean DeletePending;     /** +    * Is the application intending to glGetProgramBinary this program? +    */ +   GLboolean BinaryRetreivableHint; + +   /**      * Flags that the linker should not reject the program if it lacks      * a vertex or fragment shader.  GLES2 doesn't allow separate      * shader objects, and would reject them.  However, we internally @@ -2973,6 +2989,12 @@ struct gl_constants      * \sa _mesa_init_constants      */     GLuint64 MaxElementIndex; + +   /** +    * Disable interpretation of line continuations (lines ending with a +    * backslash character ('\') in GLSL source. +    */ +   GLboolean DisableGLSLLineContinuations;  }; diff --git a/mesalib/src/mesa/main/queryobj.c b/mesalib/src/mesa/main/queryobj.c index b5023e260..aa7c800d4 100644 --- a/mesalib/src/mesa/main/queryobj.c +++ b/mesalib/src/mesa/main/queryobj.c @@ -147,6 +147,12 @@ get_query_binding_point(struct gl_context *ctx, GLenum target)           return &ctx->Query.CurrentOcclusionObject;        else           return NULL; +   case GL_ANY_SAMPLES_PASSED_CONSERVATIVE: +      if (ctx->Extensions.ARB_ES3_compatibility +          || (ctx->API == API_OPENGLES2 && ctx->Version >= 30)) +         return &ctx->Query.CurrentOcclusionObject; +      else +         return NULL;     case GL_TIME_ELAPSED_EXT:        if (ctx->Extensions.EXT_timer_query)           return &ctx->Query.CurrentTimerObject; @@ -577,7 +583,8 @@ _mesa_GetQueryObjectiv(GLuint id, GLenum pname, GLint *params)           if (!q->Ready)              ctx->Driver.WaitQuery(ctx, q);           /* if result is too large for returned type, clamp to max value */ -         if (q->Target == GL_ANY_SAMPLES_PASSED) { +         if (q->Target == GL_ANY_SAMPLES_PASSED +             || q->Target == GL_ANY_SAMPLES_PASSED_CONSERVATIVE) {              if (q->Result)                 *params = GL_TRUE;              else @@ -628,7 +635,8 @@ _mesa_GetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params)           if (!q->Ready)              ctx->Driver.WaitQuery(ctx, q);           /* if result is too large for returned type, clamp to max value */ -         if (q->Target == GL_ANY_SAMPLES_PASSED) { +         if (q->Target == GL_ANY_SAMPLES_PASSED +             || q->Target == GL_ANY_SAMPLES_PASSED_CONSERVATIVE) {              if (q->Result)                 *params = GL_TRUE;              else diff --git a/mesalib/src/mesa/main/shaderapi.c b/mesalib/src/mesa/main/shaderapi.c index 1f0002f6f..7f5fce796 100644 --- a/mesalib/src/mesa/main/shaderapi.c +++ b/mesalib/src/mesa/main/shaderapi.c @@ -583,6 +583,21 @@ get_programiv(struct gl_context *ctx, GLuint program, GLenum pname, GLint *param        *params = shProg->NumUniformBlocks;        return; +   case GL_PROGRAM_BINARY_RETRIEVABLE_HINT: +      /* This enum isn't part of the OES extension for OpenGL ES 2.0.  It is +       * only available with desktop OpenGL 3.0+ with the +       * GL_ARB_get_program_binary extension or OpenGL ES 3.0. +       * +       * On desktop, we ignore the 3.0+ requirement because it is silly. +       */ +      if (!_mesa_is_desktop_gl(ctx) && !_mesa_is_gles3(ctx)) +         break; + +      *params = shProg->BinaryRetreivableHint; +      return; +   case GL_PROGRAM_BINARY_LENGTH: +      *params = 0; +      return;     default:        break;     } @@ -1500,9 +1515,64 @@ _mesa_ShaderBinary(GLint n, const GLuint* shaders, GLenum binaryformat,  #endif /* FEATURE_ES2 */ +void GLAPIENTRY +_mesa_GetProgramBinary(GLuint program, GLsizei bufSize, GLsizei *length, +                       GLenum *binaryFormat, GLvoid *binary) +{ +   struct gl_shader_program *shProg; +   GET_CURRENT_CONTEXT(ctx); + +   ASSERT_OUTSIDE_BEGIN_END(ctx); + +   shProg = _mesa_lookup_shader_program_err(ctx, program, "glGetProgramBinary"); +   if (!shProg) +      return; + +   if (!shProg->LinkStatus) { +      _mesa_error(ctx, GL_INVALID_OPERATION, +                  "glGetProgramBinary(program %u not linked)", +                  shProg->Name); +      return; +   } + +   if (bufSize < 0){ +      _mesa_error(ctx, GL_INVALID_VALUE, "glGetProgramBinary(bufSize < 0)"); +      return; +   } + +   /* The ARB_get_program_binary spec says: +    * +    *     "If <length> is NULL, then no length is returned." +    */ +   if (length != NULL) +      *length = 0; + +   (void) binaryFormat; +   (void) binary; +}  void GLAPIENTRY -_mesa_ProgramParameteriARB(GLuint program, GLenum pname, GLint value) +_mesa_ProgramBinary(GLuint program, GLenum binaryFormat, +                    const GLvoid *binary, GLsizei length) +{ +   struct gl_shader_program *shProg; +   GET_CURRENT_CONTEXT(ctx); + +   ASSERT_OUTSIDE_BEGIN_END(ctx); + +   shProg = _mesa_lookup_shader_program_err(ctx, program, "glProgramBinary"); +   if (!shProg) +      return; + +   (void) binaryFormat; +   (void) binary; +   (void) length; +   _mesa_error(ctx, GL_INVALID_OPERATION, __FUNCTION__); +} + + +void GLAPIENTRY +_mesa_ProgramParameteri(GLuint program, GLenum pname, GLint value)  {     struct gl_shader_program *shProg;     GET_CURRENT_CONTEXT(ctx); @@ -1516,6 +1586,9 @@ _mesa_ProgramParameteriARB(GLuint program, GLenum pname, GLint value)     switch (pname) {     case GL_GEOMETRY_VERTICES_OUT_ARB: +      if (!_mesa_is_desktop_gl(ctx) || !ctx->Extensions.ARB_geometry_shader4) +         break; +        if (value < 1 ||            (unsigned) value > ctx->Const.MaxGeometryOutputVertices) {           _mesa_error(ctx, GL_INVALID_VALUE, @@ -1524,8 +1597,11 @@ _mesa_ProgramParameteriARB(GLuint program, GLenum pname, GLint value)           return;        }        shProg->Geom.VerticesOut = value; -      break; +      return;     case GL_GEOMETRY_INPUT_TYPE_ARB: +      if (!_mesa_is_desktop_gl(ctx) || !ctx->Extensions.ARB_geometry_shader4) +         break; +        switch (value) {        case GL_POINTS:        case GL_LINES: @@ -1540,8 +1616,11 @@ _mesa_ProgramParameteriARB(GLuint program, GLenum pname, GLint value)                       _mesa_lookup_enum_by_nr(value));           return;        } -      break; +      return;     case GL_GEOMETRY_OUTPUT_TYPE_ARB: +      if (!_mesa_is_desktop_gl(ctx) || !ctx->Extensions.ARB_geometry_shader4) +         break; +        switch (value) {        case GL_POINTS:        case GL_LINE_STRIP: @@ -1554,12 +1633,58 @@ _mesa_ProgramParameteriARB(GLuint program, GLenum pname, GLint value)                       _mesa_lookup_enum_by_nr(value));           return;        } -      break; +      return; +   case GL_PROGRAM_BINARY_RETRIEVABLE_HINT: +      /* This enum isn't part of the OES extension for OpenGL ES 2.0, but it +       * is part of OpenGL ES 3.0.  For the ES2 case, this function shouldn't +       * even be in the dispatch table, so we shouldn't need to expclicitly +       * check here. +       * +       * On desktop, we ignore the 3.0+ requirement because it is silly. +       */ + +      /* The ARB_get_program_binary extension spec says: +       * +       *     "An INVALID_VALUE error is generated if the <value> argument to +       *     ProgramParameteri is not TRUE or FALSE." +       */ +      if (value != GL_TRUE && value != GL_FALSE) { +         _mesa_error(ctx, GL_INVALID_VALUE, +                     "glProgramParameteri(pname=%s, value=%d): " +                     "value must be 0 or 1.", +                     _mesa_lookup_enum_by_nr(pname), +                     value); +         return; +      } + +      /* No need to notify the driver.  Any changes will actually take effect +       * the next time the shader is linked. +       * +       * The ARB_get_program_binary extension spec says: +       * +       *     "To indicate that a program binary is likely to be retrieved, +       *     ProgramParameteri should be called with <pname> +       *     PROGRAM_BINARY_RETRIEVABLE_HINT and <value> TRUE. This setting +       *     will not be in effect until the next time LinkProgram or +       *     ProgramBinary has been called successfully." +       * +       * The resloution of issue 9 in the extension spec also says: +       * +       *     "The application may use the PROGRAM_BINARY_RETRIEVABLE_HINT hint +       *     to indicate to the GL implementation that this program will +       *     likely be saved with GetProgramBinary at some point. This will +       *     give the GL implementation the opportunity to track any state +       *     changes made to the program before being saved such that when it +       *     is loaded again a recompile can be avoided." +       */ +      shProg->BinaryRetreivableHint = value; +      return;     default: -      _mesa_error(ctx, GL_INVALID_ENUM, "glProgramParameteriARB(pname=%s)", -                  _mesa_lookup_enum_by_nr(pname));        break;     } + +   _mesa_error(ctx, GL_INVALID_ENUM, "glProgramParameteri(pname=%s)", +               _mesa_lookup_enum_by_nr(pname));  }  void diff --git a/mesalib/src/mesa/main/shaderapi.h b/mesalib/src/mesa/main/shaderapi.h index 8ee68d82d..d3199db96 100644 --- a/mesalib/src/mesa/main/shaderapi.h +++ b/mesalib/src/mesa/main/shaderapi.h @@ -190,8 +190,16 @@ _mesa_ShaderBinary(GLint n, const GLuint *shaders, GLenum binaryformat,                     const void* binary, GLint length);  extern void GLAPIENTRY -_mesa_ProgramParameteriARB(GLuint program, GLenum pname, -                           GLint value); +_mesa_GetProgramBinary(GLuint program, GLsizei bufSize, GLsizei *length, +                       GLenum *binaryFormat, GLvoid *binary); + +extern void GLAPIENTRY +_mesa_ProgramBinary(GLuint program, GLenum binaryFormat, +                    const GLvoid *binary, GLsizei length); + +extern void GLAPIENTRY +_mesa_ProgramParameteri(GLuint program, GLenum pname, GLint value); +  void  _mesa_use_shader_program(struct gl_context *ctx, GLenum type,  			 struct gl_shader_program *shProg); diff --git a/mesalib/src/mesa/main/texformat.c b/mesalib/src/mesa/main/texformat.c index b3ffc6c51..4fb4b70f9 100644 --- a/mesalib/src/mesa/main/texformat.c +++ b/mesalib/src/mesa/main/texformat.c @@ -75,7 +75,9 @@ _mesa_choose_tex_format(struct gl_context *ctx, GLenum target,  	    RETURN_IF_SUPPORTED(MESA_FORMAT_ARGB4444);  	 } else if (type == GL_UNSIGNED_SHORT_1_5_5_5_REV) {  	    RETURN_IF_SUPPORTED(MESA_FORMAT_ARGB1555); -	 } +         } else if (type == GL_UNSIGNED_INT_2_10_10_10_REV) { +            RETURN_IF_SUPPORTED(MESA_FORMAT_ARGB2101010); +         }  	 RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA8888);  	 RETURN_IF_SUPPORTED(MESA_FORMAT_ARGB8888);  	 break; @@ -111,6 +113,10 @@ _mesa_choose_tex_format(struct gl_context *ctx, GLenum target,        /* shallow RGB formats */        case 3:        case GL_RGB: +         if (type == GL_UNSIGNED_INT_2_10_10_10_REV) { +            RETURN_IF_SUPPORTED(MESA_FORMAT_ARGB2101010); +         } +         /* fallthrough */        case GL_RGB8:  	 RETURN_IF_SUPPORTED(MESA_FORMAT_RGB888);  	 RETURN_IF_SUPPORTED(MESA_FORMAT_XRGB8888); diff --git a/mesalib/src/mesa/main/teximage.c b/mesalib/src/mesa/main/teximage.c index 33f81a25c..7d3abb7e0 100644 --- a/mesalib/src/mesa/main/teximage.c +++ b/mesalib/src/mesa/main/teximage.c @@ -1947,8 +1947,9 @@ texture_error_check( struct gl_context *ctx,     err = _mesa_error_check_format_and_type(ctx, format, type);     if (err != GL_NO_ERROR) {        _mesa_error(ctx, err, -                  "glTexImage%dD(incompatible format 0x%x, type 0x%x)", -                  dimensions, format, type); +                  "glTexImage%dD(incompatible format = %s, type = %s)", +                  dimensions, _mesa_lookup_enum_by_nr(format), +                  _mesa_lookup_enum_by_nr(type));        return GL_TRUE;     } @@ -1960,8 +1961,9 @@ texture_error_check( struct gl_context *ctx,         (_mesa_is_depthstencil_format(internalFormat) != _mesa_is_depthstencil_format(format)) ||         (_mesa_is_dudv_format(internalFormat) != _mesa_is_dudv_format(format))) {        _mesa_error(ctx, GL_INVALID_OPERATION, -                  "glTexImage%dD(incompatible internalFormat 0x%x, format 0x%x)", -                  dimensions, internalFormat, format); +                  "glTexImage%dD(incompatible internalFormat = %s, format = %s)", +                  dimensions, _mesa_lookup_enum_by_nr(internalFormat), +                  _mesa_lookup_enum_by_nr(format));        return GL_TRUE;     } @@ -2263,8 +2265,9 @@ texsubimage_error_check(struct gl_context *ctx, GLuint dimensions,     err = _mesa_error_check_format_and_type(ctx, format, type);     if (err != GL_NO_ERROR) {        _mesa_error(ctx, err, -                  "glTexSubImage%dD(incompatible format 0x%x, type 0x%x)", -                  dimensions, format, type); +                  "glTexSubImage%dD(incompatible format = %s, type = %s)", +                  dimensions, _mesa_lookup_enum_by_nr(format), +                  _mesa_lookup_enum_by_nr(type));        return GL_TRUE;     } diff --git a/mesalib/src/mesa/main/texstore.c b/mesalib/src/mesa/main/texstore.c index 751150937..a5c7712e0 100644 --- a/mesalib/src/mesa/main/texstore.c +++ b/mesalib/src/mesa/main/texstore.c @@ -1714,18 +1714,20 @@ _mesa_texstore_argb2101010(TEXSTORE_PARAMS)                                                   srcPacking,                                                   ctx->_ImageTransferState);        const GLfloat *src = tempImage; +      const GLushort aMask = (srcFormat == GL_RGB) ? 0xffff : 0;        GLint img, row, col;        if (!tempImage)           return GL_FALSE;        for (img = 0; img < srcDepth; img++) {           GLubyte *dstRow = dstSlices[img]; -         if (baseInternalFormat == GL_RGBA) { +         if (baseInternalFormat == GL_RGBA || baseInternalFormat == GL_RGB) {              for (row = 0; row < srcHeight; row++) {                 GLuint *dstUI = (GLuint *) dstRow;                 for (col = 0; col < srcWidth; col++) {                    GLushort a,r,g,b;                    UNCLAMPED_FLOAT_TO_USHORT(a, src[ACOMP]); +                  a = a | aMask;                    UNCLAMPED_FLOAT_TO_USHORT(r, src[RCOMP]);                    UNCLAMPED_FLOAT_TO_USHORT(g, src[GCOMP]);                    UNCLAMPED_FLOAT_TO_USHORT(b, src[BCOMP]); @@ -1734,20 +1736,6 @@ _mesa_texstore_argb2101010(TEXSTORE_PARAMS)                 }                 dstRow += dstRowStride;              } -         } else if (baseInternalFormat == GL_RGB) { -            for (row = 0; row < srcHeight; row++) { -               GLuint *dstUI = (GLuint *) dstRow; -               for (col = 0; col < srcWidth; col++) { -                  GLushort r,g,b; - -                  UNCLAMPED_FLOAT_TO_USHORT(r, src[RCOMP]); -                  UNCLAMPED_FLOAT_TO_USHORT(g, src[GCOMP]); -                  UNCLAMPED_FLOAT_TO_USHORT(b, src[BCOMP]); -                  dstUI[col] = PACK_COLOR_2101010_US(0xffff, r, g, b); -                  src += 4; -               } -               dstRow += dstRowStride; -            }           } else {              ASSERT(0);           } diff --git a/mesalib/src/mesa/main/uniform_query.cpp b/mesalib/src/mesa/main/uniform_query.cpp index afe9a08c1..efff8f381 100644 --- a/mesalib/src/mesa/main/uniform_query.cpp +++ b/mesalib/src/mesa/main/uniform_query.cpp @@ -864,7 +864,8 @@ _mesa_uniform_matrix(struct gl_context *ctx, struct gl_shader_program *shProg,     /* GL_INVALID_VALUE is generated if `transpose' is not GL_FALSE.      * http://www.khronos.org/opengles/sdk/docs/man/xhtml/glUniform.xml */ -   if (ctx->API == API_OPENGLES || ctx->API == API_OPENGLES2) { +   if (ctx->API == API_OPENGLES +       || (ctx->API == API_OPENGLES2 && ctx->Version < 30)) {        if (transpose) {  	 _mesa_error(ctx, GL_INVALID_VALUE,  		     "glUniformMatrix(matrix transpose is not GL_FALSE)"); diff --git a/mesalib/src/mesa/main/varray.c b/mesalib/src/mesa/main/varray.c index 5e4d6c3e6..e453b3b0e 100644 --- a/mesalib/src/mesa/main/varray.c +++ b/mesalib/src/mesa/main/varray.c @@ -1113,9 +1113,10 @@ _mesa_PrimitiveRestartIndex(GLuint index)     ASSERT_OUTSIDE_BEGIN_END(ctx); -   if (ctx->Array.RestartIndex != index) { +   ctx->Array.RestartIndex = index; +   if (ctx->Array.PrimitiveRestart && ctx->Array._RestartIndex != index) {        FLUSH_VERTICES(ctx, _NEW_TRANSFORM); -      ctx->Array.RestartIndex = index; +      ctx->Array._RestartIndex = index;     }  } diff --git a/mesalib/src/mesa/program/ir_to_mesa.cpp b/mesalib/src/mesa/program/ir_to_mesa.cpp index d5b9683db..0f7439b3b 100644 --- a/mesalib/src/mesa/program/ir_to_mesa.cpp +++ b/mesalib/src/mesa/program/ir_to_mesa.cpp @@ -3061,7 +3061,7 @@ _mesa_glsl_compile_shader(struct gl_context *ctx, struct gl_shader *shader)     }     state->error = glcpp_preprocess(state, &source, &state->info_log, -			     &ctx->Extensions, ctx->API); +			     &ctx->Extensions, ctx);     if (ctx->Shader.Flags & GLSL_DUMP) {        printf("GLSL source for %s shader %d:\n", diff --git a/mesalib/src/mesa/state_tracker/st_cb_queryobj.c b/mesalib/src/mesa/state_tracker/st_cb_queryobj.c index 98b61f576..6a35c1b69 100644 --- a/mesalib/src/mesa/state_tracker/st_cb_queryobj.c +++ b/mesalib/src/mesa/state_tracker/st_cb_queryobj.c @@ -94,6 +94,7 @@ st_BeginQuery(struct gl_context *ctx, struct gl_query_object *q)     /* convert GL query type to Gallium query type */     switch (q->Target) {     case GL_ANY_SAMPLES_PASSED: +   case GL_ANY_SAMPLES_PASSED_CONSERVATIVE:        /* fall-through */     case GL_SAMPLES_PASSED_ARB:        type = PIPE_QUERY_OCCLUSION_COUNTER; diff --git a/mesalib/src/mesa/state_tracker/st_draw.c b/mesalib/src/mesa/state_tracker/st_draw.c index 4800e1c87..7de2bb9b8 100644 --- a/mesalib/src/mesa/state_tracker/st_draw.c +++ b/mesalib/src/mesa/state_tracker/st_draw.c @@ -230,8 +230,8 @@ st_draw_vbo(struct gl_context *ctx,        /* The VBO module handles restart for the non-indexed GLDrawArrays         * so we only set these fields for indexed drawing:         */ -      info.primitive_restart = ctx->Array.PrimitiveRestart; -      info.restart_index = ctx->Array.RestartIndex; +      info.primitive_restart = ctx->Array._PrimitiveRestart; +      info.restart_index = ctx->Array._RestartIndex;     }     else {        /* Transform feedback drawing is always non-indexed. */ diff --git a/mesalib/src/mesa/state_tracker/st_extensions.c b/mesalib/src/mesa/state_tracker/st_extensions.c index e7cf4f3bb..17fe16ee3 100644 --- a/mesalib/src/mesa/state_tracker/st_extensions.c +++ b/mesalib/src/mesa/state_tracker/st_extensions.c @@ -265,8 +265,11 @@ void st_init_limits(struct st_context *st)     c->GLSLSkipStrictMaxVaryingLimitCheck =        screen->get_param(screen, PIPE_CAP_TGSI_CAN_COMPACT_VARYINGS); -   if (can_ubo) +   if (can_ubo) {        st->ctx->Extensions.ARB_uniform_buffer_object = GL_TRUE; +      st->ctx->Const.UniformBufferOffsetAlignment = +         screen->get_param(screen, PIPE_CAP_CONSTANT_BUFFER_OFFSET_ALIGNMENT); +   }  } diff --git a/mesalib/src/mesa/vbo/vbo_exec_array.c b/mesalib/src/mesa/vbo/vbo_exec_array.c index 4b2c5298d..7e61f7b31 100644 --- a/mesalib/src/mesa/vbo/vbo_exec_array.c +++ b/mesalib/src/mesa/vbo/vbo_exec_array.c @@ -90,8 +90,8 @@ vbo_get_minmax_index(struct gl_context *ctx,  		     GLuint *min_index, GLuint *max_index,  		     const GLuint count)  { -   const GLboolean restart = ctx->Array.PrimitiveRestart; -   const GLuint restartIndex = ctx->Array.RestartIndex; +   const GLboolean restart = ctx->Array._PrimitiveRestart; +   const GLuint restartIndex = ctx->Array._RestartIndex;     const int index_size = vbo_sizeof_ib_type(ib->type);     const char *indices;     GLuint i; @@ -536,7 +536,7 @@ vbo_handle_primitive_restart(struct gl_context *ctx,     if ((ib != NULL) &&         ctx->Const.PrimitiveRestartInSoftware && -       ctx->Array.PrimitiveRestart) { +       ctx->Array._PrimitiveRestart) {        /* Handle primitive restart in software */        vbo_sw_primitive_restart(ctx, prim, nr_prims, ib);     } else { @@ -572,10 +572,10 @@ vbo_draw_arrays(struct gl_context *ctx, GLenum mode, GLint start,     prim[0].base_instance = baseInstance;     /* Implement the primitive restart index */ -   if (ctx->Array.PrimitiveRestart && ctx->Array.RestartIndex < count) { +   if (ctx->Array._PrimitiveRestart && ctx->Array._RestartIndex < count) {        GLuint primCount = 0; -      if (ctx->Array.RestartIndex == start) { +      if (ctx->Array._RestartIndex == start) {           /* special case: RestartIndex at beginning */           if (count > 1) {              prim[0].start = start + 1; @@ -583,7 +583,7 @@ vbo_draw_arrays(struct gl_context *ctx, GLenum mode, GLint start,              primCount = 1;           }        } -      else if (ctx->Array.RestartIndex == start + count - 1) { +      else if (ctx->Array._RestartIndex == start + count - 1) {           /* special case: RestartIndex at end */           if (count > 1) {              prim[0].start = start; @@ -594,10 +594,10 @@ vbo_draw_arrays(struct gl_context *ctx, GLenum mode, GLint start,        else {           /* general case: RestartIndex in middle, split into two prims */           prim[0].start = start; -         prim[0].count = ctx->Array.RestartIndex - start; +         prim[0].count = ctx->Array._RestartIndex - start;           prim[1] = prim[0]; -         prim[1].start = ctx->Array.RestartIndex + 1; +         prim[1].start = ctx->Array._RestartIndex + 1;           prim[1].count = count - prim[1].start;           primCount = 2; diff --git a/mesalib/src/mesa/vbo/vbo_primitive_restart.c b/mesalib/src/mesa/vbo/vbo_primitive_restart.c index 6f9d61c9b..a6a0149ca 100644 --- a/mesalib/src/mesa/vbo/vbo_primitive_restart.c +++ b/mesalib/src/mesa/vbo/vbo_primitive_restart.c @@ -171,7 +171,7 @@ vbo_sw_primitive_restart(struct gl_context *ctx,     GLuint sub_prim_num;     GLuint end_index;     GLuint sub_end_index; -   GLuint restart_index = ctx->Array.RestartIndex; +   GLuint restart_index = ctx->Array._RestartIndex;     struct _mesa_prim temp_prim;     struct vbo_context *vbo = vbo_context(ctx);     vbo_draw_func draw_prims_func = vbo->draw_prims; | 
