aboutsummaryrefslogtreecommitdiff
path: root/mesalib
diff options
context:
space:
mode:
Diffstat (limited to 'mesalib')
-rw-r--r--mesalib/configure.ac8
-rw-r--r--mesalib/docs/GL3.txt8
-rw-r--r--mesalib/src/gallium/auxiliary/Makefile.am4
-rw-r--r--mesalib/src/glsl/Makefile.am7
-rwxr-xr-xmesalib/src/glsl/glcpp/.gitignore1
-rw-r--r--mesalib/src/glsl/glcpp/glcpp-lex.l2
-rw-r--r--mesalib/src/glsl/glcpp/glcpp-parse.y28
-rw-r--r--mesalib/src/glsl/glcpp/glcpp.c59
-rw-r--r--mesalib/src/glsl/glcpp/glcpp.h5
-rw-r--r--mesalib/src/glsl/glcpp/pp.c123
-rw-r--r--mesalib/src/glsl/glsl_parser_extras.h2
-rw-r--r--mesalib/src/glsl/main.cpp2
-rw-r--r--mesalib/src/glsl/test_optpass.cpp2
-rw-r--r--mesalib/src/mapi/glapi/Makefile.am9
-rw-r--r--mesalib/src/mapi/glapi/gen/ARB_get_program_binary.xml11
-rw-r--r--mesalib/src/mapi/glapi/gen/Makefile.am16
-rwxr-xr-xmesalib/src/mapi/glapi/gen/gl_API.xml10
-rw-r--r--mesalib/src/mesa/Makefile.am13
-rw-r--r--mesalib/src/mesa/drivers/SConscript3
-rw-r--r--mesalib/src/mesa/drivers/dri/Android.mk4
-rw-r--r--mesalib/src/mesa/drivers/dri/common/Android.mk48
-rw-r--r--mesalib/src/mesa/drivers/dri/common/Makefile.am2
-rw-r--r--mesalib/src/mesa/drivers/dri/common/drirc3
-rw-r--r--mesalib/src/mesa/drivers/dri/common/xmlpool/.gitignore3
-rw-r--r--mesalib/src/mesa/drivers/dri/common/xmlpool/Makefile.am (renamed from mesalib/src/mesa/drivers/dri/common/xmlpool/Makefile)48
-rw-r--r--mesalib/src/mesa/drivers/dri/common/xmlpool/SConscript14
-rw-r--r--mesalib/src/mesa/drivers/dri/common/xmlpool/de.po4
-rw-r--r--mesalib/src/mesa/drivers/dri/common/xmlpool/gen_xmlpool.py19
-rw-r--r--mesalib/src/mesa/drivers/dri/common/xmlpool/options.h638
-rw-r--r--mesalib/src/mesa/drivers/dri/common/xmlpool/t_options.h15
-rw-r--r--mesalib/src/mesa/drivers/dri/swrast/Makefile.am3
-rw-r--r--mesalib/src/mesa/main/api_arrayelt.c2
-rw-r--r--mesalib/src/mesa/main/attrib.c3
-rw-r--r--mesalib/src/mesa/main/enable.c33
-rw-r--r--mesalib/src/mesa/main/extensions.c2
-rw-r--r--mesalib/src/mesa/main/format_unpack.c18
-rw-r--r--mesalib/src/mesa/main/get_hash_params.py14
-rw-r--r--mesalib/src/mesa/main/glformats.c83
-rw-r--r--mesalib/src/mesa/main/glformats.h9
-rw-r--r--mesalib/src/mesa/main/mtypes.h24
-rw-r--r--mesalib/src/mesa/main/queryobj.c12
-rw-r--r--mesalib/src/mesa/main/shaderapi.c137
-rw-r--r--mesalib/src/mesa/main/shaderapi.h12
-rw-r--r--mesalib/src/mesa/main/texformat.c8
-rw-r--r--mesalib/src/mesa/main/teximage.c15
-rw-r--r--mesalib/src/mesa/main/texstore.c18
-rw-r--r--mesalib/src/mesa/main/uniform_query.cpp3
-rw-r--r--mesalib/src/mesa/main/varray.c5
-rw-r--r--mesalib/src/mesa/program/ir_to_mesa.cpp2
-rw-r--r--mesalib/src/mesa/state_tracker/st_cb_queryobj.c1
-rw-r--r--mesalib/src/mesa/state_tracker/st_draw.c4
-rw-r--r--mesalib/src/mesa/state_tracker/st_extensions.c5
-rw-r--r--mesalib/src/mesa/vbo/vbo_exec_array.c16
-rw-r--r--mesalib/src/mesa/vbo/vbo_primitive_restart.c2
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 fc93edb36..9f7e0cc3e 100755
--- 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 bef9fd08e..13a32fd7d 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"
@@ -102,6 +104,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[])
{
@@ -110,16 +143,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 01cf6a8d9..400cf9a2b 100644
--- a/mesalib/src/glsl/glsl_parser_extras.h
+++ b/mesalib/src/glsl/glsl_parser_extras.h
@@ -358,7 +358,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 d21b8cd2d..430a56512 100644
--- a/mesalib/src/glsl/main.cpp
+++ b/mesalib/src/glsl/main.cpp
@@ -157,7 +157,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 4aa8b15e3..adbeea613 100755
--- 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 cfb20cd4c..054dfbad7 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;