xmlconfig: move into src/util
authorNicolai Hähnle <nicolai.haehnle@amd.com>
Fri, 30 Jun 2017 09:57:06 +0000 (11:57 +0200)
committerNicolai Hähnle <nicolai.haehnle@amd.com>
Mon, 31 Jul 2017 13:38:41 +0000 (15:38 +0200)
v2: attempt to fix Android build (Emil)

v3: add missing include path

Reviewed-by: Marek Olšák <marek.olsak@amd.com> (v1)
69 files changed:
configure.ac
src/gallium/state_trackers/dri/Makefile.am
src/gallium/state_trackers/dri/dri_screen.c
src/gallium/state_trackers/dri/dri_screen.h
src/gallium/targets/d3dadapter9/Makefile.am
src/gallium/targets/d3dadapter9/drm.c
src/loader/Makefile.am
src/loader/loader.c
src/mesa/drivers/SConscript
src/mesa/drivers/dri/Makefile.am
src/mesa/drivers/dri/common/Android.mk
src/mesa/drivers/dri/common/Makefile.am
src/mesa/drivers/dri/common/Makefile.sources
src/mesa/drivers/dri/common/SConscript
src/mesa/drivers/dri/common/dri_util.c
src/mesa/drivers/dri/common/dri_util.h
src/mesa/drivers/dri/common/drirc [deleted file]
src/mesa/drivers/dri/common/xmlconfig.c [deleted file]
src/mesa/drivers/dri/common/xmlconfig.h [deleted file]
src/mesa/drivers/dri/common/xmlpool.h [deleted file]
src/mesa/drivers/dri/common/xmlpool/.gitignore [deleted file]
src/mesa/drivers/dri/common/xmlpool/Makefile.am [deleted file]
src/mesa/drivers/dri/common/xmlpool/SConscript [deleted file]
src/mesa/drivers/dri/common/xmlpool/ca.po [deleted file]
src/mesa/drivers/dri/common/xmlpool/de.po [deleted file]
src/mesa/drivers/dri/common/xmlpool/es.po [deleted file]
src/mesa/drivers/dri/common/xmlpool/fr.po [deleted file]
src/mesa/drivers/dri/common/xmlpool/gen_xmlpool.py [deleted file]
src/mesa/drivers/dri/common/xmlpool/nl.po [deleted file]
src/mesa/drivers/dri/common/xmlpool/sv.po [deleted file]
src/mesa/drivers/dri/common/xmlpool/t_options.h [deleted file]
src/mesa/drivers/dri/i915/Makefile.am
src/mesa/drivers/dri/i915/intel_screen.c
src/mesa/drivers/dri/i915/intel_screen.h
src/mesa/drivers/dri/i965/Makefile.am
src/mesa/drivers/dri/i965/intel_screen.c
src/mesa/drivers/dri/i965/intel_screen.h
src/mesa/drivers/dri/r200/Makefile.am
src/mesa/drivers/dri/r200/r200_context.c
src/mesa/drivers/dri/r200/r200_state_init.c
src/mesa/drivers/dri/r200/r200_tex.c
src/mesa/drivers/dri/radeon/Makefile.am
src/mesa/drivers/dri/radeon/radeon_common_context.c
src/mesa/drivers/dri/radeon/radeon_context.c
src/mesa/drivers/dri/radeon/radeon_screen.c
src/mesa/drivers/dri/radeon/radeon_screen.h
src/mesa/drivers/dri/radeon/radeon_state_init.c
src/mesa/drivers/dri/radeon/radeon_tex.c
src/mesa/drivers/dri/radeon/radeon_texture.c
src/mesa/drivers/dri/swrast/Makefile.am
src/util/Android.mk
src/util/Makefile.am
src/util/Makefile.sources
src/util/SConscript
src/util/drirc [new file with mode: 0644]
src/util/xmlconfig.c [new file with mode: 0644]
src/util/xmlconfig.h [new file with mode: 0644]
src/util/xmlpool.h [new file with mode: 0644]
src/util/xmlpool/.gitignore [new file with mode: 0644]
src/util/xmlpool/Makefile.am [new file with mode: 0644]
src/util/xmlpool/SConscript [new file with mode: 0644]
src/util/xmlpool/ca.po [new file with mode: 0644]
src/util/xmlpool/de.po [new file with mode: 0644]
src/util/xmlpool/es.po [new file with mode: 0644]
src/util/xmlpool/fr.po [new file with mode: 0644]
src/util/xmlpool/gen_xmlpool.py [new file with mode: 0644]
src/util/xmlpool/nl.po [new file with mode: 0644]
src/util/xmlpool/sv.po [new file with mode: 0644]
src/util/xmlpool/t_options.h [new file with mode: 0644]

index 2736fbf201bdb56db4cecde6e7fb5c3578098cbe..6302aa2b0c86e050c3d49b9b8ec6291a94188f40 100644 (file)
@@ -2898,7 +2898,6 @@ AC_CONFIG_FILES([Makefile
                  src/mesa/gl.pc
                  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
@@ -2912,6 +2911,7 @@ AC_CONFIG_FILES([Makefile
                  src/mesa/main/tests/Makefile
                  src/util/Makefile
                  src/util/tests/hash_table/Makefile
+                 src/util/xmlpool/Makefile
                  src/vulkan/Makefile])
 
 AC_OUTPUT
index 61a1cabeb8141908f4519c281094aa14b3e3c27e..8b427f98acaf8423101eaa85e0ce72a1a5e496c2 100644 (file)
@@ -28,7 +28,7 @@ AM_CPPFLAGS = \
        -I$(top_srcdir)/include \
        -I$(top_srcdir)/src/mapi \
        -I$(top_srcdir)/src/mesa \
-       -I$(top_builddir)/src/mesa/drivers/dri/common \
+       -I$(top_builddir)/src/util \
        -I$(top_srcdir)/src/mesa/drivers/dri/common \
        $(GALLIUM_CFLAGS) \
        $(LIBDRM_CFLAGS) \
index 890a8bff4c6f9aabea6a671ededc408f42cb389c..43e67b6555f58db866f4c757a3748193fc1b48b4 100644 (file)
@@ -30,7 +30,7 @@
  */
 
 #include "utils.h"
-#include "xmlpool.h"
+#include "util/xmlpool.h"
 
 #include "dri_screen.h"
 #include "dri_context.h"
index 550bc510cecfefa481c3612bb0b142cf30f38ab1..383e762393e4c804b4440498b8eadc3ba9bc761e 100644 (file)
@@ -33,7 +33,7 @@
 #define DRI_SCREEN_H
 
 #include "dri_util.h"
-#include "xmlconfig.h"
+#include "util/xmlconfig.h"
 
 #include "pipe/p_compiler.h"
 #include "pipe/p_context.h"
index 8f2a6f5601eaea7da8521209dfe96ac84e680bed..824e8d6b932e5c8d18043541a494708028abe4a3 100644 (file)
@@ -27,7 +27,6 @@ AM_CFLAGS = \
        -I$(top_srcdir)/src/loader \
        -I$(top_srcdir)/src/mapi/ \
        -I$(top_srcdir)/src/mesa/ \
-       -I$(top_builddir)/src/mesa/drivers/dri/common/ \
        -I$(top_srcdir)/src/mesa/drivers/dri/common/ \
        -I$(top_srcdir)/src/gallium/winsys \
        -I$(top_srcdir)/src/gallium/state_trackers/nine \
index 27c3fb167513c7d0a9595bacdb5f3a0a4704bd74..c0ed97a6fb5aa023471f3fe53915cfb845675633 100644 (file)
@@ -37,8 +37,8 @@
 #include "d3dadapter/d3dadapter9.h"
 #include "d3dadapter/drm.h"
 
-#include "xmlconfig.h"
-#include "xmlpool.h"
+#include "util/xmlconfig.h"
+#include "util/xmlpool.h"
 
 #include <drm.h>
 #include <sys/ioctl.h>
index 340b335ca9b948918fe86b56e5bc36b94e331003..8b197f2995c95bab147112963034939b45505c27 100644 (file)
@@ -39,14 +39,14 @@ libloader_la_LIBADD =
 
 if HAVE_DRICOMMON
 libloader_la_CPPFLAGS += \
-       -I$(top_builddir)/src/mesa/drivers/dri/common/ \
+       -I$(top_builddir)/src/util/ \
        -I$(top_srcdir)/src/mesa/drivers/dri/common/ \
        -I$(top_srcdir)/src/mesa/ \
        -I$(top_srcdir)/src/mapi/ \
        -DUSE_DRICONF
 
 libloader_la_LIBADD += \
-       $(top_builddir)/src/mesa/drivers/dri/common/libxmlconfig.la
+       $(top_builddir)/src/util/libxmlconfig.la
 
 endif
 
index c3fc961be598d4d74dfeebcd93be8878f453fb09..182ba90a0da8c152b1791f9642384654bca66121 100644 (file)
@@ -46,8 +46,8 @@
 #ifdef HAVE_LIBDRM
 #include <xf86drm.h>
 #ifdef USE_DRICONF
-#include "xmlconfig.h"
-#include "xmlpool.h"
+#include "util/xmlconfig.h"
+#include "util/xmlpool.h"
 #endif
 #endif
 
index 476425be27c0b60eeb9668cda63290925619f288..f5499103364524768abd8a71903c5c516cfa22c3 100644 (file)
@@ -7,6 +7,5 @@ if env['x11']:
 
 if env['dri']:
     SConscript([
-        'dri/common/xmlpool/SConscript',
         'dri/common/SConscript',
     ])
index 381c6a20b72c412b65c8b3bb7818a77a6a568c54..95c637d0cddb19c3d95005c82fe6c4b3d0ea5470 100644 (file)
@@ -65,7 +65,7 @@ mesa_dri_drivers_la_LIBADD = \
         ../../libmesa.la \
         common/libmegadriver_stub.la \
         common/libdricommon.la \
-        common/libxmlconfig.la \
+        $(top_builddir)/src/util/libxmlconfig.la \
         $(top_builddir)/src/mapi/shared-glapi/libglapi.la \
         $(MEGADRIVERS_DEPS) \
         $(DRI_LIB_DEPS) \
index 8a21e63032516320dc460b84f9725dd564749e79..573189d88f644e08be35516d4edb488f9b8661e3 100644 (file)
@@ -44,53 +44,7 @@ LOCAL_EXPORT_C_INCLUDE_DIRS := \
     $(intermediates)
 
 LOCAL_SRC_FILES := \
-       $(DRI_COMMON_FILES) \
-       $(XMLCONFIG_FILES)
-
-MESA_DRI_OPTIONS_H := $(intermediates)/xmlpool/options.h
-LOCAL_GENERATED_SOURCES := $(MESA_DRI_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
-
-PRIVATE_SCRIPT := $(LOCAL_PATH)/xmlpool/gen_xmlpool.py
-PRIVATE_LOCALEDIR := $(intermediates)/xmlpool
-PRIVATE_TEMPLATE_HEADER := $(LOCAL_PATH)/xmlpool/t_options.h
-PRIVATE_MO_FILES := $(MESA_DRI_OPTIONS_LANGS:%=$(intermediates)/xmlpool/%/LC_MESSAGES/options.mo)
-
-LOCAL_GENERATED_SOURCES += $(PRIVATE_MO_FILES)
-
-$(PRIVATE_MO_FILES): $(intermediates)/xmlpool/%/LC_MESSAGES/options.mo: $(intermediates)/xmlpool/%.po
-       mkdir -p $(dir $@)
-       msgfmt -o $@ $<
-
-$(LOCAL_GENERATED_SOURCES): PRIVATE_PYTHON := $(MESA_PYTHON2)
-$(LOCAL_GENERATED_SOURCES): PRIVATE_CUSTOM_TOOL = $(PRIVATE_PYTHON) $^ $(PRIVATE_TEMPLATE_HEADER) \
-               $(PRIVATE_LOCALEDIR) $(MESA_DRI_OPTIONS_LANGS) > $@
-
-$(MESA_DRI_OPTIONS_H): $(PRIVATE_SCRIPT) $(PRIVATE_TEMPLATE_HEADER) $(PRIVATE_MO_FILES)
-       $(transform-generated-source)
+       $(DRI_COMMON_FILES)
 
 include $(MESA_COMMON_MK)
 include $(BUILD_STATIC_LIBRARY)
index c85c470a2fb849d96e6d452da28af7cf607009b8..f26cc0693813d29ff433b032b47a69c7d6b53696 100644 (file)
 # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
 # IN THE SOFTWARE.
 
-SUBDIRS = xmlpool
-
 include Makefile.sources
 
-EXTRA_DIST = drirc xmlpool.h SConscript
+EXTRA_DIST = SConscript
 
 AM_CFLAGS = \
        -I$(top_srcdir)/include \
@@ -32,22 +30,15 @@ AM_CFLAGS = \
        -I$(top_srcdir)/src/mesa/ \
        -I$(top_srcdir)/src/gallium/include \
        -I$(top_srcdir)/src/gallium/auxiliary \
+       -I$(top_builddir)/src/util/ \
        $(LIBDRM_CFLAGS) \
        $(DEFINES) \
-       -DSYSCONFDIR=\"$(sysconfdir)\" \
        $(VISIBILITY_CFLAGS)
 
 noinst_LTLIBRARIES = \
        libdricommon.la \
-       libxmlconfig.la \
        libmegadriver_stub.la
 
 libdricommon_la_SOURCES = $(DRI_COMMON_FILES)
 
-libxmlconfig_la_SOURCES = $(XMLCONFIG_FILES)
-libxmlconfig_la_CFLAGS = $(AM_CFLAGS) $(EXPAT_CFLAGS)
-libxmlconfig_la_LIBADD = $(EXPAT_LIBS) -lm
-
 libmegadriver_stub_la_SOURCES = $(megadriver_stub_FILES)
-
-sysconf_DATA = drirc
index 9d3cdd38ff07ecdcc51dfbb60c78b343ddddf31f..d592e99b879ab4c941512329b088e5a5511e129d 100644 (file)
@@ -4,10 +4,6 @@ DRI_COMMON_FILES := \
        dri_util.c \
        dri_util.h
 
-XMLCONFIG_FILES := \
-       xmlconfig.c \
-       xmlconfig.h
-
 # Paths are relative to MESA_TOP.
 mesa_dri_common_INCLUDES := \
        include \
@@ -15,7 +11,8 @@ mesa_dri_common_INCLUDES := \
        src/egl/main \
        src/mapi \
        src/mesa \
-       src/mesa/drivers/dri/common
+       src/mesa/drivers/dri/common \
+       src/util
 
 megadriver_stub_FILES := \
        megadriver_stub.c
index 52d201f891324c13d32fc07eda63222b40d21664..06afecede34cb811ebc8f291f5b3bdb7a61a2c81 100644 (file)
@@ -7,7 +7,6 @@ drienv = env.Clone()
 
 drienv.Replace(CPPPATH = [
     '#src/mesa/drivers/dri/common',
-    xmlpool_options.dir.dir, # Dir to generated xmlpool/options.h
     '#include',
     '#include/GL/internal',
     '#src',
@@ -26,13 +25,10 @@ drienv.Replace(CPPPATH = [
     '#src/mesa/swrast_setup',
     '#src/egl/main',
     '#src/egl/drivers/dri',
+    '#src/util',
 ])
 
-drienv.AppendUnique(LIBS = [
-    'expat',
-])
-
-sources = drienv.ParseSourceList('Makefile.sources', ['DRI_COMMON_FILES', 'XMLCONFIG_FILES' ])
+sources = drienv.ParseSourceList('Makefile.sources', ['DRI_COMMON_FILES'])
 
 dri_common = drienv.ConvenienceLibrary(
        target = 'dri_common',
index bfae0209d1862d9d54bf8f3f836f0ff726cc6067..39ecaf0658a4e8a0a705eca78629b7ec81b20e48 100644 (file)
@@ -42,7 +42,7 @@
 #include <stdbool.h>
 #include "dri_util.h"
 #include "utils.h"
-#include "xmlpool.h"
+#include "util/xmlpool.h"
 #include "main/mtypes.h"
 #include "main/framebuffer.h"
 #include "main/version.h"
index 3e1ce624c7b21402a950243b60a7141608bce46a..25a3ae47a2310c3bf9eb224a64fd1e8541bff466 100644 (file)
@@ -56,7 +56,7 @@
 #include <GL/gl.h>
 #include <GL/internal/dri_interface.h>
 #include "main/mtypes.h"
-#include "xmlconfig.h"
+#include "util/xmlconfig.h"
 #include <stdbool.h>
 
 /**
diff --git a/src/mesa/drivers/dri/common/drirc b/src/mesa/drivers/dri/common/drirc
deleted file mode 100644 (file)
index 30ac9c8..0000000
+++ /dev/null
@@ -1,220 +0,0 @@
-<!--
-
-============================================
-Application bugs worked around in this file:
-============================================
-
-* Unigine Heaven 3.0 and older contain too many bugs and can't be supported
-  by drivers that want to be compliant.
-
-* Various Unigine products don't use the #version and #extension GLSL
-  directives, meaning they only get GLSL 1.10 and no extensions for their
-  shaders.
-  Enabling all extensions for Unigine fixes most issues, but the GLSL version
-  is still 1.10.
-
-* If ARB_sample_shading is supported, Unigine Heaven 4.0 and Valley 1.0 uses
-  an #extension directive in the middle of its shaders, which is illegal
-  in GLSL.
-
-* Dying Light and Dead Island Definitive Edition redeclare vertex shader
-  built-ins (specifically gl_VertexID), which causes the vertex shaders to fail
-  to compile.
-
-TODO: document the other workarounds.
-
--->
-
-<driconf>
-    <!-- Please always enable app-specific workarounds for all drivers and
-         screens. -->
-    <device>
-        <application name="Unigine Sanctuary" executable="Sanctuary">
-            <option name="force_glsl_extensions_warn" value="true" />
-            <option name="disable_blend_func_extended" value="true" />
-        </application>
-
-        <application name="Unigine Tropics" executable="Tropics">
-            <option name="force_glsl_extensions_warn" value="true" />
-            <option name="disable_blend_func_extended" value="true" />
-        </application>
-
-        <application name="Unigine Heaven (32-bit)" executable="heaven_x86">
-            <option name="allow_glsl_extension_directive_midshader" value="true" />
-            <!-- remove dual_color_blend_by_location if 4.1 ever comes out -->
-            <option name="dual_color_blend_by_location" value="true" />
-        </application>
-
-        <application name="Unigine Heaven (64-bit)" executable="heaven_x64">
-            <option name="allow_glsl_extension_directive_midshader" value="true" />
-            <!-- remove dual_color_blend_by_location if 4.1 ever comes out -->
-            <option name="dual_color_blend_by_location" value="true" />
-        </application>
-
-        <application name="Unigine Valley (32-bit)" executable="valley_x86">
-            <option name="allow_glsl_extension_directive_midshader" value="true" />
-            <!-- remove dual_color_blend_by_location if 1.1 ever comes out -->
-            <option name="dual_color_blend_by_location" value="true" />
-        </application>
-
-        <application name="Unigine Valley (64-bit)" executable="valley_x64">
-            <option name="allow_glsl_extension_directive_midshader" value="true" />
-            <!-- remove dual_color_blend_by_location if 1.1 ever comes out -->
-            <option name="dual_color_blend_by_location" value="true" />
-        </application>
-
-        <application name="Unigine OilRush (32-bit)" executable="OilRush_x86">
-            <option name="disable_blend_func_extended" value="true" />
-            <option name="allow_glsl_extension_directive_midshader" value="true" />
-        </application>
-
-        <application name="Unigine OilRush (64-bit)" executable="OilRush_x64">
-            <option name="disable_blend_func_extended" value="true" />
-            <option name="allow_glsl_extension_directive_midshader" value="true" />
-        </application>
-
-        <application name="Savage 2" executable="savage2.bin">
-            <option name="disable_glsl_line_continuations" value="true" />
-        </application>
-
-        <application name="Topogun (32-bit)" executable="topogun32">
-            <option name="always_have_depth_buffer" value="true" />
-        </application>
-
-        <application name="Topogun (64-bit)" executable="topogun64">
-            <option name="always_have_depth_buffer" value="true" />
-        </application>
-
-        <application name="Dead Island (incl. Definitive Edition)" executable="DeadIslandGame">
-            <option name="allow_glsl_extension_directive_midshader" value="true" />
-
-            <!-- For the Definitive Edition which shares the same executable name -->
-            <option name="allow_glsl_builtin_variable_redeclaration" value="true" />
-        </application>
-
-        <application name="Dead Island Riptide Definitive Edition" executable="DeadIslandRiptideGame">
-            <option name="allow_glsl_builtin_variable_redeclaration" value="true" />
-        </application>
-
-        <application name="Dying Light" executable="DyingLightGame">
-            <option name="allow_glsl_builtin_variable_redeclaration" value="true" />
-        </application>
-
-        <application name="Second Life" executable="do-not-directly-run-secondlife-bin">
-            <option name="allow_glsl_extension_directive_midshader" value="true" />
-        </application>
-
-        <application name="Warsow (32-bit)" executable="warsow.i386">
-            <option name="allow_glsl_extension_directive_midshader" value="true" />
-        </application>
-
-        <application name="Warsow (64-bit)" executable="warsow.x86_64">
-            <option name="allow_glsl_extension_directive_midshader" value="true" />
-        </application>
-
-        <application name="Rust" executable="rust">
-            <option name="glsl_zero_init" value="true"/>
-        </application>
-
-        <application name="Divinity: Original Sin Enhanced Edition" executable="EoCApp">
-            <option name="allow_glsl_extension_directive_midshader" value="true" />
-        </application>
-
-        <application name="Worms W.M.D" executable="Worms W.M.Dx64">
-            <option name="allow_higher_compat_version" value="true" />
-        </application>
-
-        <application name="Crookz - The Big Heist" executable="Crookz">
-            <option name="allow_higher_compat_version" value="true" />
-        </application>
-
-        <application name="Tropico 5" executable="Tropico5">
-            <option name="allow_higher_compat_version" value="true" />
-        </application>
-
-        <application name="The Culling" executable="Victory">
-            <option name="force_glsl_version" value="440" />
-        </application>
-
-        <application name="Spec Ops: The Line (32-bit)" executable="specops.i386">
-            <option name="force_glsl_abs_sqrt" value="true" />
-        </application>
-
-        <application name="Spec Ops: The Line (64-bit)" executable="specops">
-            <option name="force_glsl_abs_sqrt" value="true" />
-        </application>
-
-        <application name="Kerbal Space Program (32-bit)" executable="KSP.x86">
-            <option name="glsl_zero_init" value="true"/>
-        </application>
-
-        <application name="Kerbal Space Program (64-bit)" executable="KSP.x86_64">
-            <option name="glsl_zero_init" value="true"/>
-        </application>
-
-        <application name="Rocket League" executable="RocketLeague">
-            <option name="glsl_correct_derivatives_after_discard" value="true"/>
-        </application>
-
-        <application name="The Witcher 2" executable="witcher2">
-            <option name="glsl_correct_derivatives_after_discard" value="true"/>
-        </application>
-
-        <!-- The GL thread whitelist is below, workarounds are above.
-             Keep it that way. -->
-
-        <application name="Alien Isolation" executable="AlienIsolation">
-            <option name="mesa_glthread" value="true"/>
-        </application>
-        <application name="Civilization 6" executable="Civ6">
-            <option name="mesa_glthread" value="true"/>
-        </application>
-        <application name="BioShock Infinite" executable="bioshock.i386">
-            <option name="mesa_glthread" value="true"/>
-        </application>
-        <application name="Borderlands 2" executable="Borderlands2">
-            <option name="mesa_glthread" value="true"/>
-        </application>
-        <application name="Civilization 5" executable="Civ5XP">
-            <option name="mesa_glthread" value="true"/>
-        </application>
-        <application name="The Witcher 2" executable="witcher2">
-            <option name="mesa_glthread" value="true"/>
-        </application>
-        <application name="American Truck Simulator" executable="amtrucks">
-            <option name="mesa_glthread" value="true"/>
-        </application>
-        <application name="Euro Truck Simulator 2" executable="eurotrucks2">
-            <option name="mesa_glthread" value="true"/>
-        </application>
-        <application name="Overlord" executable="overlord.i386">
-            <option name="mesa_glthread" value="true"/>
-        </application>
-        <application name="Overlord 2" executable="overlord2.i386">
-            <option name="mesa_glthread" value="true"/>
-        </application>
-        <application name="Oil Rush" executable="OilRush_x86">
-            <option name="mesa_glthread" value="true"/>
-        </application>
-        <application name="War Thunder" executable="aces">
-            <option name="mesa_glthread" value="true"/>
-        </application>
-        <application name="Saints Row 2" executable="saintsrow2.i386">
-            <option name="mesa_glthread" value="true"/>
-        </application>
-        <application name="War Thunder (Wine)" executable="aces.exe">
-            <option name="mesa_glthread" value="true"/>
-        </application>
-    </device>
-    <!-- vmwgfx doesn't like full buffer swaps and can't sync to vertical retraces.-->
-    <device driver="vmwgfx">
-        <application name="gnome-shell" executable="gnome-shell">
-            <option name="glx_disable_ext_buffer_age" value="true" />
-            <option name="glx_disable_oml_sync_control" value="true" />
-        </application>
-       <application name="Compiz" executable="Compiz">
-            <option name="glx_disable_ext_buffer_age" value="true" />
-           <option name="glx_disable_oml_sync_control" value="true" />
-        </application>
-    </device>
-</driconf>
diff --git a/src/mesa/drivers/dri/common/xmlconfig.c b/src/mesa/drivers/dri/common/xmlconfig.c
deleted file mode 100644 (file)
index d3f47ec..0000000
+++ /dev/null
@@ -1,1113 +0,0 @@
-/*
- * 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 xmlconfig.c
- * \brief Driver-independent client-side part of the XML configuration
- * \author Felix Kuehling
- */
-
-#include <stdarg.h>
-#include <stdio.h>
-#include <string.h>
-#include <assert.h>
-#include <expat.h>
-#include <fcntl.h>
-#include <math.h>
-#include <unistd.h>
-#include <errno.h>
-#include "xmlconfig.h"
-
-#undef GET_PROGRAM_NAME
-
-#if (defined(__GNU_LIBRARY__) || defined(__GLIBC__)) && !defined(__UCLIBC__)
-#    if !defined(__GLIBC__) || (__GLIBC__ < 2)
-/* These aren't declared in any libc5 header */
-extern char *program_invocation_name, *program_invocation_short_name;
-#    endif
-#    define GET_PROGRAM_NAME() program_invocation_short_name
-#elif defined(__CYGWIN__)
-#    define GET_PROGRAM_NAME() program_invocation_short_name
-#elif defined(__FreeBSD__) && (__FreeBSD__ >= 2)
-#    include <osreldate.h>
-#    if (__FreeBSD_version >= 440000)
-#        include <stdlib.h>
-#        define GET_PROGRAM_NAME() getprogname()
-#    endif
-#elif defined(__NetBSD__) && defined(__NetBSD_Version__) && (__NetBSD_Version__ >= 106000100)
-#    include <stdlib.h>
-#    define GET_PROGRAM_NAME() getprogname()
-#elif defined(__DragonFly__)
-#    include <stdlib.h>
-#    define GET_PROGRAM_NAME() getprogname()
-#elif defined(__APPLE__)
-#    include <stdlib.h>
-#    define GET_PROGRAM_NAME() getprogname()
-#elif defined(__sun)
-/* Solaris has getexecname() which returns the full path - return just
-   the basename to match BSD getprogname() */
-#    include <stdlib.h>
-#    include <libgen.h>
-
-static const char *
-__getProgramName()
-{
-    static const char *progname;
-
-    if (progname == NULL) {
-        const char *e = getexecname();
-        if (e != NULL) {
-            /* Have to make a copy since getexecname can return a readonly
-               string, but basename expects to be able to modify its arg. */
-            char *n = strdup(e);
-            if (n != NULL) {
-                progname = basename(n);
-            }
-        }
-    }
-    return progname;
-}
-
-#    define GET_PROGRAM_NAME() __getProgramName()
-#endif
-
-#if !defined(GET_PROGRAM_NAME)
-#    if defined(__OpenBSD__) || defined(NetBSD) || defined(__UCLIBC__) || defined(ANDROID)
-/* This is a hack. It's said to work on OpenBSD, NetBSD and GNU.
- * Rogelio M.Serrano Jr. reported it's also working with UCLIBC. It's
- * used as a last resort, if there is no documented facility available. */
-static const char *
-__getProgramName()
-{
-    extern const char *__progname;
-    char * arg = strrchr(__progname, '/');
-    if (arg)
-        return arg+1;
-    else
-        return __progname;
-}
-#        define GET_PROGRAM_NAME() __getProgramName()
-#    else
-#        define GET_PROGRAM_NAME() ""
-#        warning "Per application configuration won't work with your OS version."
-#    endif
-#endif
-
-/** \brief Find an option in an option cache with the name as key */
-static uint32_t
-findOption(const driOptionCache *cache, const char *name)
-{
-    uint32_t len = strlen (name);
-    uint32_t size = 1 << cache->tableSize, mask = size - 1;
-    uint32_t hash = 0;
-    uint32_t i, shift;
-
-  /* compute a hash from the variable length name */
-    for (i = 0, shift = 0; i < len; ++i, shift = (shift+8) & 31)
-        hash += (uint32_t)name[i] << shift;
-    hash *= hash;
-    hash = (hash >> (16-cache->tableSize/2)) & mask;
-
-  /* this is just the starting point of the linear search for the option */
-    for (i = 0; i < size; ++i, hash = (hash+1) & mask) {
-      /* if we hit an empty entry then the option is not defined (yet) */
-        if (cache->info[hash].name == 0)
-            break;
-        else if (!strcmp (name, cache->info[hash].name))
-            break;
-    }
-  /* this assertion fails if the hash table is full */
-    assert (i < size);
-
-    return hash;
-}
-
-/** \brief Like strdup but using malloc and with error checking. */
-#define XSTRDUP(dest,source) do { \
-    uint32_t len = strlen (source); \
-    if (!(dest = malloc(len+1))) { \
-        fprintf (stderr, "%s: %d: out of memory.\n", __FILE__, __LINE__); \
-        abort(); \
-    } \
-    memcpy (dest, source, len+1); \
-} while (0)
-
-static int compare (const void *a, const void *b) {
-    return strcmp (*(char *const*)a, *(char *const*)b);
-}
-/** \brief Binary search in a string array. */
-static uint32_t
-bsearchStr (const XML_Char *name, const XML_Char *elems[], uint32_t count)
-{
-    const XML_Char **found;
-    found = bsearch (&name, elems, count, sizeof (XML_Char *), compare);
-    if (found)
-        return found - elems;
-    else
-        return count;
-}
-
-/** \brief Locale-independent integer parser.
- *
- * Works similar to strtol. Leading space is NOT skipped. The input
- * number may have an optional sign. Radix is specified by base. If
- * base is 0 then decimal is assumed unless the input number is
- * prefixed by 0x or 0X for hexadecimal or 0 for octal. After
- * returning tail points to the first character that is not part of
- * the integer number. If no number was found then tail points to the
- * start of the input string. */
-static int
-strToI(const XML_Char *string, const XML_Char **tail, int base)
-{
-    int radix = base == 0 ? 10 : base;
-    int result = 0;
-    int sign = 1;
-    bool numberFound = false;
-    const XML_Char *start = string;
-
-    assert (radix >= 2 && radix <= 36);
-
-    if (*string == '-') {
-        sign = -1;
-        string++;
-    } else if (*string == '+')
-        string++;
-    if (base == 0 && *string == '0') {
-        numberFound = true;
-        if (*(string+1) == 'x' || *(string+1) == 'X') {
-            radix = 16;
-            string += 2;
-        } else {
-            radix = 8;
-            string++;
-        }
-    }
-    do {
-        int digit = -1;
-        if (radix <= 10) {
-            if (*string >= '0' && *string < '0' + radix)
-                digit = *string - '0';
-        } else {
-            if (*string >= '0' && *string <= '9')
-                digit = *string - '0';
-            else if (*string >= 'a' && *string < 'a' + radix - 10)
-                digit = *string - 'a' + 10;
-            else if (*string >= 'A' && *string < 'A' + radix - 10)
-                digit = *string - 'A' + 10;
-        }
-        if (digit != -1) {
-            numberFound = true;
-            result = radix*result + digit;
-            string++;
-        } else
-            break;
-    } while (true);
-    *tail = numberFound ? string : start;
-    return sign * result;
-}
-
-/** \brief Locale-independent floating-point parser.
- *
- * Works similar to strtod. Leading space is NOT skipped. The input
- * number may have an optional sign. '.' is interpreted as decimal
- * point and may occur at most once. Optionally the number may end in
- * [eE]<exponent>, where <exponent> is an integer as recognized by
- * strToI. In that case the result is number * 10^exponent. After
- * returning tail points to the first character that is not part of
- * the floating point number. If no number was found then tail points
- * to the start of the input string.
- *
- * Uses two passes for maximum accuracy. */
-static float
-strToF(const XML_Char *string, const XML_Char **tail)
-{
-    int nDigits = 0, pointPos, exponent;
-    float sign = 1.0f, result = 0.0f, scale;
-    const XML_Char *start = string, *numStart;
-
-    /* sign */
-    if (*string == '-') {
-        sign = -1.0f;
-        string++;
-    } else if (*string == '+')
-        string++;
-
-    /* first pass: determine position of decimal point, number of
-     * digits, exponent and the end of the number. */
-    numStart = string;
-    while (*string >= '0' && *string <= '9') {
-        string++;
-        nDigits++;
-    }
-    pointPos = nDigits;
-    if (*string == '.') {
-        string++;
-        while (*string >= '0' && *string <= '9') {
-            string++;
-            nDigits++;
-        }
-    }
-    if (nDigits == 0) {
-        /* no digits, no number */
-        *tail = start;
-        return 0.0f;
-    }
-    *tail = string;
-    if (*string == 'e' || *string == 'E') {
-        const XML_Char *expTail;
-        exponent = strToI (string+1, &expTail, 10);
-        if (expTail == string+1)
-            exponent = 0;
-        else
-            *tail = expTail;
-    } else
-        exponent = 0;
-    string = numStart;
-
-    /* scale of the first digit */
-    scale = sign * (float)pow (10.0, (double)(pointPos-1 + exponent));
-
-    /* second pass: parse digits */
-    do {
-        if (*string != '.') {
-            assert (*string >= '0' && *string <= '9');
-            result += scale * (float)(*string - '0');
-            scale *= 0.1f;
-            nDigits--;
-        }
-        string++;
-    } while (nDigits > 0);
-
-    return result;
-}
-
-/** \brief Parse a value of a given type. */
-static unsigned char
-parseValue(driOptionValue *v, driOptionType type, const XML_Char *string)
-{
-    const XML_Char *tail = NULL;
-  /* skip leading white-space */
-    string += strspn (string, " \f\n\r\t\v");
-    switch (type) {
-      case DRI_BOOL:
-        if (!strcmp (string, "false")) {
-            v->_bool = false;
-            tail = string + 5;
-        } else if (!strcmp (string, "true")) {
-            v->_bool = true;
-            tail = string + 4;
-        }
-        else
-            return false;
-        break;
-      case DRI_ENUM: /* enum is just a special integer */
-      case DRI_INT:
-        v->_int = strToI (string, &tail, 0);
-        break;
-      case DRI_FLOAT:
-        v->_float = strToF (string, &tail);
-        break;
-      case DRI_STRING:
-        free (v->_string);
-        v->_string = strndup(string, STRING_CONF_MAXLEN);
-        return true;
-    }
-
-    if (tail == string)
-        return false; /* empty string (or containing only white-space) */
-  /* skip trailing white space */
-    if (*tail)
-        tail += strspn (tail, " \f\n\r\t\v");
-    if (*tail)
-        return false; /* something left over that is not part of value */
-
-    return true;
-}
-
-/** \brief Parse a list of ranges of type info->type. */
-static unsigned char
-parseRanges(driOptionInfo *info, const XML_Char *string)
-{
-    XML_Char *cp, *range;
-    uint32_t nRanges, i;
-    driOptionRange *ranges;
-
-    XSTRDUP (cp, string);
-  /* pass 1: determine the number of ranges (number of commas + 1) */
-    range = cp;
-    for (nRanges = 1; *range; ++range)
-        if (*range == ',')
-            ++nRanges;
-
-    if ((ranges = malloc(nRanges*sizeof(driOptionRange))) == NULL) {
-        fprintf (stderr, "%s: %d: out of memory.\n", __FILE__, __LINE__);
-        abort();
-    }
-
-  /* pass 2: parse all ranges into preallocated array */
-    range = cp;
-    for (i = 0; i < nRanges; ++i) {
-        XML_Char *end, *sep;
-        assert (range);
-        end = strchr (range, ',');
-        if (end)
-            *end = '\0';
-        sep = strchr (range, ':');
-        if (sep) { /* non-empty interval */
-            *sep = '\0';
-            if (!parseValue (&ranges[i].start, info->type, range) ||
-                !parseValue (&ranges[i].end, info->type, sep+1))
-                break;
-            if (info->type == DRI_INT &&
-                ranges[i].start._int > ranges[i].end._int)
-                break;
-            if (info->type == DRI_FLOAT &&
-                ranges[i].start._float > ranges[i].end._float)
-                break;
-        } else { /* empty interval */
-            if (!parseValue (&ranges[i].start, info->type, range))
-                break;
-            ranges[i].end = ranges[i].start;
-        }
-        if (end)
-            range = end+1;
-        else
-            range = NULL;
-    }
-    free(cp);
-    if (i < nRanges) {
-        free(ranges);
-        return false;
-    } else
-        assert (range == NULL);
-
-    info->nRanges = nRanges;
-    info->ranges = ranges;
-    return true;
-}
-
-/** \brief Check if a value is in one of info->ranges. */
-static bool
-checkValue(const driOptionValue *v, const driOptionInfo *info)
-{
-    uint32_t i;
-    assert (info->type != DRI_BOOL); /* should be caught by the parser */
-    if (info->nRanges == 0)
-        return true;
-    switch (info->type) {
-      case DRI_ENUM: /* enum is just a special integer */
-      case DRI_INT:
-        for (i = 0; i < info->nRanges; ++i)
-            if (v->_int >= info->ranges[i].start._int &&
-                v->_int <= info->ranges[i].end._int)
-                return true;
-        break;
-      case DRI_FLOAT:
-        for (i = 0; i < info->nRanges; ++i)
-            if (v->_float >= info->ranges[i].start._float &&
-                v->_float <= info->ranges[i].end._float)
-                return true;
-        break;
-      case DRI_STRING:
-        break;
-      default:
-        assert (0); /* should never happen */
-    }
-    return false;
-}
-
-/**
- * Print message to \c stderr if the \c LIBGL_DEBUG environment variable
- * is set. 
- * 
- * Is called from the drivers.
- * 
- * \param f \c printf like format string.
- */
-static void
-__driUtilMessage(const char *f, ...)
-{
-    va_list args;
-    const char *libgl_debug;
-
-    libgl_debug=getenv("LIBGL_DEBUG");
-    if (libgl_debug && !strstr(libgl_debug, "quiet")) {
-        fprintf(stderr, "libGL: ");
-        va_start(args, f);
-        vfprintf(stderr, f, args);
-        va_end(args);
-        fprintf(stderr, "\n");
-    }
-}
-
-/** \brief Output a warning message. */
-#define XML_WARNING1(msg) do {\
-    __driUtilMessage ("Warning in %s line %d, column %d: "msg, data->name, \
-                      (int) XML_GetCurrentLineNumber(data->parser), \
-                      (int) XML_GetCurrentColumnNumber(data->parser)); \
-} while (0)
-#define XML_WARNING(msg,args...) do { \
-    __driUtilMessage ("Warning in %s line %d, column %d: "msg, data->name, \
-                      (int) XML_GetCurrentLineNumber(data->parser), \
-                      (int) XML_GetCurrentColumnNumber(data->parser), \
-                      args); \
-} while (0)
-/** \brief Output an error message. */
-#define XML_ERROR1(msg) do { \
-    __driUtilMessage ("Error in %s line %d, column %d: "msg, data->name, \
-                      (int) XML_GetCurrentLineNumber(data->parser), \
-                      (int) XML_GetCurrentColumnNumber(data->parser)); \
-} while (0)
-#define XML_ERROR(msg,args...) do { \
-    __driUtilMessage ("Error in %s line %d, column %d: "msg, data->name, \
-                      (int) XML_GetCurrentLineNumber(data->parser), \
-                      (int) XML_GetCurrentColumnNumber(data->parser), \
-                      args); \
-} while (0)
-/** \brief Output a fatal error message and abort. */
-#define XML_FATAL1(msg) do { \
-    fprintf (stderr, "Fatal error in %s line %d, column %d: "msg"\n", \
-             data->name, \
-             (int) XML_GetCurrentLineNumber(data->parser),        \
-             (int) XML_GetCurrentColumnNumber(data->parser)); \
-    abort();\
-} while (0)
-#define XML_FATAL(msg,args...) do { \
-    fprintf (stderr, "Fatal error in %s line %d, column %d: "msg"\n", \
-             data->name, \
-             (int) XML_GetCurrentLineNumber(data->parser), \
-             (int) XML_GetCurrentColumnNumber(data->parser), \
-             args); \
-    abort();\
-} while (0)
-
-/** \brief Parser context for __driConfigOptions. */
-struct OptInfoData {
-    const char *name;
-    XML_Parser parser;
-    driOptionCache *cache;
-    bool inDriInfo;
-    bool inSection;
-    bool inDesc;
-    bool inOption;
-    bool inEnum;
-    int curOption;
-};
-
-/** \brief Elements in __driConfigOptions. */
-enum OptInfoElem {
-    OI_DESCRIPTION = 0, OI_DRIINFO, OI_ENUM, OI_OPTION, OI_SECTION, OI_COUNT
-};
-static const XML_Char *OptInfoElems[] = {
-    "description", "driinfo", "enum", "option", "section"
-};
-
-/** \brief Parse attributes of an enum element.
- *
- * We're not actually interested in the data. Just make sure this is ok
- * for external configuration tools.
- */
-static void
-parseEnumAttr(struct OptInfoData *data, const XML_Char **attr)
-{
-    uint32_t i;
-    const XML_Char *value = NULL, *text = NULL;
-    driOptionValue v;
-    uint32_t opt = data->curOption;
-    for (i = 0; attr[i]; i += 2) {
-        if (!strcmp (attr[i], "value")) value = attr[i+1];
-        else if (!strcmp (attr[i], "text")) text = attr[i+1];
-        else XML_FATAL("illegal enum attribute: %s.", attr[i]);
-    }
-    if (!value) XML_FATAL1 ("value attribute missing in enum.");
-    if (!text) XML_FATAL1 ("text attribute missing in enum.");
-     if (!parseValue (&v, data->cache->info[opt].type, value))
-        XML_FATAL ("illegal enum value: %s.", value);
-    if (!checkValue (&v, &data->cache->info[opt]))
-        XML_FATAL ("enum value out of valid range: %s.", value);
-}
-
-/** \brief Parse attributes of a description element.
- *
- * We're not actually interested in the data. Just make sure this is ok
- * for external configuration tools.
- */
-static void
-parseDescAttr(struct OptInfoData *data, const XML_Char **attr)
-{
-    uint32_t i;
-    const XML_Char *lang = NULL, *text = NULL;
-    for (i = 0; attr[i]; i += 2) {
-        if (!strcmp (attr[i], "lang")) lang = attr[i+1];
-        else if (!strcmp (attr[i], "text")) text = attr[i+1];
-        else XML_FATAL("illegal description attribute: %s.", attr[i]);
-    }
-    if (!lang) XML_FATAL1 ("lang attribute missing in description.");
-    if (!text) XML_FATAL1 ("text attribute missing in description.");
-}
-
-/** \brief Parse attributes of an option element. */
-static void
-parseOptInfoAttr(struct OptInfoData *data, const XML_Char **attr)
-{
-    enum OptAttr {OA_DEFAULT = 0, OA_NAME, OA_TYPE, OA_VALID, OA_COUNT};
-    static const XML_Char *optAttr[] = {"default", "name", "type", "valid"};
-    const XML_Char *attrVal[OA_COUNT] = {NULL, NULL, NULL, NULL};
-    const char *defaultVal;
-    driOptionCache *cache = data->cache;
-    uint32_t opt, i;
-    for (i = 0; attr[i]; i += 2) {
-        uint32_t attrName = bsearchStr (attr[i], optAttr, OA_COUNT);
-        if (attrName >= OA_COUNT)
-            XML_FATAL ("illegal option attribute: %s", attr[i]);
-        attrVal[attrName] = attr[i+1];
-    }
-    if (!attrVal[OA_NAME]) XML_FATAL1 ("name attribute missing in option.");
-    if (!attrVal[OA_TYPE]) XML_FATAL1 ("type attribute missing in option.");
-    if (!attrVal[OA_DEFAULT]) XML_FATAL1 ("default attribute missing in option.");
-
-    opt = findOption (cache, attrVal[OA_NAME]);
-    if (cache->info[opt].name)
-        XML_FATAL ("option %s redefined.", attrVal[OA_NAME]);
-    data->curOption = opt;
-
-    XSTRDUP (cache->info[opt].name, attrVal[OA_NAME]);
-
-    if (!strcmp (attrVal[OA_TYPE], "bool"))
-        cache->info[opt].type = DRI_BOOL;
-    else if (!strcmp (attrVal[OA_TYPE], "enum"))
-        cache->info[opt].type = DRI_ENUM;
-    else if (!strcmp (attrVal[OA_TYPE], "int"))
-        cache->info[opt].type = DRI_INT;
-    else if (!strcmp (attrVal[OA_TYPE], "float"))
-        cache->info[opt].type = DRI_FLOAT;
-    else if (!strcmp (attrVal[OA_TYPE], "string"))
-        cache->info[opt].type = DRI_STRING;
-    else
-        XML_FATAL ("illegal type in option: %s.", attrVal[OA_TYPE]);
-
-    defaultVal = getenv (cache->info[opt].name);
-    if (defaultVal != NULL) {
-      /* don't use XML_WARNING, we want the user to see this! */
-        fprintf (stderr,
-                 "ATTENTION: default value of option %s overridden by environment.\n",
-                 cache->info[opt].name);
-    } else
-        defaultVal = attrVal[OA_DEFAULT];
-    if (!parseValue (&cache->values[opt], cache->info[opt].type, defaultVal))
-        XML_FATAL ("illegal default value for %s: %s.", cache->info[opt].name, defaultVal);
-
-    if (attrVal[OA_VALID]) {
-        if (cache->info[opt].type == DRI_BOOL)
-            XML_FATAL1 ("boolean option with valid attribute.");
-        if (!parseRanges (&cache->info[opt], attrVal[OA_VALID]))
-            XML_FATAL ("illegal valid attribute: %s.", attrVal[OA_VALID]);
-        if (!checkValue (&cache->values[opt], &cache->info[opt]))
-            XML_FATAL ("default value out of valid range '%s': %s.",
-                       attrVal[OA_VALID], defaultVal);
-    } else if (cache->info[opt].type == DRI_ENUM) {
-        XML_FATAL1 ("valid attribute missing in option (mandatory for enums).");
-    } else {
-        cache->info[opt].nRanges = 0;
-        cache->info[opt].ranges = NULL;
-    }
-}
-
-/** \brief Handler for start element events. */
-static void
-optInfoStartElem(void *userData, const XML_Char *name, const XML_Char **attr)
-{
-    struct OptInfoData *data = (struct OptInfoData *)userData;
-    enum OptInfoElem elem = bsearchStr (name, OptInfoElems, OI_COUNT);
-    switch (elem) {
-      case OI_DRIINFO:
-        if (data->inDriInfo)
-            XML_FATAL1 ("nested <driinfo> elements.");
-        if (attr[0])
-            XML_FATAL1 ("attributes specified on <driinfo> element.");
-        data->inDriInfo = true;
-        break;
-      case OI_SECTION:
-        if (!data->inDriInfo)
-            XML_FATAL1 ("<section> must be inside <driinfo>.");
-        if (data->inSection)
-            XML_FATAL1 ("nested <section> elements.");
-        if (attr[0])
-            XML_FATAL1 ("attributes specified on <section> element.");
-        data->inSection = true;
-        break;
-      case OI_DESCRIPTION:
-        if (!data->inSection && !data->inOption)
-            XML_FATAL1 ("<description> must be inside <description> or <option.");
-        if (data->inDesc)
-            XML_FATAL1 ("nested <description> elements.");
-        data->inDesc = true;
-        parseDescAttr (data, attr);
-        break;
-      case OI_OPTION:
-        if (!data->inSection)
-            XML_FATAL1 ("<option> must be inside <section>.");
-        if (data->inDesc)
-            XML_FATAL1 ("<option> nested in <description> element.");
-        if (data->inOption)
-            XML_FATAL1 ("nested <option> elements.");
-        data->inOption = true;
-        parseOptInfoAttr (data, attr);
-        break;
-      case OI_ENUM:
-        if (!(data->inOption && data->inDesc))
-            XML_FATAL1 ("<enum> must be inside <option> and <description>.");
-        if (data->inEnum)
-            XML_FATAL1 ("nested <enum> elements.");
-        data->inEnum = true;
-        parseEnumAttr (data, attr);
-        break;
-      default:
-        XML_FATAL ("unknown element: %s.", name);
-    }
-}
-
-/** \brief Handler for end element events. */
-static void
-optInfoEndElem(void *userData, const XML_Char *name)
-{
-    struct OptInfoData *data = (struct OptInfoData *)userData;
-    enum OptInfoElem elem = bsearchStr (name, OptInfoElems, OI_COUNT);
-    switch (elem) {
-      case OI_DRIINFO:
-        data->inDriInfo = false;
-        break;
-      case OI_SECTION:
-        data->inSection = false;
-        break;
-      case OI_DESCRIPTION:
-        data->inDesc = false;
-        break;
-      case OI_OPTION:
-        data->inOption = false;
-        break;
-      case OI_ENUM:
-        data->inEnum = false;
-        break;
-      default:
-        assert (0); /* should have been caught by StartElem */
-    }
-}
-
-void
-driParseOptionInfo(driOptionCache *info, const char *configOptions)
-{
-    XML_Parser p;
-    int status;
-    struct OptInfoData userData;
-    struct OptInfoData *data = &userData;
-
-    /* Make the hash table big enough to fit more than the maximum number of
-     * config options we've ever seen in a driver.
-     */
-    info->tableSize = 6;
-    info->info = calloc(1 << info->tableSize, sizeof (driOptionInfo));
-    info->values = calloc(1 << info->tableSize, sizeof (driOptionValue));
-    if (info->info == NULL || info->values == NULL) {
-        fprintf (stderr, "%s: %d: out of memory.\n", __FILE__, __LINE__);
-        abort();
-    }
-
-    p = XML_ParserCreate ("UTF-8"); /* always UTF-8 */
-    XML_SetElementHandler (p, optInfoStartElem, optInfoEndElem);
-    XML_SetUserData (p, data);
-
-    userData.name = "__driConfigOptions";
-    userData.parser = p;
-    userData.cache = info;
-    userData.inDriInfo = false;
-    userData.inSection = false;
-    userData.inDesc = false;
-    userData.inOption = false;
-    userData.inEnum = false;
-    userData.curOption = -1;
-
-    status = XML_Parse (p, configOptions, strlen (configOptions), 1);
-    if (!status)
-        XML_FATAL ("%s.", XML_ErrorString(XML_GetErrorCode(p)));
-
-    XML_ParserFree (p);
-}
-
-/** \brief Parser context for configuration files. */
-struct OptConfData {
-    const char *name;
-    XML_Parser parser;
-    driOptionCache *cache;
-    int screenNum;
-    const char *driverName, *execName;
-    uint32_t ignoringDevice;
-    uint32_t ignoringApp;
-    uint32_t inDriConf;
-    uint32_t inDevice;
-    uint32_t inApp;
-    uint32_t inOption;
-};
-
-/** \brief Elements in configuration files. */
-enum OptConfElem {
-    OC_APPLICATION = 0, OC_DEVICE, OC_DRICONF, OC_OPTION, OC_COUNT
-};
-static const XML_Char *OptConfElems[] = {
-    [OC_APPLICATION]  = "application",
-    [OC_DEVICE] = "device",
-    [OC_DRICONF] = "driconf",
-    [OC_OPTION] = "option",
-};
-
-/** \brief Parse attributes of a device element. */
-static void
-parseDeviceAttr(struct OptConfData *data, const XML_Char **attr)
-{
-    uint32_t i;
-    const XML_Char *driver = NULL, *screen = NULL;
-    for (i = 0; attr[i]; i += 2) {
-        if (!strcmp (attr[i], "driver")) driver = attr[i+1];
-        else if (!strcmp (attr[i], "screen")) screen = attr[i+1];
-        else XML_WARNING("unknown device attribute: %s.", attr[i]);
-    }
-    if (driver && strcmp (driver, data->driverName))
-        data->ignoringDevice = data->inDevice;
-    else if (screen) {
-        driOptionValue screenNum;
-        if (!parseValue (&screenNum, DRI_INT, screen))
-            XML_WARNING("illegal screen number: %s.", screen);
-        else if (screenNum._int != data->screenNum)
-            data->ignoringDevice = data->inDevice;
-    }
-}
-
-/** \brief Parse attributes of an application element. */
-static void
-parseAppAttr(struct OptConfData *data, const XML_Char **attr)
-{
-    uint32_t i;
-    const XML_Char *exec = NULL;
-    for (i = 0; attr[i]; i += 2) {
-        if (!strcmp (attr[i], "name")) /* not needed here */;
-        else if (!strcmp (attr[i], "executable")) exec = attr[i+1];
-        else XML_WARNING("unknown application attribute: %s.", attr[i]);
-    }
-    if (exec && strcmp (exec, data->execName))
-        data->ignoringApp = data->inApp;
-}
-
-/** \brief Parse attributes of an option element. */
-static void
-parseOptConfAttr(struct OptConfData *data, const XML_Char **attr)
-{
-    uint32_t i;
-    const XML_Char *name = NULL, *value = NULL;
-    for (i = 0; attr[i]; i += 2) {
-        if (!strcmp (attr[i], "name")) name = attr[i+1];
-        else if (!strcmp (attr[i], "value")) value = attr[i+1];
-        else XML_WARNING("unknown option attribute: %s.", attr[i]);
-    }
-    if (!name) XML_WARNING1 ("name attribute missing in option.");
-    if (!value) XML_WARNING1 ("value attribute missing in option.");
-    if (name && value) {
-        driOptionCache *cache = data->cache;
-        uint32_t opt = findOption (cache, name);
-        if (cache->info[opt].name == NULL)
-            /* don't use XML_WARNING, drirc defines options for all drivers,
-             * but not all drivers support them */
-            return;
-        else if (getenv (cache->info[opt].name))
-          /* don't use XML_WARNING, we want the user to see this! */
-            fprintf (stderr, "ATTENTION: option value of option %s ignored.\n",
-                     cache->info[opt].name);
-        else if (!parseValue (&cache->values[opt], cache->info[opt].type, value))
-            XML_WARNING ("illegal option value: %s.", value);
-    }
-}
-
-/** \brief Handler for start element events. */
-static void
-optConfStartElem(void *userData, const XML_Char *name,
-                 const XML_Char **attr)
-{
-    struct OptConfData *data = (struct OptConfData *)userData;
-    enum OptConfElem elem = bsearchStr (name, OptConfElems, OC_COUNT);
-    switch (elem) {
-      case OC_DRICONF:
-        if (data->inDriConf)
-            XML_WARNING1 ("nested <driconf> elements.");
-        if (attr[0])
-            XML_WARNING1 ("attributes specified on <driconf> element.");
-        data->inDriConf++;
-        break;
-      case OC_DEVICE:
-        if (!data->inDriConf)
-            XML_WARNING1 ("<device> should be inside <driconf>.");
-        if (data->inDevice)
-            XML_WARNING1 ("nested <device> elements.");
-        data->inDevice++;
-        if (!data->ignoringDevice && !data->ignoringApp)
-            parseDeviceAttr (data, attr);
-        break;
-      case OC_APPLICATION:
-        if (!data->inDevice)
-            XML_WARNING1 ("<application> should be inside <device>.");
-        if (data->inApp)
-            XML_WARNING1 ("nested <application> elements.");
-        data->inApp++;
-        if (!data->ignoringDevice && !data->ignoringApp)
-            parseAppAttr (data, attr);
-        break;
-      case OC_OPTION:
-        if (!data->inApp)
-            XML_WARNING1 ("<option> should be inside <application>.");
-        if (data->inOption)
-            XML_WARNING1 ("nested <option> elements.");
-        data->inOption++;
-        if (!data->ignoringDevice && !data->ignoringApp)
-            parseOptConfAttr (data, attr);
-        break;
-      default:
-        XML_WARNING ("unknown element: %s.", name);
-    }
-}
-
-/** \brief Handler for end element events. */
-static void
-optConfEndElem(void *userData, const XML_Char *name)
-{
-    struct OptConfData *data = (struct OptConfData *)userData;
-    enum OptConfElem elem = bsearchStr (name, OptConfElems, OC_COUNT);
-    switch (elem) {
-      case OC_DRICONF:
-        data->inDriConf--;
-        break;
-      case OC_DEVICE:
-        if (data->inDevice-- == data->ignoringDevice)
-            data->ignoringDevice = 0;
-        break;
-      case OC_APPLICATION:
-        if (data->inApp-- == data->ignoringApp)
-            data->ignoringApp = 0;
-        break;
-      case OC_OPTION:
-        data->inOption--;
-        break;
-      default:
-        /* unknown element, warning was produced on start tag */;
-    }
-}
-
-/** \brief Initialize an option cache based on info */
-static void
-initOptionCache(driOptionCache *cache, const driOptionCache *info)
-{
-    unsigned i, size = 1 << info->tableSize;
-    cache->info = info->info;
-    cache->tableSize = info->tableSize;
-    cache->values = malloc((1<<info->tableSize) * sizeof (driOptionValue));
-    if (cache->values == NULL) {
-        fprintf (stderr, "%s: %d: out of memory.\n", __FILE__, __LINE__);
-        abort();
-    }
-    memcpy (cache->values, info->values,
-            (1<<info->tableSize) * sizeof (driOptionValue));
-    for (i = 0; i < size; ++i) {
-        if (cache->info[i].type == DRI_STRING)
-            XSTRDUP(cache->values[i]._string, info->values[i]._string);
-    }
-}
-
-/** \brief Parse the named configuration file */
-static void
-parseOneConfigFile(XML_Parser p)
-{
-#define BUF_SIZE 0x1000
-    struct OptConfData *data = (struct OptConfData *)XML_GetUserData (p);
-    int status;
-    int fd;
-
-    if ((fd = open (data->name, O_RDONLY)) == -1) {
-        __driUtilMessage ("Can't open configuration file %s: %s.",
-                          data->name, strerror (errno));
-        return;
-    }
-
-    while (1) {
-        int bytesRead;
-        void *buffer = XML_GetBuffer (p, BUF_SIZE);
-        if (!buffer) {
-            __driUtilMessage ("Can't allocate parser buffer.");
-            break;
-        }
-        bytesRead = read (fd, buffer, BUF_SIZE);
-        if (bytesRead == -1) {
-            __driUtilMessage ("Error reading from configuration file %s: %s.",
-                              data->name, strerror (errno));
-            break;
-        }
-        status = XML_ParseBuffer (p, bytesRead, bytesRead == 0);
-        if (!status) {
-            XML_ERROR ("%s.", XML_ErrorString(XML_GetErrorCode(p)));
-            break;
-        }
-        if (bytesRead == 0)
-            break;
-    }
-
-    close (fd);
-#undef BUF_SIZE
-}
-
-#ifndef SYSCONFDIR
-#define SYSCONFDIR "/etc"
-#endif
-
-void
-driParseConfigFiles(driOptionCache *cache, const driOptionCache *info,
-                    int screenNum, const char *driverName)
-{
-    char *filenames[2] = { SYSCONFDIR "/drirc", NULL};
-    char *home;
-    uint32_t i;
-    struct OptConfData userData;
-
-    initOptionCache (cache, info);
-
-    userData.cache = cache;
-    userData.screenNum = screenNum;
-    userData.driverName = driverName;
-    userData.execName = GET_PROGRAM_NAME();
-
-    if ((home = getenv ("HOME"))) {
-        uint32_t len = strlen (home);
-        filenames[1] = malloc(len + 7+1);
-        if (filenames[1] == NULL)
-            __driUtilMessage ("Can't allocate memory for %s/.drirc.", home);
-        else {
-            memcpy (filenames[1], home, len);
-            memcpy (filenames[1] + len, "/.drirc", 7+1);
-        }
-    }
-
-    for (i = 0; i < 2; ++i) {
-        XML_Parser p;
-        if (filenames[i] == NULL)
-            continue;
-
-        p = XML_ParserCreate (NULL); /* use encoding specified by file */
-        XML_SetElementHandler (p, optConfStartElem, optConfEndElem);
-        XML_SetUserData (p, &userData);
-        userData.parser = p;
-        userData.name = filenames[i];
-        userData.ignoringDevice = 0;
-        userData.ignoringApp = 0;
-        userData.inDriConf = 0;
-        userData.inDevice = 0;
-        userData.inApp = 0;
-        userData.inOption = 0;
-
-        parseOneConfigFile (p);
-        XML_ParserFree (p);
-    }
-
-    free(filenames[1]);
-}
-
-void
-driDestroyOptionInfo(driOptionCache *info)
-{
-    driDestroyOptionCache(info);
-    if (info->info) {
-        uint32_t i, size = 1 << info->tableSize;
-        for (i = 0; i < size; ++i) {
-            if (info->info[i].name) {
-                free(info->info[i].name);
-                free(info->info[i].ranges);
-            }
-        }
-        free(info->info);
-    }
-}
-
-void
-driDestroyOptionCache(driOptionCache *cache)
-{
-    if (cache->info) {
-        unsigned i, size = 1 << cache->tableSize;
-        for (i = 0; i < size; ++i) {
-            if (cache->info[i].type == DRI_STRING)
-                free(cache->values[i]._string);
-        }
-    }
-    free(cache->values);
-}
-
-unsigned char
-driCheckOption(const driOptionCache *cache, const char *name,
-               driOptionType type)
-{
-    uint32_t i = findOption (cache, name);
-    return cache->info[i].name != NULL && cache->info[i].type == type;
-}
-
-unsigned char
-driQueryOptionb(const driOptionCache *cache, const char *name)
-{
-    uint32_t i = findOption (cache, name);
-  /* make sure the option is defined and has the correct type */
-    assert (cache->info[i].name != NULL);
-    assert (cache->info[i].type == DRI_BOOL);
-    return cache->values[i]._bool;
-}
-
-int
-driQueryOptioni(const driOptionCache *cache, const char *name)
-{
-    uint32_t i = findOption (cache, name);
-  /* make sure the option is defined and has the correct type */
-    assert (cache->info[i].name != NULL);
-    assert (cache->info[i].type == DRI_INT || cache->info[i].type == DRI_ENUM);
-    return cache->values[i]._int;
-}
-
-float
-driQueryOptionf(const driOptionCache *cache, const char *name)
-{
-    uint32_t i = findOption (cache, name);
-  /* make sure the option is defined and has the correct type */
-    assert (cache->info[i].name != NULL);
-    assert (cache->info[i].type == DRI_FLOAT);
-    return cache->values[i]._float;
-}
-
-char *
-driQueryOptionstr(const driOptionCache *cache, const char *name)
-{
-    uint32_t i = findOption (cache, name);
-  /* make sure the option is defined and has the correct type */
-    assert (cache->info[i].name != NULL);
-    assert (cache->info[i].type == DRI_STRING);
-    return cache->values[i]._string;
-}
diff --git a/src/mesa/drivers/dri/common/xmlconfig.h b/src/mesa/drivers/dri/common/xmlconfig.h
deleted file mode 100644 (file)
index 77aa14c..0000000
+++ /dev/null
@@ -1,179 +0,0 @@
-/*
- * 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 xmlconfig.h
- * \brief Driver-independent client-side part of the XML configuration
- * \author Felix Kuehling
- */
-
-#ifndef __XMLCONFIG_H
-#define __XMLCONFIG_H
-
-#include "util/mesa-sha1.h"
-#include "util/ralloc.h"
-
-#define STRING_CONF_MAXLEN 25
-
-/** \brief Option data types */
-typedef enum driOptionType {
-    DRI_BOOL, DRI_ENUM, DRI_INT, DRI_FLOAT, DRI_STRING
-} driOptionType;
-
-/** \brief Option value */
-typedef union driOptionValue {
-    unsigned char _bool; /**< \brief Boolean */
-    int _int;      /**< \brief Integer or Enum */
-    float _float;  /**< \brief Floating-point */
-    char *_string;   /**< \brief String */
-} driOptionValue;
-
-/** \brief Single range of valid values
- *
- * For empty ranges (a single value) start == end */
-typedef struct driOptionRange {
-    driOptionValue start; /**< \brief Start */
-    driOptionValue end;   /**< \brief End */
-} driOptionRange;
-
-/** \brief Information about an option */
-typedef struct driOptionInfo {
-    char *name;             /**< \brief Name */
-    driOptionType type;     /**< \brief Type */
-    driOptionRange *ranges; /**< \brief Array of ranges */
-    unsigned int nRanges;   /**< \brief Number of ranges */
-} driOptionInfo;
-
-/** \brief Option cache
- *
- * \li One in <driver>Screen caching option info and the default values
- * \li One in each <driver>Context with the actual values for that context */
-typedef struct driOptionCache {
-    driOptionInfo *info;
-  /**< \brief Array of option infos
-   *
-   * Points to the same array in the screen and all contexts */
-    driOptionValue *values;    
-  /**< \brief Array of option values
-   *
-   * \li Default values in screen
-   * \li Actual values in contexts 
-   */
-    unsigned int tableSize;
-  /**< \brief Size of the arrays
-   *
-   * In the current implementation it's not actually a size but log2(size).
-   * The value is the same in the screen and all contexts. */
-} driOptionCache;
-
-/** \brief Parse XML option info from configOptions
- *
- * To be called in <driver>CreateScreen 
- *
- * \param info    pointer to a driOptionCache that will store the option info
- * \param configOptions   XML document describing available configuration opts
- *
- * For the option information to be available to external configuration tools
- * it must be a public symbol __driConfigOptions. It is also passed as a
- * parameter to driParseOptionInfo in order to avoid driver-independent code
- * depending on symbols in driver-specific code. */
-void driParseOptionInfo (driOptionCache *info,
-                        const char *configOptions);
-/** \brief Initialize option cache from info and parse configuration files
- *
- * To be called in <driver>CreateContext. screenNum and driverName select
- * device sections. */
-void driParseConfigFiles (driOptionCache *cache, const driOptionCache *info,
-                         int screenNum, const char *driverName);
-/** \brief Destroy option info
- *
- * To be called in <driver>DestroyScreen */
-void driDestroyOptionInfo (driOptionCache *info);
-/** \brief Destroy option cache
- *
- * To be called in <driver>DestroyContext */
-void driDestroyOptionCache (driOptionCache *cache);
-
-/** \brief Check if there exists a certain option */
-unsigned char driCheckOption (const driOptionCache *cache, const char *name,
-                         driOptionType type);
-
-/** \brief Query a boolean option value */
-unsigned char driQueryOptionb (const driOptionCache *cache, const char *name);
-/** \brief Query an integer option value */
-int driQueryOptioni (const driOptionCache *cache, const char *name);
-/** \brief Query a floating-point option value */
-float driQueryOptionf (const driOptionCache *cache, const char *name);
-/** \brief Query a string option value */
-char *driQueryOptionstr (const driOptionCache *cache, const char *name);
-
-/**
- * Returns a hash of the options for this application.
- */
-static inline void
-driComputeOptionsSha1(const driOptionCache *cache, unsigned char *sha1)
-{
-   void *ctx = ralloc_context(NULL);
-   char *dri_options = ralloc_strdup(ctx, "");
-
-   for (int i = 0; i < 1 << cache->tableSize; i++) {
-      if (cache->info[i].name == NULL)
-         continue;
-
-      bool ret = false;
-      switch (cache->info[i].type) {
-      case DRI_BOOL:
-         ret = ralloc_asprintf_append(&dri_options, "%s:%u,",
-                                      cache->info[i].name,
-                                      cache->values[i]._bool);
-         break;
-      case DRI_INT:
-      case DRI_ENUM:
-         ret = ralloc_asprintf_append(&dri_options, "%s:%d,",
-                                      cache->info[i].name,
-                                      cache->values[i]._int);
-         break;
-      case DRI_FLOAT:
-         ret = ralloc_asprintf_append(&dri_options, "%s:%f,",
-                                      cache->info[i].name,
-                                      cache->values[i]._float);
-         break;
-      case DRI_STRING:
-         ret = ralloc_asprintf_append(&dri_options, "%s:%s,",
-                                      cache->info[i].name,
-                                      cache->values[i]._string);
-         break;
-      default:
-         unreachable("unsupported dri config type!");
-      }
-
-      if (!ret) {
-         break;
-      }
-   }
-
-   _mesa_sha1_compute(dri_options, strlen(dri_options), sha1);
-   ralloc_free(ctx);
-}
-
-#endif
diff --git a/src/mesa/drivers/dri/common/xmlpool.h b/src/mesa/drivers/dri/common/xmlpool.h
deleted file mode 100644 (file)
index ebd4e7c..0000000
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * 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 xmlpool.h
- * \brief Pool of common options
- * \author Felix Kuehling
- *
- * This file defines macros that can be used to construct
- * driConfigOptions in the drivers. Common options are defined in
- * xmlpool/t_options.h from which xmlpool/options.h is generated with
- * translations. This file defines generic helper macros and includes
- * xmlpool/options.h.
- */
-
-#ifndef __XMLPOOL_H
-#define __XMLPOOL_H
-
-/*
- * generic macros
- */
-
-/** \brief Begin __driConfigOptions */
-#define DRI_CONF_BEGIN \
-"<driinfo>\n"
-
-/** \brief End __driConfigOptions */
-#define DRI_CONF_END \
-"</driinfo>\n"
-
-/** \brief Begin a section of related options */
-#define DRI_CONF_SECTION_BEGIN \
-"<section>\n"
-
-/** \brief End a section of related options */
-#define DRI_CONF_SECTION_END \
-"</section>\n"
-
-/** \brief Begin an option definition */
-#define DRI_CONF_OPT_BEGIN(name,type,def) \
-"<option name=\""#name"\" type=\""#type"\" default=\""#def"\">\n"
-
-/**
- * \brief Begin a boolean option definition, with the default value passed in
- * as a string
- */
-#define DRI_CONF_OPT_BEGIN_B(name,def) \
-"<option name=\""#name"\" type=\"bool\" default="#def">\n"
-
-/** \brief Begin an option definition with quoted default value */
-#define DRI_CONF_OPT_BEGIN_Q(name,type,def) \
-"<option name=\""#name"\" type=\""#type"\" default="#def">\n"
-
-/** \brief Begin an option definition with restrictions on valid values */
-#define DRI_CONF_OPT_BEGIN_V(name,type,def,valid) \
-"<option name=\""#name"\" type=\""#type"\" default=\""#def"\" valid=\""valid"\">\n"
-
-/** \brief End an option description */
-#define DRI_CONF_OPT_END \
-"</option>\n"
-
-/** \brief A verbal description in a specified language (empty version) */
-#define DRI_CONF_DESC(lang,text) \
-"<description lang=\""#lang"\" text=\""text"\"/>\n"
-
-/** \brief A verbal description in a specified language */
-#define DRI_CONF_DESC_BEGIN(lang,text) \
-"<description lang=\""#lang"\" text=\""text"\">\n"
-
-/** \brief End a description */
-#define DRI_CONF_DESC_END \
-"</description>\n"
-
-/** \brief A verbal description of an enum value */
-#define DRI_CONF_ENUM(value,text) \
-"<enum value=\""#value"\" text=\""text"\"/>\n"
-
-
-/*
- * Predefined option sections and options with multi-lingual descriptions
- * are now automatically generated.
- */
-#include "xmlpool/options.h"
-
-#endif
diff --git a/src/mesa/drivers/dri/common/xmlpool/.gitignore b/src/mesa/drivers/dri/common/xmlpool/.gitignore
deleted file mode 100644 (file)
index 383df72..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-ca
-de
-es
-fr
-nl
-sv
-options.h
-xmlpool.pot
diff --git a/src/mesa/drivers/dri/common/xmlpool/Makefile.am b/src/mesa/drivers/dri/common/xmlpool/Makefile.am
deleted file mode 100644 (file)
index dfd8fb8..0000000
+++ /dev/null
@@ -1,101 +0,0 @@
-# Convenient makefile for managing translations.
-
-# Prerequisites:
-# - GNU gettext
-# - Python
-
-# Adding new translations
-# -----------------------
-
-# To start working on a new translation edit the POS=... line
-# below. If you want to add for example a french translation, add
-# fr.po.
-
-# Then run "make po" to generate a fresh .po file from translatable
-# strings in t_options.h. Now you can edit the new .po file (fr.po in
-# the example above) to translate the strings. Please make sure that
-# your editor encodes the file in UTF-8.
-
-# Updating existing translations
-# ------------------------------
-
-# Run "make po" to update .po files with new translatable strings from
-# t_options.h. Now you can edit the .po files you're interested
-# in. Please make sure that your editor encodes the file in UTF-8.
-
-# Updating options.h
-# ------------------
-
-# Finally run "make" to generate options.h from t_options.h with all
-# translations. Now you can rebuild the drivers. Any common options
-# used by the drivers will have option descriptions with the latest
-# translations.
-
-# Publishing translations
-# -----------------------
-
-# To get your translation(s) into Mesa CVS, please send me your
-# <lang>.po file.
-
-# More information:
-# - info gettext
-
-# The set of supported languages. Add languages as needed.
-POS=ca.po de.po es.po nl.po fr.po sv.po
-
-#
-# Don't change anything below, unless you know what you're doing.
-#
-LANGS=$(POS:%.po=%)
-MOS=$(POS:%.po=%/LC_MESSAGES/options.mo)
-POT=xmlpool.pot
-
-.PHONY: all clean pot po mo
-
-EXTRA_DIST = \
-       gen_xmlpool.py \
-       options.h \
-       t_options.h \
-       $(POS) \
-       $(MOS) \
-       SConscript
-
-BUILT_SOURCES = options.h
-CLEANFILES = \
-       options.h
-       $(POS) \
-       $(MOS)
-
-# Default target 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.
-%/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: $(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
diff --git a/src/mesa/drivers/dri/common/xmlpool/SConscript b/src/mesa/drivers/dri/common/xmlpool/SConscript
deleted file mode 100644 (file)
index fa42554..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-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/src/mesa/drivers/dri/common/xmlpool/ca.po b/src/mesa/drivers/dri/common/xmlpool/ca.po
deleted file mode 100644 (file)
index 03bf296..0000000
+++ /dev/null
@@ -1,348 +0,0 @@
-# Language  translations for Mesa package
-# Traduccions al català del paquet «Mesa».
-#
-# Copyright © 2014 Alex Henrie <alexhenrie24@gmail.com>
-#
-# 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 (including the next
-# paragraph) 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
-# THE AUTHORS OR COPYRIGHT HOLDERS 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.
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesa 10.1.0-devel\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-02-07 02:08-0700\n"
-"PO-Revision-Date: 2015-02-23 14:28-0700\n"
-"Last-Translator: Alex Henrie <alexhenrie24@gmail.com>\n"
-"Language-Team: Catalan <ca@li.org>\n"
-"Language: ca\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 1.7.4\n"
-
-#: t_options.h:56
-msgid "Debugging"
-msgstr "Depuració"
-
-#: t_options.h:60
-msgid "Disable 3D acceleration"
-msgstr "Deshabilita l'acceleració 3D"
-
-#: t_options.h:65
-msgid "Show performance boxes"
-msgstr "Mostra les caixes de rendiment"
-
-#: t_options.h:70
-msgid "Enable flushing batchbuffer after each draw call"
-msgstr "Habilita el buidatge del batchbuffer després de cada trucada de dibuix"
-
-#: t_options.h:75
-msgid "Enable flushing GPU caches with each draw call"
-msgstr ""
-"Habilita el buidatge de les memòries cau de GPU amb cada trucada de dibuix"
-
-#: t_options.h:80
-msgid "Disable throttling on first batch after flush"
-msgstr "Deshabilita la regulació en el primer lot després de buidar"
-
-#: t_options.h:85
-msgid "Force GLSL extension default behavior to 'warn'"
-msgstr ""
-"Força que el comportament per defecte de les extensions GLSL sigui 'warn'"
-
-#: t_options.h:90
-msgid "Disable dual source blending"
-msgstr "Deshabilita la barreja de font dual"
-
-#: t_options.h:95
-msgid "Disable backslash-based line continuations in GLSL source"
-msgstr ""
-"Deshabilita les continuacions de línia basades en barra invertida en la font "
-"GLSL"
-
-#: t_options.h:100
-msgid "Disable GL_ARB_shader_bit_encoding"
-msgstr "Deshabilita el GL_ARB_shader_bit_encoding"
-
-#: t_options.h:105
-msgid ""
-"Force a default GLSL version for shaders that lack an explicit #version line"
-msgstr ""
-"Força una versió GLSL per defecte en els shaders als quals lis manca una "
-"línia #version explícita"
-
-#: t_options.h:110
-msgid "Allow GLSL #extension directives in the middle of shaders"
-msgstr "Permet les directives #extension GLSL en el mitjà dels shaders"
-
-#: t_options.h:120
-msgid "Image Quality"
-msgstr "Qualitat d'imatge"
-
-#: t_options.h:133
-msgid "Texture color depth"
-msgstr "Profunditat de color de textura"
-
-#: t_options.h:134
-msgid "Prefer frame buffer color depth"
-msgstr "Prefereix profunditat de color del framebuffer"
-
-#: t_options.h:135
-msgid "Prefer 32 bits per texel"
-msgstr "Prefereix 32 bits per texel"
-
-#: t_options.h:136
-msgid "Prefer 16 bits per texel"
-msgstr "Prefereix 16 bits per texel"
-
-#: t_options.h:137
-msgid "Force 16 bits per texel"
-msgstr "Força 16 bits per texel"
-
-#: t_options.h:143
-msgid "Initial maximum value for anisotropic texture filtering"
-msgstr "Valor màxim inicial per a la filtració de textura anisòtropa"
-
-#: t_options.h:148
-msgid "Forbid negative texture LOD bias"
-msgstr ""
-"Prohibeix una parcialitat negativa del Nivell de Detalle (LOD) de les "
-"textures"
-
-#: t_options.h:153
-msgid ""
-"Enable S3TC texture compression even if software support is not available"
-msgstr ""
-"Habilita la compressió de textures S3TC encara que el suport de programari "
-"no estigui disponible"
-
-#: t_options.h:160
-msgid "Initial color reduction method"
-msgstr "Mètode inicial de reducció de color"
-
-#: t_options.h:161
-msgid "Round colors"
-msgstr "Colors arrodonits"
-
-#: t_options.h:162
-msgid "Dither colors"
-msgstr "Colors tramats"
-
-#: t_options.h:170
-msgid "Color rounding method"
-msgstr "Mètode d'arrodoniment de color"
-
-#: t_options.h:171
-msgid "Round color components downward"
-msgstr "Arrodoneix els components de color a baix"
-
-#: t_options.h:172
-msgid "Round to nearest color"
-msgstr "Arrodoneix al color més proper"
-
-#: t_options.h:181
-msgid "Color dithering method"
-msgstr "Mètode de tramat de color"
-
-#: t_options.h:182
-msgid "Horizontal error diffusion"
-msgstr "Difusió d'error horitzontal"
-
-#: t_options.h:183
-msgid "Horizontal error diffusion, reset error at line start"
-msgstr "Difusió d'error horitzontal, reinicia l'error a l'inici de la línia"
-
-#: t_options.h:184
-msgid "Ordered 2D color dithering"
-msgstr "Tramat de color 2D ordenat"
-
-#: t_options.h:190
-msgid "Floating point depth buffer"
-msgstr "Buffer de profunditat de punt flotant"
-
-#: t_options.h:195
-msgid "A post-processing filter to cel-shade the output"
-msgstr "Un filtre de postprocessament per a aplicar cel shading a la sortida"
-
-#: t_options.h:200
-msgid "A post-processing filter to remove the red channel"
-msgstr "Un filtre de postprocessament per a eliminar el canal vermell"
-
-#: t_options.h:205
-msgid "A post-processing filter to remove the green channel"
-msgstr "Un filtre de postprocessament per a eliminar el canal verd"
-
-#: t_options.h:210
-msgid "A post-processing filter to remove the blue channel"
-msgstr "Un filtre de postprocessament per a eliminar el canal blau"
-
-#: t_options.h:215
-msgid ""
-"Morphological anti-aliasing based on Jimenez\\' MLAA. 0 to disable, 8 for "
-"default quality"
-msgstr ""
-"Antialiàsing morfològic basat en el MLAA de Jimenez. 0 per deshabilitar, 8 "
-"per qualitat per defecte"
-
-#: t_options.h:220
-msgid ""
-"Morphological anti-aliasing based on Jimenez\\' MLAA. 0 to disable, 8 for "
-"default quality. Color version, usable with 2d GL apps"
-msgstr ""
-"Antialiàsing morfològic basat en el MLAA de Jimenez. 0 per deshabilitar, 8 "
-"per qualitat per defecte. Versió en color, utilitzable amb les aplicacions "
-"GL 2D"
-
-#: t_options.h:230
-msgid "Performance"
-msgstr "Rendiment"
-
-#: t_options.h:238
-msgid "TCL mode (Transformation, Clipping, Lighting)"
-msgstr "Mode TCL (Transformació, Retall, Il·luminació)"
-
-#: t_options.h:239
-msgid "Use software TCL pipeline"
-msgstr "Utilitza la canonada TCL de programari"
-
-#: t_options.h:240
-msgid "Use hardware TCL as first TCL pipeline stage"
-msgstr "Utilitza el TCL de maquinari com a la primera fase de la canonada TCL"
-
-#: t_options.h:241
-msgid "Bypass the TCL pipeline"
-msgstr "Passa per alt la canonada TCL"
-
-#: t_options.h:242
-msgid ""
-"Bypass the TCL pipeline with state-based machine code generated on-the-fly"
-msgstr ""
-"Passa per alt la canonada TCL amb codi de màquina basat en estats, generat "
-"sobre la marxa"
-
-#: t_options.h:251
-msgid "Method to limit rendering latency"
-msgstr "Mètode per a limitar la latència de renderització"
-
-#: t_options.h:252
-msgid "Busy waiting for the graphics hardware"
-msgstr "Espera activa pel maquinari de gràfics"
-
-#: t_options.h:253
-msgid "Sleep for brief intervals while waiting for the graphics hardware"
-msgstr "Dorm per intervals breus mentre s'espera al maquinari de gràfics"
-
-#: t_options.h:254
-msgid "Let the graphics hardware emit a software interrupt and sleep"
-msgstr ""
-"Deixa que el maquinari de gràfics emeti una interrupció de programari i dormi"
-
-#: t_options.h:264
-msgid "Synchronization with vertical refresh (swap intervals)"
-msgstr "Sincronització amb refresc vertical (intervals d'intercanvi)"
-
-#: t_options.h:265
-msgid "Never synchronize with vertical refresh, ignore application's choice"
-msgstr ""
-"Mai sincronitzis amb el refresc vertical, ignora l'elecció de l'aplicació"
-
-#: t_options.h:266
-msgid "Initial swap interval 0, obey application's choice"
-msgstr "Interval d'intercanvi inicial 0, obeeix l'elecció de l'aplicació"
-
-#: t_options.h:267
-msgid "Initial swap interval 1, obey application's choice"
-msgstr "Interval d'intercanvi inicial 1, obeeix l'elecció de l'aplicació"
-
-#: t_options.h:268
-msgid ""
-"Always synchronize with vertical refresh, application chooses the minimum "
-"swap interval"
-msgstr ""
-"Sempre sincronitza amb el refresc vertical, l'aplicació tria l'interval "
-"mínim d'intercanvi"
-
-#: t_options.h:276
-msgid "Use HyperZ to boost performance"
-msgstr "Utilitza el HyperZ per a augmentar el rendiment"
-
-#: t_options.h:281
-msgid "Number of texture units used"
-msgstr "Nombre d'unitats de textura utilitzades"
-
-#: t_options.h:286
-msgid "Texture filtering quality vs. speed, AKA “brilinear” texture filtering"
-msgstr ""
-"Qualitat vs. velocitat de filtració de textura, àlies filtració \"brilinear"
-"\" de textura"
-
-#: t_options.h:294
-msgid "Used types of texture memory"
-msgstr "Tipus utilitzats de memòria de textura"
-
-#: t_options.h:295
-msgid "All available memory"
-msgstr "Tota la memòria disponible"
-
-#: t_options.h:296
-msgid "Only card memory (if available)"
-msgstr "Només memòria de targeta (si està disponible)"
-
-#: t_options.h:297
-msgid "Only GART (AGP/PCIE) memory (if available)"
-msgstr "Només memòria GART (AGP/PCIE) (si està disponible)"
-
-#: t_options.h:309
-msgid "Features that are not hardware-accelerated"
-msgstr "Característiques no accelerades per maquinari"
-
-#: t_options.h:313
-msgid "Enable extension GL_ARB_vertex_program"
-msgstr "Habilita l'extensió GL_ARB_vertex_program"
-
-#: t_options.h:323
-msgid "Miscellaneous"
-msgstr "Miscel·lània"
-
-#: t_options.h:327
-msgid "Create all visuals with a depth buffer"
-msgstr "Crea tots els visuals amb buffer de profunditat"
-
-#: t_options.h:337
-msgid "Initialization"
-msgstr "Inicialització"
-
-#: t_options.h:341
-msgid "Define the graphic device to use if possible"
-msgstr "Defineix el dispositiu de gràfics que utilitzar si és possible"
-
-#: t_options.h:350
-msgid "Gallium Nine"
-msgstr "Gallium Nine"
-
-#: t_options.h:354
-msgid ""
-"Define the throttling value. -1 for no throttling, -2 for default (usually "
-"2), 0 for glfinish behaviour"
-msgstr ""
-"Defineix el valor de regulació. -1 per a no regular, -2 per al predeterminat "
-"(generalment 2), 0 per al comportament de glfinish"
-
-#: t_options.h:359
-msgid "Use an additional thread to submit buffers."
-msgstr "Utilitza un fil addicional per a entregar els buffers."
diff --git a/src/mesa/drivers/dri/common/xmlpool/de.po b/src/mesa/drivers/dri/common/xmlpool/de.po
deleted file mode 100644 (file)
index 7b20d00..0000000
+++ /dev/null
@@ -1,320 +0,0 @@
-# German translations for DRI driver options.
-# Copyright (C) 2005 Felix Kuehling
-# This file is distributed under the same license as the Mesa package.
-# Felix Kuehling <fxkuehl@gmx.de>, 2005.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesa 6.3\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-09-25 22:29-0600\n"
-"PO-Revision-Date: 2005-04-11 01:34+0200\n"
-"Last-Translator: Felix Kuehling <fxkuehl@gmx.de>\n"
-"Language-Team: German <de@li.org>\n"
-"Language: de\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: t_options.h:56
-msgid "Debugging"
-msgstr "Fehlersuche"
-
-#: t_options.h:60
-msgid "Disable 3D acceleration"
-msgstr "3D-Beschleunigung abschalten"
-
-#: t_options.h:65
-msgid "Show performance boxes"
-msgstr "Zeige Performanceboxen"
-
-#: t_options.h:70
-msgid "Enable flushing batchbuffer after each draw call"
-msgstr "Aktiviere sofortige Leerung des Stapelpuffers nach jedem Zeichenaufruf"
-
-#: t_options.h:75
-msgid "Enable flushing GPU caches with each draw call"
-msgstr ""
-"Aktiviere sofortige Leerung der GPU-Zwischenspeicher mit jedem Zeichenaufruf"
-
-#: t_options.h:80
-msgid "Disable throttling on first batch after flush"
-msgstr ""
-
-#: t_options.h:85
-msgid "Force GLSL extension default behavior to 'warn'"
-msgstr ""
-
-#: t_options.h:90
-msgid "Disable dual source blending"
-msgstr ""
-
-#: t_options.h:95
-msgid "Disable backslash-based line continuations in GLSL source"
-msgstr ""
-
-#: t_options.h:100
-msgid "Disable GL_ARB_shader_bit_encoding"
-msgstr ""
-
-#: t_options.h:105
-msgid ""
-"Force a default GLSL version for shaders that lack an explicit #version line"
-msgstr ""
-
-#: t_options.h:110
-msgid "Allow GLSL #extension directives in the middle of shaders"
-msgstr ""
-
-#: t_options.h:120
-msgid "Image Quality"
-msgstr "Bildqualität"
-
-#: t_options.h:133
-msgid "Texture color depth"
-msgstr "Texturfarbtiefe"
-
-#: t_options.h:134
-msgid "Prefer frame buffer color depth"
-msgstr "Bevorzuge Farbtiefe des Framebuffers"
-
-#: t_options.h:135
-msgid "Prefer 32 bits per texel"
-msgstr "Bevorzuge 32 bits pro Texel"
-
-#: t_options.h:136
-msgid "Prefer 16 bits per texel"
-msgstr "Bevorzuge 16 bits pro Texel"
-
-#: t_options.h:137
-msgid "Force 16 bits per texel"
-msgstr "Erzwinge 16 bits pro Texel"
-
-#: t_options.h:143
-msgid "Initial maximum value for anisotropic texture filtering"
-msgstr "Initialer Maximalwert für anisotropische Texturfilterung"
-
-#: t_options.h:148
-msgid "Forbid negative texture LOD bias"
-msgstr "Verbiete negative Textur-Detailgradverschiebung"
-
-#: t_options.h:153
-msgid ""
-"Enable S3TC texture compression even if software support is not available"
-msgstr ""
-"Aktiviere S3TC Texturkomprimierung auch wenn die nötige "
-"Softwareunterstützung fehlt"
-
-#: t_options.h:160
-msgid "Initial color reduction method"
-msgstr "Initiale Farbreduktionsmethode"
-
-#: t_options.h:161
-msgid "Round colors"
-msgstr "Farben runden"
-
-#: t_options.h:162
-msgid "Dither colors"
-msgstr "Farben rastern"
-
-#: t_options.h:170
-msgid "Color rounding method"
-msgstr "Farbrundungsmethode"
-
-#: t_options.h:171
-msgid "Round color components downward"
-msgstr "Farbkomponenten abrunden"
-
-#: t_options.h:172
-msgid "Round to nearest color"
-msgstr "Zur ähnlichsten Farbe runden"
-
-#: t_options.h:181
-msgid "Color dithering method"
-msgstr "Farbrasterungsmethode"
-
-#: t_options.h:182
-msgid "Horizontal error diffusion"
-msgstr "Horizontale Fehlerstreuung"
-
-#: t_options.h:183
-msgid "Horizontal error diffusion, reset error at line start"
-msgstr "Horizontale Fehlerstreuung, Fehler am Zeilenanfang zurücksetzen"
-
-#: t_options.h:184
-msgid "Ordered 2D color dithering"
-msgstr "Geordnete 2D Farbrasterung"
-
-#: t_options.h:190
-msgid "Floating point depth buffer"
-msgstr "Fließkomma z-Puffer"
-
-#: t_options.h:195
-msgid "A post-processing filter to cel-shade the output"
-msgstr "Nachbearbeitungsfilter für Cell Shading"
-
-#: t_options.h:200
-msgid "A post-processing filter to remove the red channel"
-msgstr "Nachbearbeitungsfilter zum Entfernen des Rotkanals"
-
-#: t_options.h:205
-msgid "A post-processing filter to remove the green channel"
-msgstr "Nachbearbeitungsfilter zum Entfernen des Grünkanals"
-
-#: t_options.h:210
-msgid "A post-processing filter to remove the blue channel"
-msgstr "Nachbearbeitungsfilter zum Entfernen des Blaukanals"
-
-#: t_options.h:215
-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"
-
-#: t_options.h:220
-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. Farbversion, für 2D-Anwendungen"
-
-#: t_options.h:230
-msgid "Performance"
-msgstr "Leistung"
-
-#: t_options.h:238
-msgid "TCL mode (Transformation, Clipping, Lighting)"
-msgstr "TCL-Modus (Transformation, Clipping, Licht)"
-
-#: t_options.h:239
-msgid "Use software TCL pipeline"
-msgstr "Benutze die Software-TCL-Pipeline"
-
-#: t_options.h:240
-msgid "Use hardware TCL as first TCL pipeline stage"
-msgstr "Benutze Hardware TCL als erste Stufe der TCL-Pipeline"
-
-#: t_options.h:241
-msgid "Bypass the TCL pipeline"
-msgstr "Umgehe die TCL-Pipeline"
-
-#: t_options.h:242
-msgid ""
-"Bypass the TCL pipeline with state-based machine code generated on-the-fly"
-msgstr ""
-"Umgehe die TCL-Pipeline mit zur Laufzeit erzeugtem, zustandsbasiertem "
-"Maschinencode"
-
-#: t_options.h:251
-msgid "Method to limit rendering latency"
-msgstr "Methode zur Begrenzung der Bildverzögerung"
-
-#: t_options.h:252
-msgid "Busy waiting for the graphics hardware"
-msgstr "Aktives Warten auf die Grafikhardware"
-
-#: t_options.h:253
-msgid "Sleep for brief intervals while waiting for the graphics hardware"
-msgstr "Kurze Schlafintervalle beim Warten auf die Grafikhardware"
-
-#: t_options.h:254
-msgid "Let the graphics hardware emit a software interrupt and sleep"
-msgstr ""
-"Die Grafikhardware eine Softwareunterbrechnung erzeugen lassen und schlafen"
-
-#: t_options.h:264
-msgid "Synchronization with vertical refresh (swap intervals)"
-msgstr "Synchronisation mit der vertikalen Bildwiederholung"
-
-#: t_options.h:265
-msgid "Never synchronize with vertical refresh, ignore application's choice"
-msgstr ""
-"Niemals mit der Bildwiederholung synchronisieren, Anweisungen der Anwendung "
-"ignorieren"
-
-#: t_options.h:266
-msgid "Initial swap interval 0, obey application's choice"
-msgstr "Initiales Bildinterval 0, Anweisungen der Anwendung gehorchen"
-
-#: t_options.h:267
-msgid "Initial swap interval 1, obey application's choice"
-msgstr "Initiales Bildinterval 1, Anweisungen der Anwendung gehorchen"
-
-#: t_options.h:268
-msgid ""
-"Always synchronize with vertical refresh, application chooses the minimum "
-"swap interval"
-msgstr ""
-"Immer mit der Bildwiederholung synchronisieren, Anwendung wählt das minimale "
-"Bildintervall"
-
-#: t_options.h:276
-msgid "Use HyperZ to boost performance"
-msgstr "HyperZ zur Leistungssteigerung verwenden"
-
-#: t_options.h:281
-msgid "Number of texture units used"
-msgstr "Anzahl der benutzten Textureinheiten"
-
-#: t_options.h:286
-msgid "Texture filtering quality vs. speed, AKA “brilinear” texture filtering"
-msgstr ""
-"Texturfilterqualität versus -geschwindigkeit, auch bekannt als „brilineare“ "
-"Texturfilterung"
-
-#: t_options.h:294
-msgid "Used types of texture memory"
-msgstr "Benutzte Arten von Texturspeicher"
-
-#: t_options.h:295
-msgid "All available memory"
-msgstr "Aller verfügbarer Speicher"
-
-#: t_options.h:296
-msgid "Only card memory (if available)"
-msgstr "Nur Grafikspeicher (falls verfügbar)"
-
-#: t_options.h:297
-msgid "Only GART (AGP/PCIE) memory (if available)"
-msgstr "Nur GART-Speicher (AGP/PCIE) (falls verfügbar)"
-
-#: t_options.h:309
-msgid "Features that are not hardware-accelerated"
-msgstr "Funktionalität, die nicht hardwarebeschleunigt ist"
-
-#: t_options.h:313
-msgid "Enable extension GL_ARB_vertex_program"
-msgstr "Erweiterung GL_ARB_vertex_program aktivieren"
-
-#: t_options.h:323
-msgid "Miscellaneous"
-msgstr ""
-
-#: t_options.h:327
-msgid "Create all visuals with a depth buffer"
-msgstr ""
-
-#: t_options.h:337
-msgid "Initialization"
-msgstr ""
-
-#: t_options.h:341
-msgid "Define the graphic device to use if possible"
-msgstr ""
-
-#~ msgid "Support larger textures not guaranteed to fit into graphics memory"
-#~ msgstr ""
-#~ "Unterstütze grosse Texturen die evtl. nicht in den Grafikspeicher passen"
-
-#~ msgid "No"
-#~ msgstr "Nein"
-
-#~ msgid "At least 1 texture must fit under worst-case assumptions"
-#~ msgstr "Mindestens 1 Textur muss auch im schlechtesten Fall Platz haben"
-
-#~ msgid "Announce hardware limits"
-#~ msgstr "Benutze Hardware-Limits"
diff --git a/src/mesa/drivers/dri/common/xmlpool/es.po b/src/mesa/drivers/dri/common/xmlpool/es.po
deleted file mode 100644 (file)
index f9d950a..0000000
+++ /dev/null
@@ -1,332 +0,0 @@
-# translation of es.po to Spanish
-# Spanish translations for PACKAGE package.
-# Copyright (C) 2005 THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# David <deifo@ono.com>, 2005.
-# David Rubio Miguélez <deifo@ono.com>, 2005.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: es\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-02-07 02:08-0700\n"
-"PO-Revision-Date: 2015-02-23 14:54-0700\n"
-"Last-Translator: Alex Henrie <alexhenrie24@gmail.com>\n"
-"Language-Team: Spanish <es@li.org>\n"
-"Language: es\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Poedit 1.7.4\n"
-
-#: t_options.h:56
-msgid "Debugging"
-msgstr "Depuración"
-
-#: t_options.h:60
-msgid "Disable 3D acceleration"
-msgstr "Deshabilitar aceleración 3D"
-
-#: t_options.h:65
-msgid "Show performance boxes"
-msgstr "Mostrar cajas de rendimiento"
-
-#: t_options.h:70
-msgid "Enable flushing batchbuffer after each draw call"
-msgstr "Habilitar vaciado del batchbuffer después de cada llamada de dibujo"
-
-#: t_options.h:75
-msgid "Enable flushing GPU caches with each draw call"
-msgstr "Habilitar vaciado de los cachés GPU con cada llamada de dibujo"
-
-#: t_options.h:80
-msgid "Disable throttling on first batch after flush"
-msgstr "Deshabilitar regulación del primer lote después de vaciar"
-
-#: t_options.h:85
-msgid "Force GLSL extension default behavior to 'warn'"
-msgstr ""
-"Forzar que el comportamiento por defecto de las extensiones GLSL sea 'warn'"
-
-#: t_options.h:90
-msgid "Disable dual source blending"
-msgstr "Deshabilitar mezcla de fuente dual"
-
-#: t_options.h:95
-msgid "Disable backslash-based line continuations in GLSL source"
-msgstr ""
-"Deshabilitar continuaciones de línea basadas en barra inversa en el código "
-"GLSL"
-
-#: t_options.h:100
-msgid "Disable GL_ARB_shader_bit_encoding"
-msgstr "Deshabilitar GL_ARB_shader_bit_encoding"
-
-#: t_options.h:105
-msgid ""
-"Force a default GLSL version for shaders that lack an explicit #version line"
-msgstr ""
-"Forzar una versión de GLSL por defecto en los shaders a los cuales les falta "
-"una línea #version explícita"
-
-#: t_options.h:110
-msgid "Allow GLSL #extension directives in the middle of shaders"
-msgstr "Permite directivas #extension GLSL en medio de los shaders"
-
-#: t_options.h:120
-msgid "Image Quality"
-msgstr "Calidad de imagen"
-
-#: t_options.h:133
-msgid "Texture color depth"
-msgstr "Profundidad de color de textura"
-
-#: t_options.h:134
-msgid "Prefer frame buffer color depth"
-msgstr "Preferir profundidad de color del framebuffer"
-
-#: t_options.h:135
-msgid "Prefer 32 bits per texel"
-msgstr "Preferir 32 bits por texel"
-
-#: t_options.h:136
-msgid "Prefer 16 bits per texel"
-msgstr "Preferir 16 bits por texel"
-
-#: t_options.h:137
-msgid "Force 16 bits per texel"
-msgstr "Forzar a 16 bits por texel"
-
-#: t_options.h:143
-msgid "Initial maximum value for anisotropic texture filtering"
-msgstr "Valor máximo inicial para filtrado anisotrópico de textura"
-
-#: t_options.h:148
-msgid "Forbid negative texture LOD bias"
-msgstr "Prohibir valores negativos de Nivel De Detalle (LOD) de texturas"
-
-#: t_options.h:153
-msgid ""
-"Enable S3TC texture compression even if software support is not available"
-msgstr ""
-"Habilitar la compresión de texturas S3TC incluso si el soporte por software "
-"no está disponible"
-
-#: t_options.h:160
-msgid "Initial color reduction method"
-msgstr "Método inicial de reducción de color"
-
-#: t_options.h:161
-msgid "Round colors"
-msgstr "Colores redondeados"
-
-#: t_options.h:162
-msgid "Dither colors"
-msgstr "Colores suavizados"
-
-#: t_options.h:170
-msgid "Color rounding method"
-msgstr "Método de redondeo de colores"
-
-#: t_options.h:171
-msgid "Round color components downward"
-msgstr "Redondear hacia abajo los componentes de color"
-
-#: t_options.h:172
-msgid "Round to nearest color"
-msgstr "Redondear al color más cercano"
-
-#: t_options.h:181
-msgid "Color dithering method"
-msgstr "Método de suavizado de color"
-
-#: t_options.h:182
-msgid "Horizontal error diffusion"
-msgstr "Difusión de error horizontal"
-
-#: t_options.h:183
-msgid "Horizontal error diffusion, reset error at line start"
-msgstr "Difusión de error horizontal, reiniciar error al comienzo de línea"
-
-#: t_options.h:184
-msgid "Ordered 2D color dithering"
-msgstr "Suavizado de color 2D ordenado"
-
-#: t_options.h:190
-msgid "Floating point depth buffer"
-msgstr "Búfer de profundidad en coma flotante"
-
-#: t_options.h:195
-msgid "A post-processing filter to cel-shade the output"
-msgstr "Un filtro de postprocesamiento para aplicar cel shading a la salida"
-
-#: t_options.h:200
-msgid "A post-processing filter to remove the red channel"
-msgstr "Un filtro de postprocesamiento para eliminar el canal rojo"
-
-#: t_options.h:205
-msgid "A post-processing filter to remove the green channel"
-msgstr "Un filtro de postprocesamiento para eliminar el canal verde"
-
-#: t_options.h:210
-msgid "A post-processing filter to remove the blue channel"
-msgstr "Un filtro de postprocesamiento para eliminar el canal azul"
-
-#: t_options.h:215
-msgid ""
-"Morphological anti-aliasing based on Jimenez\\' MLAA. 0 to disable, 8 for "
-"default quality"
-msgstr ""
-"Antialiasing morfológico basado en el MLAA de Jimenez. 0 para deshabilitar, "
-"8 para calidad por defecto"
-
-#: t_options.h:220
-msgid ""
-"Morphological anti-aliasing based on Jimenez\\' MLAA. 0 to disable, 8 for "
-"default quality. Color version, usable with 2d GL apps"
-msgstr ""
-"Antialiasing morfológico basado en el MLAA de Jimenez. 0 para deshabilitar, "
-"8 para calidad por defecto. Versión en color, usable con aplicaciones GL 2D"
-
-#: t_options.h:230
-msgid "Performance"
-msgstr "Rendimiento"
-
-#: t_options.h:238
-msgid "TCL mode (Transformation, Clipping, Lighting)"
-msgstr "Modo TCL (Transformación, Recorte, Iluminación)"
-
-#: t_options.h:239
-msgid "Use software TCL pipeline"
-msgstr "Usar tubería TCL por software"
-
-#: t_options.h:240
-msgid "Use hardware TCL as first TCL pipeline stage"
-msgstr "Usar TCL por hardware en la primera fase de la tubería TCL"
-
-#: t_options.h:241
-msgid "Bypass the TCL pipeline"
-msgstr "Pasar por alto la tubería TCL"
-
-#: t_options.h:242
-msgid ""
-"Bypass the TCL pipeline with state-based machine code generated on-the-fly"
-msgstr ""
-"Pasar por alto la tubería TCL con código máquina basado en estados, generado "
-"al vuelo"
-
-#: t_options.h:251
-msgid "Method to limit rendering latency"
-msgstr "Método para limitar la latencia de renderización"
-
-#: t_options.h:252
-msgid "Busy waiting for the graphics hardware"
-msgstr "Esperar activamente al hardware gráfico"
-
-#: t_options.h:253
-msgid "Sleep for brief intervals while waiting for the graphics hardware"
-msgstr "Dormir en intervalos cortos mientras se espera al hardware gráfico"
-
-#: t_options.h:254
-msgid "Let the graphics hardware emit a software interrupt and sleep"
-msgstr ""
-"Permitir que el hardware gráfico emita una interrupción de software y duerma"
-
-#: t_options.h:264
-msgid "Synchronization with vertical refresh (swap intervals)"
-msgstr "Sincronización con el refresco vertical (intervalos de intercambio)"
-
-#: t_options.h:265
-msgid "Never synchronize with vertical refresh, ignore application's choice"
-msgstr ""
-"No sincronizar nunca con el refresco vertical, ignorar la elección de la "
-"aplicación"
-
-#: t_options.h:266
-msgid "Initial swap interval 0, obey application's choice"
-msgstr ""
-"Intervalo de intercambio inicial 0, obedecer la elección de la aplicación"
-
-#: t_options.h:267
-msgid "Initial swap interval 1, obey application's choice"
-msgstr ""
-"Intervalo de intercambio inicial 1, obedecer la elección de la aplicación"
-
-#: t_options.h:268
-msgid ""
-"Always synchronize with vertical refresh, application chooses the minimum "
-"swap interval"
-msgstr ""
-"Sincronizar siempre con el refresco vertical, la aplicación elige el "
-"intervalo de intercambio mínimo"
-
-#: t_options.h:276
-msgid "Use HyperZ to boost performance"
-msgstr "Usar HyperZ para potenciar rendimiento"
-
-#: t_options.h:281
-msgid "Number of texture units used"
-msgstr "Número de unidades de textura usadas"
-
-#: t_options.h:286
-msgid "Texture filtering quality vs. speed, AKA “brilinear” texture filtering"
-msgstr ""
-"Calidad de filtrado de textura vs. velocidad, alias filtrado \"brilinear\" "
-"de textura"
-
-#: t_options.h:294
-msgid "Used types of texture memory"
-msgstr "Tipos de memoria de textura usados"
-
-#: t_options.h:295
-msgid "All available memory"
-msgstr "Toda la memoria disponible"
-
-#: t_options.h:296
-msgid "Only card memory (if available)"
-msgstr "Solo memoria de tarjeta (si está disponible)"
-
-#: t_options.h:297
-msgid "Only GART (AGP/PCIE) memory (if available)"
-msgstr "Solo memoria GART (AGP/PCIE) (si está disponible)"
-
-#: t_options.h:309
-msgid "Features that are not hardware-accelerated"
-msgstr "Características no aceleradas por hardware"
-
-#: t_options.h:313
-msgid "Enable extension GL_ARB_vertex_program"
-msgstr "Habilitar la extensión GL_ARB_vertex_program"
-
-#: t_options.h:323
-msgid "Miscellaneous"
-msgstr "Misceláneos"
-
-#: t_options.h:327
-msgid "Create all visuals with a depth buffer"
-msgstr "Crear todos los visuales con búfer de profundidad"
-
-#: t_options.h:337
-msgid "Initialization"
-msgstr "Inicialización"
-
-#: t_options.h:341
-msgid "Define the graphic device to use if possible"
-msgstr "Define el dispositivo de gráficos que usar si es posible"
-
-#: t_options.h:350
-msgid "Gallium Nine"
-msgstr "Gallium Nine"
-
-#: t_options.h:354
-msgid ""
-"Define the throttling value. -1 for no throttling, -2 for default (usually "
-"2), 0 for glfinish behaviour"
-msgstr ""
-"Define el valor de regulación. -1 para no regular, -2 para el por defecto "
-"(generalmente 2), 0 para el comportamiento de glfinish"
-
-#: t_options.h:359
-msgid "Use an additional thread to submit buffers."
-msgstr "Usar un hilo adicional para entregar los búfer."
diff --git a/src/mesa/drivers/dri/common/xmlpool/fr.po b/src/mesa/drivers/dri/common/xmlpool/fr.po
deleted file mode 100644 (file)
index fa06965..0000000
+++ /dev/null
@@ -1,310 +0,0 @@
-# French translations for DRI driver options.
-# Copyright (C) 2005 Stephane Marchesin
-# This file is distributed under the same license as the Mesa package.
-# Stephane Marchesin <marchesin@icps.u-strasbg.fr>, 2005.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesa 6.3\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-09-25 22:29-0600\n"
-"PO-Revision-Date: 2005-04-11 01:34+0200\n"
-"Last-Translator: Stephane Marchesin <marchesin@icps.u-strasbg.fr>\n"
-"Language-Team: French <fr@li.org>\n"
-"Language: fr\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: t_options.h:56
-msgid "Debugging"
-msgstr "Debogage"
-
-#: t_options.h:60
-msgid "Disable 3D acceleration"
-msgstr "Désactiver l'accélération 3D"
-
-#: t_options.h:65
-msgid "Show performance boxes"
-msgstr "Afficher les boîtes de performance"
-
-#: t_options.h:70
-msgid "Enable flushing batchbuffer after each draw call"
-msgstr ""
-
-#: t_options.h:75
-msgid "Enable flushing GPU caches with each draw call"
-msgstr ""
-
-#: t_options.h:80
-msgid "Disable throttling on first batch after flush"
-msgstr ""
-
-#: t_options.h:85
-msgid "Force GLSL extension default behavior to 'warn'"
-msgstr ""
-
-#: t_options.h:90
-msgid "Disable dual source blending"
-msgstr ""
-
-#: t_options.h:95
-msgid "Disable backslash-based line continuations in GLSL source"
-msgstr ""
-
-#: t_options.h:100
-msgid "Disable GL_ARB_shader_bit_encoding"
-msgstr ""
-
-#: t_options.h:105
-msgid ""
-"Force a default GLSL version for shaders that lack an explicit #version line"
-msgstr ""
-
-#: t_options.h:110
-msgid "Allow GLSL #extension directives in the middle of shaders"
-msgstr ""
-
-#: t_options.h:120
-msgid "Image Quality"
-msgstr "Qualité d'image"
-
-#: t_options.h:133
-msgid "Texture color depth"
-msgstr "Profondeur de texture"
-
-#: t_options.h:134
-msgid "Prefer frame buffer color depth"
-msgstr "Profondeur de couleur"
-
-#: t_options.h:135
-msgid "Prefer 32 bits per texel"
-msgstr "Préférer 32 bits par texel"
-
-#: t_options.h:136
-msgid "Prefer 16 bits per texel"
-msgstr "Prérérer 16 bits par texel"
-
-#: t_options.h:137
-msgid "Force 16 bits per texel"
-msgstr "Forcer 16 bits par texel"
-
-#: t_options.h:143
-msgid "Initial maximum value for anisotropic texture filtering"
-msgstr "Valeur maximale initiale pour le filtrage anisotropique de texture"
-
-#: t_options.h:148
-msgid "Forbid negative texture LOD bias"
-msgstr "Interdire le LOD bias negatif"
-
-#: t_options.h:153
-msgid ""
-"Enable S3TC texture compression even if software support is not available"
-msgstr ""
-"Activer la compression de texture S3TC même si le support logiciel est absent"
-
-#: t_options.h:160
-msgid "Initial color reduction method"
-msgstr "Technique de réduction de couleurs"
-
-#: t_options.h:161
-msgid "Round colors"
-msgstr "Arrondir les valeurs de couleur"
-
-#: t_options.h:162
-msgid "Dither colors"
-msgstr "Tramer les couleurs"
-
-#: t_options.h:170
-msgid "Color rounding method"
-msgstr "Méthode d'arrondi des couleurs"
-
-#: t_options.h:171
-msgid "Round color components downward"
-msgstr "Arrondi à l'inférieur"
-
-#: t_options.h:172
-msgid "Round to nearest color"
-msgstr "Arrondi au plus proche"
-
-#: t_options.h:181
-msgid "Color dithering method"
-msgstr "Méthode de tramage"
-
-#: t_options.h:182
-msgid "Horizontal error diffusion"
-msgstr "Diffusion d'erreur horizontale"
-
-#: t_options.h:183
-msgid "Horizontal error diffusion, reset error at line start"
-msgstr "Diffusion d'erreur horizontale, réinitialisé pour chaque ligne"
-
-#: t_options.h:184
-msgid "Ordered 2D color dithering"
-msgstr "Tramage ordonné des couleurs"
-
-#: t_options.h:190
-msgid "Floating point depth buffer"
-msgstr "Z-buffer en virgule flottante"
-
-#: t_options.h:195
-msgid "A post-processing filter to cel-shade the output"
-msgstr ""
-
-#: t_options.h:200
-msgid "A post-processing filter to remove the red channel"
-msgstr ""
-
-#: t_options.h:205
-msgid "A post-processing filter to remove the green channel"
-msgstr ""
-
-#: t_options.h:210
-msgid "A post-processing filter to remove the blue channel"
-msgstr ""
-
-#: t_options.h:215
-msgid ""
-"Morphological anti-aliasing based on Jimenez\\' MLAA. 0 to disable, 8 for "
-"default quality"
-msgstr ""
-
-#: t_options.h:220
-msgid ""
-"Morphological anti-aliasing based on Jimenez\\' MLAA. 0 to disable, 8 for "
-"default quality. Color version, usable with 2d GL apps"
-msgstr ""
-
-#: t_options.h:230
-msgid "Performance"
-msgstr "Performance"
-
-#: t_options.h:238
-msgid "TCL mode (Transformation, Clipping, Lighting)"
-msgstr "Mode de TCL (Transformation, Clipping, Eclairage)"
-
-#: t_options.h:239
-msgid "Use software TCL pipeline"
-msgstr "Utiliser un pipeline TCL logiciel"
-
-#: t_options.h:240
-msgid "Use hardware TCL as first TCL pipeline stage"
-msgstr "Utiliser le TCL matériel pour le premier niveau de pipeline"
-
-#: t_options.h:241
-msgid "Bypass the TCL pipeline"
-msgstr "Court-circuiter le pipeline TCL"
-
-#: t_options.h:242
-msgid ""
-"Bypass the TCL pipeline with state-based machine code generated on-the-fly"
-msgstr ""
-"Court-circuiter le pipeline TCL par une machine à états qui génère le codede "
-"TCL à la volée"
-
-#: t_options.h:251
-msgid "Method to limit rendering latency"
-msgstr "Méthode d'attente de la carte graphique"
-
-#: t_options.h:252
-msgid "Busy waiting for the graphics hardware"
-msgstr "Attente active de la carte graphique"
-
-#: t_options.h:253
-msgid "Sleep for brief intervals while waiting for the graphics hardware"
-msgstr "Attente utilisant usleep()"
-
-#: t_options.h:254
-msgid "Let the graphics hardware emit a software interrupt and sleep"
-msgstr "Utiliser les interruptions"
-
-#: t_options.h:264
-msgid "Synchronization with vertical refresh (swap intervals)"
-msgstr "Synchronisation de l'affichage avec le balayage vertical"
-
-#: t_options.h:265
-msgid "Never synchronize with vertical refresh, ignore application's choice"
-msgstr ""
-"Ne jamais synchroniser avec le balayage vertical, ignorer le choix de "
-"l'application"
-
-#: t_options.h:266
-msgid "Initial swap interval 0, obey application's choice"
-msgstr ""
-"Ne pas synchroniser avec le balayage vertical par défaut, mais obéir au "
-"choix de l'application"
-
-#: t_options.h:267
-msgid "Initial swap interval 1, obey application's choice"
-msgstr ""
-"Synchroniser avec le balayage vertical par défaut, mais obéir au choix de "
-"l'application"
-
-#: t_options.h:268
-msgid ""
-"Always synchronize with vertical refresh, application chooses the minimum "
-"swap interval"
-msgstr ""
-"Toujours synchroniser avec le balayage vertical, l'application choisit "
-"l'intervalle minimal"
-
-#: t_options.h:276
-msgid "Use HyperZ to boost performance"
-msgstr "Utiliser le HyperZ pour améliorer les performances"
-
-#: t_options.h:281
-msgid "Number of texture units used"
-msgstr "Nombre d'unités de texture"
-
-#: t_options.h:286
-msgid "Texture filtering quality vs. speed, AKA “brilinear” texture filtering"
-msgstr ""
-"Qualité/performance du filtrage trilinéaire de texture (filtrage brilinéaire)"
-
-#: t_options.h:294
-msgid "Used types of texture memory"
-msgstr "Types de mémoire de texture"
-
-#: t_options.h:295
-msgid "All available memory"
-msgstr "Utiliser toute la mémoire disponible"
-
-#: t_options.h:296
-msgid "Only card memory (if available)"
-msgstr "Utiliser uniquement la mémoire graphique (si disponible)"
-
-#: t_options.h:297
-msgid "Only GART (AGP/PCIE) memory (if available)"
-msgstr "Utiliser uniquement la mémoire GART (AGP/PCIE) (si disponible)"
-
-#: t_options.h:309
-msgid "Features that are not hardware-accelerated"
-msgstr "Fonctionnalités ne bénéficiant pas d'une accélération matérielle"
-
-#: t_options.h:313
-msgid "Enable extension GL_ARB_vertex_program"
-msgstr "Activer l'extension GL_ARB_vertex_program"
-
-#: t_options.h:323
-msgid "Miscellaneous"
-msgstr ""
-
-#: t_options.h:327
-msgid "Create all visuals with a depth buffer"
-msgstr ""
-
-#: t_options.h:337
-msgid "Initialization"
-msgstr ""
-
-#: t_options.h:341
-msgid "Define the graphic device to use if possible"
-msgstr ""
-
-#~ msgid ""
-#~ "Enable hack to allow larger textures with texture compression on radeon/"
-#~ "r200"
-#~ msgstr ""
-#~ "Activer le hack permettant l'utilisation de textures de grande taille "
-#~ "avec la compression de textures sur radeon/r200"
diff --git a/src/mesa/drivers/dri/common/xmlpool/gen_xmlpool.py b/src/mesa/drivers/dri/common/xmlpool/gen_xmlpool.py
deleted file mode 100644 (file)
index eb68a65..0000000
+++ /dev/null
@@ -1,203 +0,0 @@
-
-#
-# 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[3:]
-
-# Escape special characters in C strings
-def escapeCString (s):
-    escapeSeqs = {'\a' : '\\a', '\b' : '\\b', '\f' : '\\f', '\n' : '\\n',
-                  '\r' : '\\r', '\t' : '\\t', '\v' : '\\v', '\\' : '\\\\'}
-    # " -> '' is a hack. Quotes (") aren't possible in XML attributes.
-    # Better use Unicode characters for typographic quotes in option
-    # descriptions and translations.
-    i = 0
-    r = ''
-    while i < len(s):
-        # Special case: escape double quote with \u201c or \u201d, depending
-        # on whether it's an open or close quote. This is needed because plain
-        # double quotes are not possible in XML attributes.
-        if s[i] == '"':
-            if i == len(s)-1 or s[i+1].isspace():
-                # close quote
-                q = u'\u201c'
-            else:
-                # open quote
-                q = u'\u201d'
-            r = r + q
-        elif escapeSeqs.has_key(s[i]):
-            r = r + escapeSeqs[s[i]]
-        else:
-            r = r + s[i]
-        i = i + 1
-    return r
-
-# Expand escape sequences in C strings (needed for gettext lookup)
-def expandCString (s):
-    escapeSeqs = {'a' : '\a', 'b' : '\b', 'f' : '\f', 'n' : '\n',
-                  'r' : '\r', 't' : '\t', 'v' : '\v',
-                  '"' : '"', '\\' : '\\'}
-    i = 0
-    escape = False
-    hexa = False
-    octa = False
-    num = 0
-    digits = 0
-    r = ''
-    while i < len(s):
-        if not escape:
-            if s[i] == '\\':
-                escape = True
-            else:
-                r = r + s[i]
-        elif hexa:
-            if (s[i] >= '0' and s[i] <= '9') or \
-               (s[i] >= 'a' and s[i] <= 'f') or \
-               (s[i] >= 'A' and s[i] <= 'F'):
-                num = num * 16 + int(s[i],16)
-                digits = digits + 1
-            else:
-                digits = 2
-            if digits >= 2:
-                hexa = False
-                escape = False
-                r = r + chr(num)
-        elif octa:
-            if s[i] >= '0' and s[i] <= '7':
-                num = num * 8 + int(s[i],8)
-                digits = digits + 1
-            else:
-                digits = 3
-            if digits >= 3:
-                octa = False
-                escape = False
-                r = r + chr(num)
-        else:
-            if escapeSeqs.has_key(s[i]):
-                r = r + escapeSeqs[s[i]]
-                escape = False
-            elif s[i] >= '0' and s[i] <= '7':
-                octa = True
-                num = int(s[i],8)
-                if num <= 3:
-                    digits = 1
-                else:
-                    digits = 2
-            elif s[i] == 'x' or s[i] == 'X':
-                hexa = True
-                num = 0
-                digits = 0
-            else:
-                r = r + s[i]
-                escape = False
-        i = i + 1
-    return r
-
-# Expand matches. The first match is always a DESC or DESC_BEGIN match.
-# Subsequent matches are ENUM matches.
-#
-# DESC, DESC_BEGIN format: \1 \2=<lang> \3 \4=gettext(" \5=<text> \6=") \7
-# ENUM format:             \1 \2=gettext(" \3=<text> \4=") \5
-def expandMatches (matches, translations, end=None):
-    assert len(matches) > 0
-    nTranslations = len(translations)
-    i = 0
-    # Expand the description+enums for all translations
-    for lang,trans in translations:
-        i = i + 1
-        # Make sure that all but the last line of a simple description
-        # are extended with a backslash.
-        suffix = ''
-        if len(matches) == 1 and i < len(translations) and \
-               not matches[0].expand (r'\7').endswith('\\'):
-            suffix = ' \\'
-        # Expand the description line. Need to use ugettext in order to allow
-        # non-ascii unicode chars in the original English descriptions.
-        text = escapeCString (trans.ugettext (unicode (expandCString (
-            matches[0].expand (r'\5')), "utf-8"))).encode("utf-8")
-        print matches[0].expand (r'\1' + lang + r'\3"' + text + r'"\7') + suffix
-        # Expand any subsequent enum lines
-        for match in matches[1:]:
-            text = escapeCString (trans.ugettext (unicode (expandCString (
-                match.expand (r'\3')), "utf-8"))).encode("utf-8")
-            print match.expand (r'\1"' + text + r'"\5')
-
-        # Expand description end
-        if end:
-            print end,
-
-# Compile a list of translation classes to all supported languages.
-# The first translation is always a NullTranslations.
-translations = [("en", gettext.NullTranslations())]
-for lang in languages:
-    try:
-        trans = gettext.translation ("options", localedir, [lang])
-    except IOError:
-        sys.stderr.write ("Warning: language '%s' not found.\n" % lang)
-        continue
-    translations.append ((lang, trans))
-
-# Regular expressions:
-reLibintl_h  = re.compile (r'#\s*include\s*<libintl.h>')
-reDESC       = re.compile (r'(\s*DRI_CONF_DESC\s*\(\s*)([a-z]+)(\s*,\s*)(gettext\s*\(\s*")(.*)("\s*\))(\s*\)[ \t]*\\?)$')
-reDESC_BEGIN = re.compile (r'(\s*DRI_CONF_DESC_BEGIN\s*\(\s*)([a-z]+)(\s*,\s*)(gettext\s*\(\s*")(.*)("\s*\))(\s*\)[ \t]*\\?)$')
-reENUM       = re.compile (r'(\s*DRI_CONF_ENUM\s*\([^,]+,\s*)(gettext\s*\(\s*")(.*)("\s*\))(\s*\)[ \t]*\\?)$')
-reDESC_END   = re.compile (r'\s*DRI_CONF_DESC_END')
-
-# Print a header
-print \
-"/***********************************************************************\n" \
-" ***        THIS FILE IS GENERATED AUTOMATICALLY. DON'T EDIT!        ***\n" \
-" ***********************************************************************/"
-
-# Process the options template and generate options.h with all
-# translations.
-template = file (template_header_path, "r")
-descMatches = []
-for line in template:
-    if len(descMatches) > 0:
-        matchENUM     = reENUM    .match (line)
-        matchDESC_END = reDESC_END.match (line)
-        if matchENUM:
-            descMatches.append (matchENUM)
-        elif matchDESC_END:
-            expandMatches (descMatches, translations, line)
-            descMatches = []
-        else:
-            sys.stderr.write (
-                "Warning: unexpected line inside description dropped:\n%s\n" \
-                % line)
-        continue
-    if reLibintl_h.search (line):
-        # Ignore (comment out) #include <libintl.h>
-        print "/* %s * commented out by gen_xmlpool.py */" % line
-        continue
-    matchDESC       = reDESC      .match (line)
-    matchDESC_BEGIN = reDESC_BEGIN.match (line)
-    if matchDESC:
-        assert len(descMatches) == 0
-        expandMatches ([matchDESC], translations)
-    elif matchDESC_BEGIN:
-        assert len(descMatches) == 0
-        descMatches = [matchDESC_BEGIN]
-    else:
-        print line,
-
-if len(descMatches) > 0:
-    sys.stderr.write ("Warning: unterminated description at end of file.\n")
-    expandMatches (descMatches, translations)
diff --git a/src/mesa/drivers/dri/common/xmlpool/nl.po b/src/mesa/drivers/dri/common/xmlpool/nl.po
deleted file mode 100644 (file)
index 86cb6e9..0000000
+++ /dev/null
@@ -1,311 +0,0 @@
-# Dutch translations for PACKAGE package.
-# Copyright (C) 2005 THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-#  <manfred.stienstra@dwerg.net>, 2005.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-09-25 22:29-0600\n"
-"PO-Revision-Date: 2005-04-12 20:09+0200\n"
-"Last-Translator:  Manfred Stienstra <manfred.stienstra@dwerg.net>\n"
-"Language-Team: Dutch <vertaling@nl.linux.org>\n"
-"Language: nl\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: t_options.h:56
-msgid "Debugging"
-msgstr "Debuggen"
-
-#: t_options.h:60
-msgid "Disable 3D acceleration"
-msgstr "3D versnelling uitschakelen"
-
-#: t_options.h:65
-msgid "Show performance boxes"
-msgstr "Laat prestatie boxjes zien"
-
-#: t_options.h:70
-msgid "Enable flushing batchbuffer after each draw call"
-msgstr ""
-
-#: t_options.h:75
-msgid "Enable flushing GPU caches with each draw call"
-msgstr ""
-
-#: t_options.h:80
-msgid "Disable throttling on first batch after flush"
-msgstr ""
-
-#: t_options.h:85
-msgid "Force GLSL extension default behavior to 'warn'"
-msgstr ""
-
-#: t_options.h:90
-msgid "Disable dual source blending"
-msgstr ""
-
-#: t_options.h:95
-msgid "Disable backslash-based line continuations in GLSL source"
-msgstr ""
-
-#: t_options.h:100
-msgid "Disable GL_ARB_shader_bit_encoding"
-msgstr ""
-
-#: t_options.h:105
-msgid ""
-"Force a default GLSL version for shaders that lack an explicit #version line"
-msgstr ""
-
-#: t_options.h:110
-msgid "Allow GLSL #extension directives in the middle of shaders"
-msgstr ""
-
-#: t_options.h:120
-msgid "Image Quality"
-msgstr "Beeldkwaliteit"
-
-#: t_options.h:133
-msgid "Texture color depth"
-msgstr "Textuurkleurendiepte"
-
-#: t_options.h:134
-msgid "Prefer frame buffer color depth"
-msgstr "Prefereer kaderbufferkleurdiepte"
-
-#: t_options.h:135
-msgid "Prefer 32 bits per texel"
-msgstr "Prefereer 32 bits per texel"
-
-#: t_options.h:136
-msgid "Prefer 16 bits per texel"
-msgstr "Prefereer 16 bits per texel"
-
-#: t_options.h:137
-msgid "Force 16 bits per texel"
-msgstr "Dwing 16 bits per texel af"
-
-#: t_options.h:143
-msgid "Initial maximum value for anisotropic texture filtering"
-msgstr "Initïele maximum waarde voor anisotrophische textuur filtering"
-
-#: t_options.h:148
-msgid "Forbid negative texture LOD bias"
-msgstr "Verbied negatief niveau detailonderscheid (LOD) van texturen"
-
-#: t_options.h:153
-msgid ""
-"Enable S3TC texture compression even if software support is not available"
-msgstr ""
-"Schakel S3TC textuurcompressie in, zelfs als softwareondersteuning niet "
-"aanwezig is"
-
-#: t_options.h:160
-msgid "Initial color reduction method"
-msgstr "Initïele kleurreductie methode"
-
-#: t_options.h:161
-msgid "Round colors"
-msgstr "Rond kleuren af"
-
-#: t_options.h:162
-msgid "Dither colors"
-msgstr "Rasteriseer kleuren"
-
-#: t_options.h:170
-msgid "Color rounding method"
-msgstr "Kleurafrondingmethode"
-
-#: t_options.h:171
-msgid "Round color components downward"
-msgstr "Rond kleurencomponenten af naar beneden"
-
-#: t_options.h:172
-msgid "Round to nearest color"
-msgstr "Rond af naar dichtsbijzijnde kleur"
-
-#: t_options.h:181
-msgid "Color dithering method"
-msgstr "Kleurrasteriseringsmethode"
-
-#: t_options.h:182
-msgid "Horizontal error diffusion"
-msgstr "Horizontale foutdiffusie"
-
-#: t_options.h:183
-msgid "Horizontal error diffusion, reset error at line start"
-msgstr "Horizontale foutdiffusie, zet fout bij lijnbegin terug"
-
-#: t_options.h:184
-msgid "Ordered 2D color dithering"
-msgstr "Geordende 2D kleurrasterisering"
-
-#: t_options.h:190
-msgid "Floating point depth buffer"
-msgstr "Dieptebuffer als commagetal"
-
-#: t_options.h:195
-msgid "A post-processing filter to cel-shade the output"
-msgstr ""
-
-#: t_options.h:200
-msgid "A post-processing filter to remove the red channel"
-msgstr ""
-
-#: t_options.h:205
-msgid "A post-processing filter to remove the green channel"
-msgstr ""
-
-#: t_options.h:210
-msgid "A post-processing filter to remove the blue channel"
-msgstr ""
-
-#: t_options.h:215
-msgid ""
-"Morphological anti-aliasing based on Jimenez\\' MLAA. 0 to disable, 8 for "
-"default quality"
-msgstr ""
-
-#: t_options.h:220
-msgid ""
-"Morphological anti-aliasing based on Jimenez\\' MLAA. 0 to disable, 8 for "
-"default quality. Color version, usable with 2d GL apps"
-msgstr ""
-
-#: t_options.h:230
-msgid "Performance"
-msgstr "Prestatie"
-
-#: t_options.h:238
-msgid "TCL mode (Transformation, Clipping, Lighting)"
-msgstr "TCL-modus (Transformatie, Clipping, Licht)"
-
-#: t_options.h:239
-msgid "Use software TCL pipeline"
-msgstr "Gebruik software TCL pijpleiding"
-
-#: t_options.h:240
-msgid "Use hardware TCL as first TCL pipeline stage"
-msgstr "Gebruik hardware TCL as eerste TCL pijpleiding trap"
-
-#: t_options.h:241
-msgid "Bypass the TCL pipeline"
-msgstr "Omzeil de TCL pijpleiding"
-
-#: t_options.h:242
-msgid ""
-"Bypass the TCL pipeline with state-based machine code generated on-the-fly"
-msgstr ""
-"Omzeil de TCL pijpleiding met staatgebaseerde machinecode die tijdens "
-"executie gegenereerd wordt"
-
-#: t_options.h:251
-msgid "Method to limit rendering latency"
-msgstr "Methode om beeldopbouwvertraging te onderdrukken"
-
-#: t_options.h:252
-msgid "Busy waiting for the graphics hardware"
-msgstr "Actief wachten voor de grafische hardware"
-
-#: t_options.h:253
-msgid "Sleep for brief intervals while waiting for the graphics hardware"
-msgstr ""
-"Slaap voor korte intervallen tijdens het wachten op de grafische hardware"
-
-#: t_options.h:254
-msgid "Let the graphics hardware emit a software interrupt and sleep"
-msgstr ""
-"Laat de grafische hardware een software onderbreking uitzenden en in slaap "
-"vallen"
-
-#: t_options.h:264
-msgid "Synchronization with vertical refresh (swap intervals)"
-msgstr "Synchronisatie met verticale verversing (interval omwisselen)"
-
-#: t_options.h:265
-msgid "Never synchronize with vertical refresh, ignore application's choice"
-msgstr ""
-"Nooit synchroniseren met verticale verversing, negeer de keuze van de "
-"applicatie"
-
-#: t_options.h:266
-msgid "Initial swap interval 0, obey application's choice"
-msgstr "Initïeel omwisselingsinterval 0, honoreer de keuze van de applicatie"
-
-#: t_options.h:267
-msgid "Initial swap interval 1, obey application's choice"
-msgstr "Initïeel omwisselingsinterval 1, honoreer de keuze van de applicatie"
-
-#: t_options.h:268
-msgid ""
-"Always synchronize with vertical refresh, application chooses the minimum "
-"swap interval"
-msgstr ""
-"Synchroniseer altijd met verticale verversing, de applicatie kiest het "
-"minimum omwisselingsinterval"
-
-#: t_options.h:276
-msgid "Use HyperZ to boost performance"
-msgstr "Gebruik HyperZ om de prestaties te verbeteren"
-
-#: t_options.h:281
-msgid "Number of texture units used"
-msgstr "Aantal textuureenheden in gebruik"
-
-#: t_options.h:286
-msgid "Texture filtering quality vs. speed, AKA “brilinear” texture filtering"
-msgstr ""
-"Textuurfilterkwaliteit versus -snelheid, ookwel bekend als “brilineaire” "
-"textuurfiltering"
-
-#: t_options.h:294
-msgid "Used types of texture memory"
-msgstr "Gebruikte soorten textuurgeheugen"
-
-#: t_options.h:295
-msgid "All available memory"
-msgstr "Al het beschikbaar geheugen"
-
-#: t_options.h:296
-msgid "Only card memory (if available)"
-msgstr "Alleen geheugen op de kaart (als het aanwezig is)"
-
-#: t_options.h:297
-msgid "Only GART (AGP/PCIE) memory (if available)"
-msgstr "Alleen GART (AGP/PCIE) geheugen (als het aanwezig is)"
-
-#: t_options.h:309
-msgid "Features that are not hardware-accelerated"
-msgstr "Eigenschappen die niet hardwareversneld zijn"
-
-#: t_options.h:313
-msgid "Enable extension GL_ARB_vertex_program"
-msgstr "Zet uitbreiding GL_ARB_vertex_program aan"
-
-#: t_options.h:323
-msgid "Miscellaneous"
-msgstr ""
-
-#: t_options.h:327
-msgid "Create all visuals with a depth buffer"
-msgstr ""
-
-#: t_options.h:337
-msgid "Initialization"
-msgstr ""
-
-#: t_options.h:341
-msgid "Define the graphic device to use if possible"
-msgstr ""
-
-#~ msgid ""
-#~ "Enable hack to allow larger textures with texture compression on radeon/"
-#~ "r200"
-#~ msgstr ""
-#~ "Schakel hack in om met textuurcompressie grotere texturen toe te staan op "
-#~ "een radeon/r200"
diff --git a/src/mesa/drivers/dri/common/xmlpool/sv.po b/src/mesa/drivers/dri/common/xmlpool/sv.po
deleted file mode 100644 (file)
index d8d7353..0000000
+++ /dev/null
@@ -1,309 +0,0 @@
-# Swedish translation of DRI driver options.
-# Copyright (C) Free Software Foundation, Inc.
-# This file is distributed under the same license as the Mesa package.
-# Daniel Nylander <po@danielnylander.se>, 2006.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Mesa DRI\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-09-25 22:29-0600\n"
-"PO-Revision-Date: 2006-09-18 10:56+0100\n"
-"Last-Translator: Daniel Nylander <po@danielnylander.se>\n"
-"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
-"Language: sv\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: t_options.h:56
-msgid "Debugging"
-msgstr "Felsökning"
-
-#: t_options.h:60
-msgid "Disable 3D acceleration"
-msgstr "Inaktivera 3D-accelerering"
-
-#: t_options.h:65
-msgid "Show performance boxes"
-msgstr "Visa prestandarutor"
-
-#: t_options.h:70
-msgid "Enable flushing batchbuffer after each draw call"
-msgstr ""
-
-#: t_options.h:75
-msgid "Enable flushing GPU caches with each draw call"
-msgstr ""
-
-#: t_options.h:80
-msgid "Disable throttling on first batch after flush"
-msgstr ""
-
-#: t_options.h:85
-msgid "Force GLSL extension default behavior to 'warn'"
-msgstr ""
-
-#: t_options.h:90
-msgid "Disable dual source blending"
-msgstr ""
-
-#: t_options.h:95
-msgid "Disable backslash-based line continuations in GLSL source"
-msgstr ""
-
-#: t_options.h:100
-msgid "Disable GL_ARB_shader_bit_encoding"
-msgstr ""
-
-#: t_options.h:105
-msgid ""
-"Force a default GLSL version for shaders that lack an explicit #version line"
-msgstr ""
-
-#: t_options.h:110
-msgid "Allow GLSL #extension directives in the middle of shaders"
-msgstr ""
-
-#: t_options.h:120
-msgid "Image Quality"
-msgstr "Bildkvalitet"
-
-#: t_options.h:133
-msgid "Texture color depth"
-msgstr "Färgdjup för texturer"
-
-#: t_options.h:134
-msgid "Prefer frame buffer color depth"
-msgstr "Föredra färgdjupet för framebuffer"
-
-#: t_options.h:135
-msgid "Prefer 32 bits per texel"
-msgstr "Föredra 32 bitar per texel"
-
-#: t_options.h:136
-msgid "Prefer 16 bits per texel"
-msgstr "Föredra 16 bitar per texel"
-
-#: t_options.h:137
-msgid "Force 16 bits per texel"
-msgstr "Tvinga 16 bitar per texel"
-
-#: t_options.h:143
-msgid "Initial maximum value for anisotropic texture filtering"
-msgstr "Initialt maximalt värde för anisotropisk texturfiltrering"
-
-#: t_options.h:148
-msgid "Forbid negative texture LOD bias"
-msgstr "Förbjud negativ LOD-kompensation för texturer"
-
-#: t_options.h:153
-msgid ""
-"Enable S3TC texture compression even if software support is not available"
-msgstr "Aktivera S3TC-texturkomprimering även om programvarustöd saknas"
-
-#: t_options.h:160
-msgid "Initial color reduction method"
-msgstr "Initial färgminskningsmetod"
-
-#: t_options.h:161
-msgid "Round colors"
-msgstr "Avrunda färger"
-
-#: t_options.h:162
-msgid "Dither colors"
-msgstr "Utjämna färger"
-
-#: t_options.h:170
-msgid "Color rounding method"
-msgstr "Färgavrundningsmetod"
-
-#: t_options.h:171
-msgid "Round color components downward"
-msgstr "Avrunda färdkomponenter nedåt"
-
-#: t_options.h:172
-msgid "Round to nearest color"
-msgstr "Avrunda till närmsta färg"
-
-#: t_options.h:181
-msgid "Color dithering method"
-msgstr "Färgutjämningsmetod"
-
-#: t_options.h:182
-msgid "Horizontal error diffusion"
-msgstr "Horisontell felspridning"
-
-#: t_options.h:183
-msgid "Horizontal error diffusion, reset error at line start"
-msgstr "Horisontell felspridning, återställ fel vid radbörjan"
-
-#: t_options.h:184
-msgid "Ordered 2D color dithering"
-msgstr "Ordnad 2D-färgutjämning"
-
-#: t_options.h:190
-msgid "Floating point depth buffer"
-msgstr "Buffert för flytande punktdjup"
-
-#: t_options.h:195
-msgid "A post-processing filter to cel-shade the output"
-msgstr ""
-
-#: t_options.h:200
-msgid "A post-processing filter to remove the red channel"
-msgstr ""
-
-#: t_options.h:205
-msgid "A post-processing filter to remove the green channel"
-msgstr ""
-
-#: t_options.h:210
-msgid "A post-processing filter to remove the blue channel"
-msgstr ""
-
-#: t_options.h:215
-msgid ""
-"Morphological anti-aliasing based on Jimenez\\' MLAA. 0 to disable, 8 for "
-"default quality"
-msgstr ""
-
-#: t_options.h:220
-msgid ""
-"Morphological anti-aliasing based on Jimenez\\' MLAA. 0 to disable, 8 for "
-"default quality. Color version, usable with 2d GL apps"
-msgstr ""
-
-#: t_options.h:230
-msgid "Performance"
-msgstr "Prestanda"
-
-#: t_options.h:238
-msgid "TCL mode (Transformation, Clipping, Lighting)"
-msgstr "TCL-läge (Transformation, Clipping, Lighting)"
-
-#: t_options.h:239
-msgid "Use software TCL pipeline"
-msgstr "Använd programvaru-TCL-rörledning"
-
-#: t_options.h:240
-msgid "Use hardware TCL as first TCL pipeline stage"
-msgstr "Använd maskinvaru-TCL som första TCL-rörledningssteg"
-
-#: t_options.h:241
-msgid "Bypass the TCL pipeline"
-msgstr "Kringgå TCL-rörledningen"
-
-#: t_options.h:242
-msgid ""
-"Bypass the TCL pipeline with state-based machine code generated on-the-fly"
-msgstr ""
-"Kringgå TCL-rörledningen med tillståndsbaserad maskinkod som direktgenereras"
-
-#: t_options.h:251
-msgid "Method to limit rendering latency"
-msgstr "Metod för att begränsa renderingslatens"
-
-#: t_options.h:252
-msgid "Busy waiting for the graphics hardware"
-msgstr "Upptagen med att vänta på grafikhårdvaran"
-
-#: t_options.h:253
-msgid "Sleep for brief intervals while waiting for the graphics hardware"
-msgstr "Sov i korta intervall under väntan på grafikhårdvaran"
-
-#: t_options.h:254
-msgid "Let the graphics hardware emit a software interrupt and sleep"
-msgstr "Låt grafikhårdvaran sända ut ett programvaruavbrott och sov"
-
-#: t_options.h:264
-msgid "Synchronization with vertical refresh (swap intervals)"
-msgstr "Synkronisering med vertikal uppdatering (växlingsintervall)"
-
-#: t_options.h:265
-msgid "Never synchronize with vertical refresh, ignore application's choice"
-msgstr "Synkronisera aldrig med vertikal uppdatering, ignorera programmets val"
-
-#: t_options.h:266
-msgid "Initial swap interval 0, obey application's choice"
-msgstr "Initialt växlingsintervall 0, följ programmets val"
-
-#: t_options.h:267
-msgid "Initial swap interval 1, obey application's choice"
-msgstr "Initialt växlingsintervall 1, följ programmets val"
-
-#: t_options.h:268
-msgid ""
-"Always synchronize with vertical refresh, application chooses the minimum "
-"swap interval"
-msgstr ""
-"Synkronisera alltid med vertikal uppdatering, programmet väljer den minsta "
-"växlingsintervallen"
-
-#: t_options.h:276
-msgid "Use HyperZ to boost performance"
-msgstr "Använd HyperZ för att maximera prestandan"
-
-#: t_options.h:281
-msgid "Number of texture units used"
-msgstr "Antal använda texturenheter"
-
-#: t_options.h:286
-msgid "Texture filtering quality vs. speed, AKA “brilinear” texture filtering"
-msgstr ""
-"Texturfiltreringskvalitet mot hastighet, även kallad \"brilinear\"-"
-"texturfiltrering"
-
-#: t_options.h:294
-msgid "Used types of texture memory"
-msgstr "Använda typer av texturminne"
-
-#: t_options.h:295
-msgid "All available memory"
-msgstr "Allt tillgängligt minne"
-
-#: t_options.h:296
-msgid "Only card memory (if available)"
-msgstr "Endast kortminne (om tillgängligt)"
-
-#: t_options.h:297
-msgid "Only GART (AGP/PCIE) memory (if available)"
-msgstr "Endast GART-minne (AGP/PCIE) (om tillgängligt)"
-
-#: t_options.h:309
-msgid "Features that are not hardware-accelerated"
-msgstr "Funktioner som inte är hårdvaruaccelererade"
-
-#: t_options.h:313
-msgid "Enable extension GL_ARB_vertex_program"
-msgstr "Aktivera tillägget GL_ARB_vertex_program"
-
-#: t_options.h:323
-msgid "Miscellaneous"
-msgstr ""
-
-#: t_options.h:327
-msgid "Create all visuals with a depth buffer"
-msgstr ""
-
-#: t_options.h:337
-msgid "Initialization"
-msgstr ""
-
-#: t_options.h:341
-msgid "Define the graphic device to use if possible"
-msgstr ""
-
-#~ msgid "Support larger textures not guaranteed to fit into graphics memory"
-#~ msgstr ""
-#~ "Stöd för större texturer är inte garanterat att passa i grafikminnet"
-
-#~ msgid "No"
-#~ msgstr "Nej"
-
-#~ msgid "At least 1 texture must fit under worst-case assumptions"
-#~ msgstr "Åtminstone en textur måste passa för antaget sämsta förhållande"
-
-#~ msgid "Announce hardware limits"
-#~ msgstr "Annonsera hårdvarubegränsningar"
diff --git a/src/mesa/drivers/dri/common/xmlpool/t_options.h b/src/mesa/drivers/dri/common/xmlpool/t_options.h
deleted file mode 100644 (file)
index e308839..0000000
+++ /dev/null
@@ -1,431 +0,0 @@
-/*
- * 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>
-
-/*
- * 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,gettext("Debugging"))
-
-#define DRI_CONF_NO_RAST(def) \
-DRI_CONF_OPT_BEGIN_B(no_rast, def) \
-        DRI_CONF_DESC(en,gettext("Disable 3D acceleration")) \
-DRI_CONF_OPT_END
-
-#define DRI_CONF_PERFORMANCE_BOXES(def) \
-DRI_CONF_OPT_BEGIN_B(performance_boxes, def) \
-        DRI_CONF_DESC(en,gettext("Show performance boxes")) \
-DRI_CONF_OPT_END
-
-#define DRI_CONF_ALWAYS_FLUSH_BATCH(def) \
-DRI_CONF_OPT_BEGIN_B(always_flush_batch, def) \
-        DRI_CONF_DESC(en,gettext("Enable flushing batchbuffer after each draw call")) \
-DRI_CONF_OPT_END
-
-#define DRI_CONF_ALWAYS_FLUSH_CACHE(def) \
-DRI_CONF_OPT_BEGIN_B(always_flush_cache, def) \
-        DRI_CONF_DESC(en,gettext("Enable flushing GPU caches with each draw call")) \
-DRI_CONF_OPT_END
-
-#define DRI_CONF_DISABLE_THROTTLING(def) \
-DRI_CONF_OPT_BEGIN_B(disable_throttling, def) \
-       DRI_CONF_DESC(en,gettext("Disable throttling on first batch after flush")) \
-DRI_CONF_OPT_END
-
-#define DRI_CONF_FORCE_GLSL_EXTENSIONS_WARN(def) \
-DRI_CONF_OPT_BEGIN_B(force_glsl_extensions_warn, 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_B(disable_blend_func_extended, def) \
-        DRI_CONF_DESC(en,gettext("Disable dual source blending")) \
-DRI_CONF_OPT_END
-
-#define DRI_CONF_DUAL_COLOR_BLEND_BY_LOCATION(def) \
-DRI_CONF_OPT_BEGIN_B(dual_color_blend_by_location, def) \
-        DRI_CONF_DESC(en,gettext("Identify dual color blending sources by location rather than index")) \
-DRI_CONF_OPT_END
-
-#define DRI_CONF_DISABLE_GLSL_LINE_CONTINUATIONS(def) \
-DRI_CONF_OPT_BEGIN_B(disable_glsl_line_continuations, def) \
-        DRI_CONF_DESC(en,gettext("Disable backslash-based line continuations in GLSL source")) \
-DRI_CONF_OPT_END
-
-#define DRI_CONF_DISABLE_SHADER_BIT_ENCODING(def) \
-DRI_CONF_OPT_BEGIN_B(disable_shader_bit_encoding, def) \
-        DRI_CONF_DESC(en,gettext("Disable GL_ARB_shader_bit_encoding")) \
-DRI_CONF_OPT_END
-
-#define DRI_CONF_FORCE_GLSL_VERSION(def) \
-DRI_CONF_OPT_BEGIN_V(force_glsl_version, int, def, "0:999") \
-        DRI_CONF_DESC(en,gettext("Force a default GLSL version for shaders that lack an explicit #version line")) \
-DRI_CONF_OPT_END
-
-#define DRI_CONF_ALLOW_GLSL_EXTENSION_DIRECTIVE_MIDSHADER(def) \
-DRI_CONF_OPT_BEGIN_B(allow_glsl_extension_directive_midshader, def) \
-        DRI_CONF_DESC(en,gettext("Allow GLSL #extension directives in the middle of shaders")) \
-DRI_CONF_OPT_END
-
-#define DRI_CONF_ALLOW_GLSL_BUILTIN_VARIABLE_REDECLARATION(def) \
-DRI_CONF_OPT_BEGIN_B(allow_glsl_builtin_variable_redeclaration, def) \
-        DRI_CONF_DESC(en,gettext("Allow GLSL built-in variables to be redeclared verbatim")) \
-DRI_CONF_OPT_END
-
-#define DRI_CONF_ALLOW_HIGHER_COMPAT_VERSION(def) \
-DRI_CONF_OPT_BEGIN_B(allow_higher_compat_version, def) \
-        DRI_CONF_DESC(en,gettext("Allow a higher compat profile (version 3.1+) for apps that request it")) \
-DRI_CONF_OPT_END
-
-#define DRI_CONF_FORCE_GLSL_ABS_SQRT(def) \
-DRI_CONF_OPT_BEGIN_B(force_glsl_abs_sqrt, def) \
-        DRI_CONF_DESC(en,gettext("Force computing the absolute value for sqrt() and inversesqrt()")) \
-DRI_CONF_OPT_END
-
-#define DRI_CONF_GLSL_CORRECT_DERIVATIVES_AFTER_DISCARD(def) \
-DRI_CONF_OPT_BEGIN_B(glsl_correct_derivatives_after_discard, def) \
-        DRI_CONF_DESC(en,gettext("Implicit and explicit derivatives after a discard behave as if the discard didn't happen")) \
-DRI_CONF_OPT_END
-
-
-/**
- * \brief Image quality-related options
- */
-#define DRI_CONF_SECTION_QUALITY \
-DRI_CONF_SECTION_BEGIN \
-       DRI_CONF_DESC(en,gettext("Image Quality"))
-
-#define DRI_CONF_EXCESS_MIPMAP(def) \
-DRI_CONF_OPT_BEGIN_B(excess_mipmap, 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,gettext("Texture color depth")) \
-                DRI_CONF_ENUM(0,gettext("Prefer frame buffer color depth")) \
-                DRI_CONF_ENUM(1,gettext("Prefer 32 bits per texel")) \
-                DRI_CONF_ENUM(2,gettext("Prefer 16 bits per texel")) \
-                DRI_CONF_ENUM(3,gettext("Force 16 bits 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,gettext("Initial maximum value for anisotropic texture filtering")) \
-DRI_CONF_OPT_END
-
-#define DRI_CONF_NO_NEG_LOD_BIAS(def) \
-DRI_CONF_OPT_BEGIN_B(no_neg_lod_bias, def) \
-        DRI_CONF_DESC(en,gettext("Forbid negative texture LOD bias")) \
-DRI_CONF_OPT_END
-
-#define DRI_CONF_FORCE_S3TC_ENABLE(def) \
-DRI_CONF_OPT_BEGIN_B(force_s3tc_enable, def) \
-        DRI_CONF_DESC(en,gettext("Enable S3TC texture compression even if software support is not available")) \
-DRI_CONF_OPT_END
-
-#define DRI_CONF_PRECISE_TRIG(def) \
-DRI_CONF_OPT_BEGIN_B(precise_trig, def) \
-        DRI_CONF_DESC(en,gettext("Prefer accuracy over performance in trig functions")) \
-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,gettext("Initial color reduction method")) \
-                DRI_CONF_ENUM(0,gettext("Round colors")) \
-                DRI_CONF_ENUM(1,gettext("Dither colors")) \
-        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,gettext("Color rounding method")) \
-                DRI_CONF_ENUM(0,gettext("Round color components downward")) \
-                DRI_CONF_ENUM(1,gettext("Round to nearest color")) \
-        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,gettext("Color dithering method")) \
-                DRI_CONF_ENUM(0,gettext("Horizontal error diffusion")) \
-                DRI_CONF_ENUM(1,gettext("Horizontal error diffusion, reset error at line start")) \
-                DRI_CONF_ENUM(2,gettext("Ordered 2D color dithering")) \
-        DRI_CONF_DESC_END \
-DRI_CONF_OPT_END
-
-#define DRI_CONF_FLOAT_DEPTH(def) \
-DRI_CONF_OPT_BEGIN_B(float_depth, def) \
-        DRI_CONF_DESC(en,gettext("Floating point depth buffer")) \
-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,gettext("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,gettext("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,gettext("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,gettext("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,gettext("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,gettext("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
-
-
-
-/**
- * \brief Performance-related options
- */
-#define DRI_CONF_SECTION_PERFORMANCE \
-DRI_CONF_SECTION_BEGIN \
-        DRI_CONF_DESC(en,gettext("Performance"))
-
-#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,gettext("TCL mode (Transformation, Clipping, Lighting)")) \
-                DRI_CONF_ENUM(0,gettext("Use software TCL pipeline")) \
-                DRI_CONF_ENUM(1,gettext("Use hardware TCL as first TCL pipeline stage")) \
-                DRI_CONF_ENUM(2,gettext("Bypass the TCL pipeline")) \
-                DRI_CONF_ENUM(3,gettext("Bypass the TCL pipeline with state-based machine code generated on-the-fly")) \
-        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,gettext("Method to limit rendering latency")) \
-                DRI_CONF_ENUM(0,gettext("Busy waiting for the graphics hardware")) \
-                DRI_CONF_ENUM(1,gettext("Sleep for brief intervals while waiting for the graphics hardware")) \
-                DRI_CONF_ENUM(2,gettext("Let the graphics hardware emit a software interrupt and sleep")) \
-        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,gettext("Synchronization with vertical refresh (swap intervals)")) \
-                DRI_CONF_ENUM(0,gettext("Never synchronize with vertical refresh, ignore application's choice")) \
-                DRI_CONF_ENUM(1,gettext("Initial swap interval 0, obey application's choice")) \
-                DRI_CONF_ENUM(2,gettext("Initial swap interval 1, obey application's choice")) \
-                DRI_CONF_ENUM(3,gettext("Always synchronize with vertical refresh, application chooses the minimum swap interval")) \
-        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_B(hyperz, def) \
-        DRI_CONF_DESC(en,gettext("Use HyperZ to boost performance")) \
-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,gettext("Number of texture units used")) \
-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,gettext("Texture filtering quality vs. speed, AKA “brilinear” texture filtering")) \
-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,gettext("Used types of texture memory")) \
-               DRI_CONF_ENUM(0,gettext("All available memory")) \
-               DRI_CONF_ENUM(1,gettext("Only card memory (if available)")) \
-               DRI_CONF_ENUM(2,gettext("Only GART (AGP/PCIE) memory (if available)")) \
-       DRI_CONF_DESC_END \
-DRI_CONF_OPT_END
-
-#define DRI_CONF_MESA_GLTHREAD(def) \
-DRI_CONF_OPT_BEGIN_B(mesa_glthread, def) \
-        DRI_CONF_DESC(en,gettext("Enable offloading GL driver work to a separate thread")) \
-DRI_CONF_OPT_END
-
-#define DRI_CONF_MESA_NO_ERROR(def) \
-DRI_CONF_OPT_BEGIN_B(mesa_no_error, def) \
-        DRI_CONF_DESC(en,gettext("Disable GL driver error checking")) \
-DRI_CONF_OPT_END
-
-#define DRI_CONF_DISABLE_EXT_BUFFER_AGE(def) \
-DRI_CONF_OPT_BEGIN_B(glx_disable_ext_buffer_age, def) \
-   DRI_CONF_DESC(en, gettext("Disable the GLX_EXT_buffer_age extension")) \
-DRI_CONF_OPT_END
-
-#define DRI_CONF_DISABLE_OML_SYNC_CONTROL(def) \
-DRI_CONF_OPT_BEGIN_B(glx_disable_oml_sync_control, def) \
-   DRI_CONF_DESC(en, gettext("Disable the GLX_OML_sync_control extension")) \
-DRI_CONF_OPT_END
-
-
-/**
- * \brief Software-fallback options.  To allow using features (like
- * GL_ARB_vertex_program) on GPUs that don't otherwise support the feature.
- */
-#define DRI_CONF_SECTION_SOFTWARE \
-DRI_CONF_SECTION_BEGIN \
-        DRI_CONF_DESC(en,gettext("Features that are not hardware-accelerated"))
-
-#define DRI_CONF_ARB_VERTEX_PROGRAM(def) \
-DRI_CONF_OPT_BEGIN_B(arb_vertex_program, def) \
-        DRI_CONF_DESC(en,gettext("Enable extension GL_ARB_vertex_program")) \
-DRI_CONF_OPT_END
-
-
-
-/**
- * \brief Miscellaneous configuration options
- */
-#define DRI_CONF_SECTION_MISCELLANEOUS \
-DRI_CONF_SECTION_BEGIN \
-        DRI_CONF_DESC(en,gettext("Miscellaneous"))
-
-#define DRI_CONF_ALWAYS_HAVE_DEPTH_BUFFER(def) \
-DRI_CONF_OPT_BEGIN_B(always_have_depth_buffer, def) \
-        DRI_CONF_DESC(en,gettext("Create all visuals with a depth buffer")) \
-DRI_CONF_OPT_END
-
-#define DRI_CONF_GLSL_ZERO_INIT(def) \
-DRI_CONF_OPT_BEGIN_B(glsl_zero_init, def) \
-        DRI_CONF_DESC(en,gettext("Force uninitialized variables to default to zero")) \
-DRI_CONF_OPT_END
-
-/**
- * \brief Initialization configuration options
- */
-#define DRI_CONF_SECTION_INITIALIZATION \
-DRI_CONF_SECTION_BEGIN \
-        DRI_CONF_DESC(en,gettext("Initialization"))
-
-#define DRI_CONF_DEVICE_ID_PATH_TAG(def) \
-DRI_CONF_OPT_BEGIN(device_id, string, def) \
-        DRI_CONF_DESC(en,gettext("Define the graphic device to use if possible")) \
-DRI_CONF_OPT_END
-
-/**
- * \brief Gallium-Nine specific configuration options
- */
-
-#define DRI_CONF_SECTION_NINE \
-DRI_CONF_SECTION_BEGIN \
-        DRI_CONF_DESC(en,gettext("Gallium Nine"))
-
-#define DRI_CONF_NINE_THROTTLE(def) \
-DRI_CONF_OPT_BEGIN(throttle_value, int, def) \
-        DRI_CONF_DESC(en,gettext("Define the throttling value. -1 for no throttling, -2 for default (usually 2), 0 for glfinish behaviour")) \
-DRI_CONF_OPT_END
-
-#define DRI_CONF_NINE_THREADSUBMIT(def) \
-DRI_CONF_OPT_BEGIN_B(thread_submit, def) \
-        DRI_CONF_DESC(en,gettext("Use an additional thread to submit buffers.")) \
-DRI_CONF_OPT_END
-
-#define DRI_CONF_NINE_OVERRIDEVENDOR(def) \
-DRI_CONF_OPT_BEGIN(override_vendorid, int, def) \
-        DRI_CONF_DESC(en,gettext("Define the vendor_id to report. This allows faking another hardware vendor.")) \
-DRI_CONF_OPT_END
-
-#define DRI_CONF_NINE_ALLOWDISCARDDELAYEDRELEASE(def) \
-DRI_CONF_OPT_BEGIN_B(discard_delayed_release, def) \
-        DRI_CONF_DESC(en,gettext("Whether to allow the display server to release buffers with a delay when using d3d's presentation mode DISCARD. Default to true. Set to false if suffering from lag (thread_submit=true can also help in this situation).")) \
-DRI_CONF_OPT_END
-
-#define DRI_CONF_NINE_TEARFREEDISCARD(def) \
-DRI_CONF_OPT_BEGIN_B(tearfree_discard, def) \
-        DRI_CONF_DESC(en,gettext("Whether to make d3d's presentation mode DISCARD (games usually use that mode) Tear Free. If rendering above screen refresh, some frames will get skipped. false by default.")) \
-DRI_CONF_OPT_END
-
-#define DRI_CONF_NINE_CSMT(def) \
-DRI_CONF_OPT_BEGIN(csmt_force, int, def) \
-        DRI_CONF_DESC(en,gettext("If set to 1, force gallium nine CSMT. If set to 0, disable it. By default (-1) CSMT is enabled on known thread-safe drivers.")) \
-DRI_CONF_OPT_END
index feead3eb2d2c95118f0cae793af952bd46160a53..70ca0490a35fff300b140f85cdc7d9b7454302e8 100644 (file)
@@ -30,7 +30,7 @@ AM_CFLAGS = \
        -I$(top_srcdir)/src/mesa/ \
        -I$(top_srcdir)/src/gallium/include \
        -I$(top_srcdir)/src/gallium/auxiliary \
-       -I$(top_builddir)/src/mesa/drivers/dri/common \
+       -I$(top_builddir)/src/util \
        -I$(top_srcdir)/src/mesa/drivers/dri/common \
        $(DEFINES) \
        $(VISIBILITY_CFLAGS) \
index 863f6ef7ec11fcfc8b172a86d8d22d2d1e739223..367a7347fb9384640d4193b241adb1bb6eb2ae87 100644 (file)
@@ -39,7 +39,7 @@
 #include "swrast/s_renderbuffer.h"
 
 #include "utils.h"
-#include "xmlpool.h"
+#include "util/xmlpool.h"
 
 static const __DRIconfigOptionsExtension i915_config_options = {
    .base = { __DRI_CONFIG_OPTIONS, 1 },
index 11e1a3fa31d9e9b6e9188e2e9893f27dfcbd0ddc..a22888b391a023a54efc5687e26c940925f07304 100644 (file)
@@ -33,7 +33,7 @@
 #include "dri_util.h"
 #include "intel_bufmgr.h"
 #include "i915_drm.h"
-#include "xmlconfig.h"
+#include "util/xmlconfig.h"
 
 struct intel_screen
 {
index 7ef4e7968320e8e716ef89e2a71195abbb1192ac..f884a530eb2047998ecf0443d217791103b5a9d0 100644 (file)
@@ -30,7 +30,7 @@ AM_CFLAGS = \
        -I$(top_srcdir)/src/mesa/ \
        -I$(top_srcdir)/src/gallium/include \
        -I$(top_srcdir)/src/gallium/auxiliary \
-       -I$(top_builddir)/src/mesa/drivers/dri/common \
+       -I$(top_builddir)/src/util \
        -I$(top_srcdir)/src/mesa/drivers/dri/common \
        -I$(top_srcdir)/src/gtest/include \
        -I$(top_builddir)/src/compiler/glsl \
index 5adb8ef1f638b84b51703f5a4a7e1e3447f51de8..ced80cb8790e5b98018bd161eeffbe090fdc61c3 100644 (file)
@@ -41,7 +41,7 @@
 #include "compiler/nir/nir.h"
 
 #include "utils.h"
-#include "xmlpool.h"
+#include "util/xmlpool.h"
 
 #ifndef DRM_FORMAT_MOD_INVALID
 #define DRM_FORMAT_MOD_INVALID ((1ULL<<56) - 1)
index 0980c8f561bef55fabae9c55e88b1c197dfa1aef..0c750befd101dd230945ff77284258a6f1965a9a 100644 (file)
@@ -36,7 +36,7 @@
 #include "brw_bufmgr.h"
 #include "common/gen_device_info.h"
 #include "i915_drm.h"
-#include "xmlconfig.h"
+#include "util/xmlconfig.h"
 
 #include "isl/isl.h"
 
index 1094343d6039484698cffbff68cffd26a48be018..110c02ed27d7f9483698ee09132758e051c5f459 100644 (file)
@@ -34,7 +34,7 @@ AM_CFLAGS = \
        -I$(top_srcdir)/src/mesa/ \
        -I$(top_srcdir)/src/gallium/include \
        -I$(top_srcdir)/src/gallium/auxiliary \
-       -I$(top_builddir)/src/mesa/drivers/dri/common \
+       -I$(top_builddir)/src/util \
        -I$(top_srcdir)/src/mesa/drivers/dri/common \
        -I$(top_srcdir)/src/mesa/drivers/dri/r200/server \
        $(DEFINES) \
index 5a7f33499b1d15780a24374cd6e0975113d3ee31..ca1023c5c38f5f32b22503cca84f055ff812e8d1 100644 (file)
@@ -65,7 +65,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #include "radeon_span.h"
 
 #include "utils.h"
-#include "xmlpool.h" /* for symbolic values of enum-type options */
+#include "util/xmlpool.h" /* for symbolic values of enum-type options */
 
 /* Return various strings for glGetString().
  */
index 4f584d3677bc144922e6c7b1a4b2028fe7895910..4b589cd8b83902201280f34082a5fd56effb9001 100644 (file)
@@ -49,7 +49,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #include "r200_state.h"
 #include "radeon_queryobj.h"
 
-#include "xmlpool.h"
+#include "util/xmlpool.h"
 
 /* New (1.3) state mechanism.  3 commands (packet, scalar, vector) in
  * 1.3 cmdbuffers allow all previous state to be updated as well as
index 0ddb686a43a8e44d8dfdb1caf0bed792f1c2d3ea..0696c0dc683e04279ae78a71c9bec276f74a82cf 100644 (file)
@@ -45,7 +45,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #include "r200_ioctl.h"
 #include "r200_tex.h"
 
-#include "xmlpool.h"
+#include "util/xmlpool.h"
 
 
 
index 176ec797ef8ccc19bc74de89f5f9939173ef4b2e..aa898645c9df83810399506aeb0c4b03f164a3f1 100644 (file)
@@ -35,7 +35,7 @@ AM_CFLAGS = \
        -I$(top_srcdir)/src/mesa/ \
        -I$(top_srcdir)/src/gallium/include \
        -I$(top_srcdir)/src/gallium/auxiliary \
-       -I$(top_builddir)/src/mesa/drivers/dri/common \
+       -I$(top_builddir)/src/util \
        -I$(top_srcdir)/src/mesa/drivers/dri/common \
        -I$(top_srcdir)/src/mesa/drivers/dri/radeon/server \
        $(DEFINES) \
index 77894353761c2ed1c95e3cb7659c6cd60b75605a..7e24f6d7f77982fd00f736a6e44a635256844913 100644 (file)
@@ -33,7 +33,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 **************************************************************************/
 
 #include "radeon_common.h"
-#include "xmlpool.h"           /* for symbolic values of enum-type options */
+#include "util/xmlpool.h"              /* for symbolic values of enum-type options */
 #include "utils.h"
 #include "drivers/common/meta.h"
 #include "main/context.h"
index 5ef3467ac17881063c3a87ceaee6ded7ba71060f..0c016b4da44a38de45320d1de037080e62537bc6 100644 (file)
@@ -67,7 +67,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #include "radeon_fog.h"
 
 #include "utils.h"
-#include "xmlpool.h" /* for symbolic values of enum-type options */
+#include "util/xmlpool.h" /* for symbolic values of enum-type options */
 
 extern const struct tnl_pipeline_stage _radeon_render_stage;
 extern const struct tnl_pipeline_stage _radeon_tcl_stage;
index 0f072aff20d52d7b56e2179cb237bf0d15f78cef..a2061e51be57adace5868d8316e4f8d63f905426 100644 (file)
@@ -62,7 +62,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 /* Radeon configuration
  */
-#include "xmlpool.h"
+#include "util/xmlpool.h"
 
 #define DRI_CONF_COMMAND_BUFFER_SIZE(def,min,max) \
 DRI_CONF_OPT_BEGIN_V(command_buffer_size,int,def, # min ":" # max ) \
index b3e926798cf2f9c01686090aebc6910655e49f8b..e70e334aba4ccd8cb842477fa1e040b7b439ad20 100644 (file)
@@ -45,7 +45,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #include "dri_util.h"
 #include "radeon_chipset.h"
 #include "radeon_reg.h"
-#include "xmlconfig.h"
+#include "util/xmlconfig.h"
 
 
 typedef struct {
index 5e2f41fdb4ae72b9eb6166ebae3c952f82a90e40..99c535a49cf5f3db2e36863d23d8f5946cb853fc 100644 (file)
@@ -44,7 +44,7 @@
 
 #include "../r200/r200_reg.h"
 
-#include "xmlpool.h"
+#include "util/xmlpool.h"
 
 /* New (1.3) state mechanism.  3 commands (packet, scalar, vector) in
  * 1.3 cmdbuffers allow all previous state to be updated as well as
index c3b83fab19b998d2d32dc11792881493c12bf45d..b4964f13cdf49b99455fdab83a095005d45d0fdb 100644 (file)
@@ -44,7 +44,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 #include "radeon_ioctl.h"
 #include "radeon_tex.h"
 
-#include "xmlpool.h"
+#include "util/xmlpool.h"
 
 
 
index 4794ddae069de5dd69cb65773e4d8b33bb09845a..f2d435a375f5437b8daed97a52e32841d6f6de02 100644 (file)
@@ -41,7 +41,7 @@
 #include "main/texobj.h"
 #include "drivers/common/meta.h"
 
-#include "xmlpool.h"           /* for symbolic values of enum-type options */
+#include "util/xmlpool.h"              /* for symbolic values of enum-type options */
 
 #include "radeon_common.h"
 
index a82e580f1d656af55b349a2e99b093f4ec9b4f2a..7e1ea59e9bd7e9a7fb96a79caae76915cc7b003a 100644 (file)
@@ -30,7 +30,7 @@ AM_CFLAGS = \
        -I$(top_srcdir)/src/mesa/ \
        -I$(top_srcdir)/src/gallium/include \
        -I$(top_srcdir)/src/gallium/auxiliary \
-       -I$(top_builddir)/src/mesa/drivers/dri/common \
+       -I$(top_builddir)/src/util \
        -I$(top_srcdir)/src/mesa/drivers/dri/common \
        $(LIBDRM_CFLAGS) \
        $(DEFINES) \
index facdcf8ed1113df064b6ab81197f6d39c0030c34..9015b59e45290873f685a506d471da52b0140dc7 100644 (file)
@@ -31,7 +31,8 @@ include $(LOCAL_PATH)/Makefile.sources
 include $(CLEAR_VARS)
 
 LOCAL_SRC_FILES := \
-       $(MESA_UTIL_FILES)
+       $(MESA_UTIL_FILES) \
+       $(XMLCONFIG_FILES)
 
 LOCAL_C_INCLUDES := \
        external/zlib \
@@ -47,11 +48,56 @@ LOCAL_MODULE := libmesa_util
 LOCAL_MODULE_CLASS := STATIC_LIBRARIES
 
 intermediates := $(call local-generated-sources-dir)
-LOCAL_GENERATED_SOURCES := $(addprefix $(intermediates)/,$(MESA_UTIL_GENERATED_FILES))
+UTIL_GENERATED_SOURCES := $(addprefix $(intermediates)/,$(MESA_UTIL_GENERATED_FILES))
+LOCAL_GENERATED_SOURCES := $(UTIL_GENERATED_SOURCES)
+
+MESA_DRI_OPTIONS_H := $(intermediates)/xmlpool/options.h
+LOCAL_GENERATED_SOURCES += $(MESA_DRI_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
+
+PRIVATE_SCRIPT := $(LOCAL_PATH)/xmlpool/gen_xmlpool.py
+PRIVATE_LOCALEDIR := $(intermediates)/xmlpool
+PRIVATE_TEMPLATE_HEADER := $(LOCAL_PATH)/xmlpool/t_options.h
+PRIVATE_MO_FILES := $(MESA_DRI_OPTIONS_LANGS:%=$(intermediates)/xmlpool/%/LC_MESSAGES/options.mo)
+
+LOCAL_GENERATED_SOURCES += $(PRIVATE_MO_FILES)
 
 $(LOCAL_GENERATED_SOURCES): PRIVATE_PYTHON := $(MESA_PYTHON2)
-$(LOCAL_GENERATED_SOURCES): PRIVATE_CUSTOM_TOOL = $(PRIVATE_PYTHON) $^ > $@
-$(LOCAL_GENERATED_SOURCES): $(intermediates)/%.c: $(LOCAL_PATH)/%.py
+
+$(PRIVATE_MO_FILES): $(intermediates)/xmlpool/%/LC_MESSAGES/options.mo: $(intermediates)/xmlpool/%.po
+       mkdir -p $(dir $@)
+       msgfmt -o $@ $<
+
+$(UTIL_GENERATED_SOURCES): PRIVATE_CUSTOM_TOOL = $(PRIVATE_PYTHON) $^ > $@
+$(UTIL_GENERATED_SOURCES): $(intermediates)/%.c: $(LOCAL_PATH)/%.py
+       $(transform-generated-source)
+
+$(MESA_DRI_OPTIONS_H): PRIVATE_CUSTOM_TOOL = $(PRIVATE_PYTHON) $^ $(PRIVATE_TEMPLATE_HEADER) \
+               $(PRIVATE_LOCALEDIR) $(MESA_DRI_OPTIONS_LANGS) > $@
+$(MESA_DRI_OPTIONS_H): $(PRIVATE_SCRIPT) $(PRIVATE_TEMPLATE_HEADER) $(PRIVATE_MO_FILES)
        $(transform-generated-source)
 
 include $(MESA_COMMON_MK)
index f094eb4a0d0fdc5f1a917766515a2f124d1f55a8..fa6551eaa56cbc5dda0dbd4315beb883d4c12999 100644 (file)
 # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
 # IN THE SOFTWARE.
 
-SUBDIRS = . tests/hash_table
+SUBDIRS = xmlpool . tests/hash_table
 
 include Makefile.sources
 
-noinst_LTLIBRARIES = libmesautil.la
+noinst_LTLIBRARIES = \
+       libmesautil.la \
+       libxmlconfig.la
 
 AM_CPPFLAGS = \
        -I$(top_srcdir)/include
@@ -46,6 +48,18 @@ libmesautil_la_SOURCES = \
 
 libmesautil_la_LIBADD = $(ZLIB_LIBS)
 
+libxmlconfig_la_SOURCES = $(XMLCONFIG_FILES)
+libxmlconfig_la_CFLAGS = \
+       $(DEFINES) \
+       -I$(top_srcdir)/include \
+       -I$(top_srcdir)/src \
+       -DSYSCONFDIR=\"$(sysconfdir)\" \
+       $(VISIBILITY_CFLAGS) \
+       $(EXPAT_CFLAGS)
+libxmlconfig_la_LIBADD = $(EXPAT_LIBS) -lm
+
+sysconf_DATA = drirc
+
 roundeven_test_LDADD = -lm
 
 check_PROGRAMS = u_atomic_test roundeven_test
@@ -54,8 +68,10 @@ TESTS = $(check_PROGRAMS)
 BUILT_SOURCES = $(MESA_UTIL_GENERATED_FILES)
 CLEANFILES = $(BUILT_SOURCES)
 EXTRA_DIST = \
+       drirc \
        format_srgb.py \
        SConscript \
+       xmlpool.h \
        sha1/README
 
 PYTHON_GEN = $(AM_V_GEN)$(PYTHON2) $(PYTHON_FLAGS)
index 8ea5f29533b8b2e3cb97af0192ba2ad7f57df9de..3315285f05e975238841e85f194e7dc6bfb9b097 100644 (file)
@@ -56,3 +56,7 @@ MESA_UTIL_FILES := \
 
 MESA_UTIL_GENERATED_FILES = \
        format_srgb.c
+
+XMLCONFIG_FILES := \
+       xmlconfig.c \
+       xmlconfig.h
index 7e447f6e038b8d73d16671ee178026a1f67acf30..582592c203f28b2aaade9445e2bbb4f61c3d061a 100644 (file)
@@ -2,6 +2,10 @@ import common
 
 Import('*')
 
+SConscript([
+   'xmlpool',
+])
+
 from sys import executable as python_cmd
 
 env = env.Clone()
@@ -10,6 +14,7 @@ env.MSVC2013Compat()
 
 env.Prepend(CPPPATH = [
     '#include',
+    xmlpool_options.dir.dir, # Dir to generated xmlpool/options.h
     '#src',
     '#src/mapi',
     '#src/mesa',
@@ -30,10 +35,17 @@ source_lists = env.ParseSourceList('Makefile.sources')
 
 mesautil_sources = (
     source_lists['MESA_UTIL_FILES'] +
-    source_lists['MESA_UTIL_GENERATED_FILES']
+    source_lists['MESA_UTIL_GENERATED_FILES'] +
+    source_lists['XMLCONFIG_FILES']
 )
 
-mesautil = env.ConvenienceLibrary(
+mesautilenv = env.Clone()
+
+mesautilenv.AppendUnique(LIBS = [
+    'expat',
+])
+
+mesautil = mesautilenv.ConvenienceLibrary(
     target = 'mesautil',
     source = mesautil_sources,
 )
diff --git a/src/util/drirc b/src/util/drirc
new file mode 100644 (file)
index 0000000..30ac9c8
--- /dev/null
@@ -0,0 +1,220 @@
+<!--
+
+============================================
+Application bugs worked around in this file:
+============================================
+
+* Unigine Heaven 3.0 and older contain too many bugs and can't be supported
+  by drivers that want to be compliant.
+
+* Various Unigine products don't use the #version and #extension GLSL
+  directives, meaning they only get GLSL 1.10 and no extensions for their
+  shaders.
+  Enabling all extensions for Unigine fixes most issues, but the GLSL version
+  is still 1.10.
+
+* If ARB_sample_shading is supported, Unigine Heaven 4.0 and Valley 1.0 uses
+  an #extension directive in the middle of its shaders, which is illegal
+  in GLSL.
+
+* Dying Light and Dead Island Definitive Edition redeclare vertex shader
+  built-ins (specifically gl_VertexID), which causes the vertex shaders to fail
+  to compile.
+
+TODO: document the other workarounds.
+
+-->
+
+<driconf>
+    <!-- Please always enable app-specific workarounds for all drivers and
+         screens. -->
+    <device>
+        <application name="Unigine Sanctuary" executable="Sanctuary">
+            <option name="force_glsl_extensions_warn" value="true" />
+            <option name="disable_blend_func_extended" value="true" />
+        </application>
+
+        <application name="Unigine Tropics" executable="Tropics">
+            <option name="force_glsl_extensions_warn" value="true" />
+            <option name="disable_blend_func_extended" value="true" />
+        </application>
+
+        <application name="Unigine Heaven (32-bit)" executable="heaven_x86">
+            <option name="allow_glsl_extension_directive_midshader" value="true" />
+            <!-- remove dual_color_blend_by_location if 4.1 ever comes out -->
+            <option name="dual_color_blend_by_location" value="true" />
+        </application>
+
+        <application name="Unigine Heaven (64-bit)" executable="heaven_x64">
+            <option name="allow_glsl_extension_directive_midshader" value="true" />
+            <!-- remove dual_color_blend_by_location if 4.1 ever comes out -->
+            <option name="dual_color_blend_by_location" value="true" />
+        </application>
+
+        <application name="Unigine Valley (32-bit)" executable="valley_x86">
+            <option name="allow_glsl_extension_directive_midshader" value="true" />
+            <!-- remove dual_color_blend_by_location if 1.1 ever comes out -->
+            <option name="dual_color_blend_by_location" value="true" />
+        </application>
+
+        <application name="Unigine Valley (64-bit)" executable="valley_x64">
+            <option name="allow_glsl_extension_directive_midshader" value="true" />
+            <!-- remove dual_color_blend_by_location if 1.1 ever comes out -->
+            <option name="dual_color_blend_by_location" value="true" />
+        </application>
+
+        <application name="Unigine OilRush (32-bit)" executable="OilRush_x86">
+            <option name="disable_blend_func_extended" value="true" />
+            <option name="allow_glsl_extension_directive_midshader" value="true" />
+        </application>
+
+        <application name="Unigine OilRush (64-bit)" executable="OilRush_x64">
+            <option name="disable_blend_func_extended" value="true" />
+            <option name="allow_glsl_extension_directive_midshader" value="true" />
+        </application>
+
+        <application name="Savage 2" executable="savage2.bin">
+            <option name="disable_glsl_line_continuations" value="true" />
+        </application>
+
+        <application name="Topogun (32-bit)" executable="topogun32">
+            <option name="always_have_depth_buffer" value="true" />
+        </application>
+
+        <application name="Topogun (64-bit)" executable="topogun64">
+            <option name="always_have_depth_buffer" value="true" />
+        </application>
+
+        <application name="Dead Island (incl. Definitive Edition)" executable="DeadIslandGame">
+            <option name="allow_glsl_extension_directive_midshader" value="true" />
+
+            <!-- For the Definitive Edition which shares the same executable name -->
+            <option name="allow_glsl_builtin_variable_redeclaration" value="true" />
+        </application>
+
+        <application name="Dead Island Riptide Definitive Edition" executable="DeadIslandRiptideGame">
+            <option name="allow_glsl_builtin_variable_redeclaration" value="true" />
+        </application>
+
+        <application name="Dying Light" executable="DyingLightGame">
+            <option name="allow_glsl_builtin_variable_redeclaration" value="true" />
+        </application>
+
+        <application name="Second Life" executable="do-not-directly-run-secondlife-bin">
+            <option name="allow_glsl_extension_directive_midshader" value="true" />
+        </application>
+
+        <application name="Warsow (32-bit)" executable="warsow.i386">
+            <option name="allow_glsl_extension_directive_midshader" value="true" />
+        </application>
+
+        <application name="Warsow (64-bit)" executable="warsow.x86_64">
+            <option name="allow_glsl_extension_directive_midshader" value="true" />
+        </application>
+
+        <application name="Rust" executable="rust">
+            <option name="glsl_zero_init" value="true"/>
+        </application>
+
+        <application name="Divinity: Original Sin Enhanced Edition" executable="EoCApp">
+            <option name="allow_glsl_extension_directive_midshader" value="true" />
+        </application>
+
+        <application name="Worms W.M.D" executable="Worms W.M.Dx64">
+            <option name="allow_higher_compat_version" value="true" />
+        </application>
+
+        <application name="Crookz - The Big Heist" executable="Crookz">
+            <option name="allow_higher_compat_version" value="true" />
+        </application>
+
+        <application name="Tropico 5" executable="Tropico5">
+            <option name="allow_higher_compat_version" value="true" />
+        </application>
+
+        <application name="The Culling" executable="Victory">
+            <option name="force_glsl_version" value="440" />
+        </application>
+
+        <application name="Spec Ops: The Line (32-bit)" executable="specops.i386">
+            <option name="force_glsl_abs_sqrt" value="true" />
+        </application>
+
+        <application name="Spec Ops: The Line (64-bit)" executable="specops">
+            <option name="force_glsl_abs_sqrt" value="true" />
+        </application>
+
+        <application name="Kerbal Space Program (32-bit)" executable="KSP.x86">
+            <option name="glsl_zero_init" value="true"/>
+        </application>
+
+        <application name="Kerbal Space Program (64-bit)" executable="KSP.x86_64">
+            <option name="glsl_zero_init" value="true"/>
+        </application>
+
+        <application name="Rocket League" executable="RocketLeague">
+            <option name="glsl_correct_derivatives_after_discard" value="true"/>
+        </application>
+
+        <application name="The Witcher 2" executable="witcher2">
+            <option name="glsl_correct_derivatives_after_discard" value="true"/>
+        </application>
+
+        <!-- The GL thread whitelist is below, workarounds are above.
+             Keep it that way. -->
+
+        <application name="Alien Isolation" executable="AlienIsolation">
+            <option name="mesa_glthread" value="true"/>
+        </application>
+        <application name="Civilization 6" executable="Civ6">
+            <option name="mesa_glthread" value="true"/>
+        </application>
+        <application name="BioShock Infinite" executable="bioshock.i386">
+            <option name="mesa_glthread" value="true"/>
+        </application>
+        <application name="Borderlands 2" executable="Borderlands2">
+            <option name="mesa_glthread" value="true"/>
+        </application>
+        <application name="Civilization 5" executable="Civ5XP">
+            <option name="mesa_glthread" value="true"/>
+        </application>
+        <application name="The Witcher 2" executable="witcher2">
+            <option name="mesa_glthread" value="true"/>
+        </application>
+        <application name="American Truck Simulator" executable="amtrucks">
+            <option name="mesa_glthread" value="true"/>
+        </application>
+        <application name="Euro Truck Simulator 2" executable="eurotrucks2">
+            <option name="mesa_glthread" value="true"/>
+        </application>
+        <application name="Overlord" executable="overlord.i386">
+            <option name="mesa_glthread" value="true"/>
+        </application>
+        <application name="Overlord 2" executable="overlord2.i386">
+            <option name="mesa_glthread" value="true"/>
+        </application>
+        <application name="Oil Rush" executable="OilRush_x86">
+            <option name="mesa_glthread" value="true"/>
+        </application>
+        <application name="War Thunder" executable="aces">
+            <option name="mesa_glthread" value="true"/>
+        </application>
+        <application name="Saints Row 2" executable="saintsrow2.i386">
+            <option name="mesa_glthread" value="true"/>
+        </application>
+        <application name="War Thunder (Wine)" executable="aces.exe">
+            <option name="mesa_glthread" value="true"/>
+        </application>
+    </device>
+    <!-- vmwgfx doesn't like full buffer swaps and can't sync to vertical retraces.-->
+    <device driver="vmwgfx">
+        <application name="gnome-shell" executable="gnome-shell">
+            <option name="glx_disable_ext_buffer_age" value="true" />
+            <option name="glx_disable_oml_sync_control" value="true" />
+        </application>
+       <application name="Compiz" executable="Compiz">
+            <option name="glx_disable_ext_buffer_age" value="true" />
+           <option name="glx_disable_oml_sync_control" value="true" />
+        </application>
+    </device>
+</driconf>
diff --git a/src/util/xmlconfig.c b/src/util/xmlconfig.c
new file mode 100644 (file)
index 0000000..d3f47ec
--- /dev/null
@@ -0,0 +1,1113 @@
+/*
+ * 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 xmlconfig.c
+ * \brief Driver-independent client-side part of the XML configuration
+ * \author Felix Kuehling
+ */
+
+#include <stdarg.h>
+#include <stdio.h>
+#include <string.h>
+#include <assert.h>
+#include <expat.h>
+#include <fcntl.h>
+#include <math.h>
+#include <unistd.h>
+#include <errno.h>
+#include "xmlconfig.h"
+
+#undef GET_PROGRAM_NAME
+
+#if (defined(__GNU_LIBRARY__) || defined(__GLIBC__)) && !defined(__UCLIBC__)
+#    if !defined(__GLIBC__) || (__GLIBC__ < 2)
+/* These aren't declared in any libc5 header */
+extern char *program_invocation_name, *program_invocation_short_name;
+#    endif
+#    define GET_PROGRAM_NAME() program_invocation_short_name
+#elif defined(__CYGWIN__)
+#    define GET_PROGRAM_NAME() program_invocation_short_name
+#elif defined(__FreeBSD__) && (__FreeBSD__ >= 2)
+#    include <osreldate.h>
+#    if (__FreeBSD_version >= 440000)
+#        include <stdlib.h>
+#        define GET_PROGRAM_NAME() getprogname()
+#    endif
+#elif defined(__NetBSD__) && defined(__NetBSD_Version__) && (__NetBSD_Version__ >= 106000100)
+#    include <stdlib.h>
+#    define GET_PROGRAM_NAME() getprogname()
+#elif defined(__DragonFly__)
+#    include <stdlib.h>
+#    define GET_PROGRAM_NAME() getprogname()
+#elif defined(__APPLE__)
+#    include <stdlib.h>
+#    define GET_PROGRAM_NAME() getprogname()
+#elif defined(__sun)
+/* Solaris has getexecname() which returns the full path - return just
+   the basename to match BSD getprogname() */
+#    include <stdlib.h>
+#    include <libgen.h>
+
+static const char *
+__getProgramName()
+{
+    static const char *progname;
+
+    if (progname == NULL) {
+        const char *e = getexecname();
+        if (e != NULL) {
+            /* Have to make a copy since getexecname can return a readonly
+               string, but basename expects to be able to modify its arg. */
+            char *n = strdup(e);
+            if (n != NULL) {
+                progname = basename(n);
+            }
+        }
+    }
+    return progname;
+}
+
+#    define GET_PROGRAM_NAME() __getProgramName()
+#endif
+
+#if !defined(GET_PROGRAM_NAME)
+#    if defined(__OpenBSD__) || defined(NetBSD) || defined(__UCLIBC__) || defined(ANDROID)
+/* This is a hack. It's said to work on OpenBSD, NetBSD and GNU.
+ * Rogelio M.Serrano Jr. reported it's also working with UCLIBC. It's
+ * used as a last resort, if there is no documented facility available. */
+static const char *
+__getProgramName()
+{
+    extern const char *__progname;
+    char * arg = strrchr(__progname, '/');
+    if (arg)
+        return arg+1;
+    else
+        return __progname;
+}
+#        define GET_PROGRAM_NAME() __getProgramName()
+#    else
+#        define GET_PROGRAM_NAME() ""
+#        warning "Per application configuration won't work with your OS version."
+#    endif
+#endif
+
+/** \brief Find an option in an option cache with the name as key */
+static uint32_t
+findOption(const driOptionCache *cache, const char *name)
+{
+    uint32_t len = strlen (name);
+    uint32_t size = 1 << cache->tableSize, mask = size - 1;
+    uint32_t hash = 0;
+    uint32_t i, shift;
+
+  /* compute a hash from the variable length name */
+    for (i = 0, shift = 0; i < len; ++i, shift = (shift+8) & 31)
+        hash += (uint32_t)name[i] << shift;
+    hash *= hash;
+    hash = (hash >> (16-cache->tableSize/2)) & mask;
+
+  /* this is just the starting point of the linear search for the option */
+    for (i = 0; i < size; ++i, hash = (hash+1) & mask) {
+      /* if we hit an empty entry then the option is not defined (yet) */
+        if (cache->info[hash].name == 0)
+            break;
+        else if (!strcmp (name, cache->info[hash].name))
+            break;
+    }
+  /* this assertion fails if the hash table is full */
+    assert (i < size);
+
+    return hash;
+}
+
+/** \brief Like strdup but using malloc and with error checking. */
+#define XSTRDUP(dest,source) do { \
+    uint32_t len = strlen (source); \
+    if (!(dest = malloc(len+1))) { \
+        fprintf (stderr, "%s: %d: out of memory.\n", __FILE__, __LINE__); \
+        abort(); \
+    } \
+    memcpy (dest, source, len+1); \
+} while (0)
+
+static int compare (const void *a, const void *b) {
+    return strcmp (*(char *const*)a, *(char *const*)b);
+}
+/** \brief Binary search in a string array. */
+static uint32_t
+bsearchStr (const XML_Char *name, const XML_Char *elems[], uint32_t count)
+{
+    const XML_Char **found;
+    found = bsearch (&name, elems, count, sizeof (XML_Char *), compare);
+    if (found)
+        return found - elems;
+    else
+        return count;
+}
+
+/** \brief Locale-independent integer parser.
+ *
+ * Works similar to strtol. Leading space is NOT skipped. The input
+ * number may have an optional sign. Radix is specified by base. If
+ * base is 0 then decimal is assumed unless the input number is
+ * prefixed by 0x or 0X for hexadecimal or 0 for octal. After
+ * returning tail points to the first character that is not part of
+ * the integer number. If no number was found then tail points to the
+ * start of the input string. */
+static int
+strToI(const XML_Char *string, const XML_Char **tail, int base)
+{
+    int radix = base == 0 ? 10 : base;
+    int result = 0;
+    int sign = 1;
+    bool numberFound = false;
+    const XML_Char *start = string;
+
+    assert (radix >= 2 && radix <= 36);
+
+    if (*string == '-') {
+        sign = -1;
+        string++;
+    } else if (*string == '+')
+        string++;
+    if (base == 0 && *string == '0') {
+        numberFound = true;
+        if (*(string+1) == 'x' || *(string+1) == 'X') {
+            radix = 16;
+            string += 2;
+        } else {
+            radix = 8;
+            string++;
+        }
+    }
+    do {
+        int digit = -1;
+        if (radix <= 10) {
+            if (*string >= '0' && *string < '0' + radix)
+                digit = *string - '0';
+        } else {
+            if (*string >= '0' && *string <= '9')
+                digit = *string - '0';
+            else if (*string >= 'a' && *string < 'a' + radix - 10)
+                digit = *string - 'a' + 10;
+            else if (*string >= 'A' && *string < 'A' + radix - 10)
+                digit = *string - 'A' + 10;
+        }
+        if (digit != -1) {
+            numberFound = true;
+            result = radix*result + digit;
+            string++;
+        } else
+            break;
+    } while (true);
+    *tail = numberFound ? string : start;
+    return sign * result;
+}
+
+/** \brief Locale-independent floating-point parser.
+ *
+ * Works similar to strtod. Leading space is NOT skipped. The input
+ * number may have an optional sign. '.' is interpreted as decimal
+ * point and may occur at most once. Optionally the number may end in
+ * [eE]<exponent>, where <exponent> is an integer as recognized by
+ * strToI. In that case the result is number * 10^exponent. After
+ * returning tail points to the first character that is not part of
+ * the floating point number. If no number was found then tail points
+ * to the start of the input string.
+ *
+ * Uses two passes for maximum accuracy. */
+static float
+strToF(const XML_Char *string, const XML_Char **tail)
+{
+    int nDigits = 0, pointPos, exponent;
+    float sign = 1.0f, result = 0.0f, scale;
+    const XML_Char *start = string, *numStart;
+
+    /* sign */
+    if (*string == '-') {
+        sign = -1.0f;
+        string++;
+    } else if (*string == '+')
+        string++;
+
+    /* first pass: determine position of decimal point, number of
+     * digits, exponent and the end of the number. */
+    numStart = string;
+    while (*string >= '0' && *string <= '9') {
+        string++;
+        nDigits++;
+    }
+    pointPos = nDigits;
+    if (*string == '.') {
+        string++;
+        while (*string >= '0' && *string <= '9') {
+            string++;
+            nDigits++;
+        }
+    }
+    if (nDigits == 0) {
+        /* no digits, no number */
+        *tail = start;
+        return 0.0f;
+    }
+    *tail = string;
+    if (*string == 'e' || *string == 'E') {
+        const XML_Char *expTail;
+        exponent = strToI (string+1, &expTail, 10);
+        if (expTail == string+1)
+            exponent = 0;
+        else
+            *tail = expTail;
+    } else
+        exponent = 0;
+    string = numStart;
+
+    /* scale of the first digit */
+    scale = sign * (float)pow (10.0, (double)(pointPos-1 + exponent));
+
+    /* second pass: parse digits */
+    do {
+        if (*string != '.') {
+            assert (*string >= '0' && *string <= '9');
+            result += scale * (float)(*string - '0');
+            scale *= 0.1f;
+            nDigits--;
+        }
+        string++;
+    } while (nDigits > 0);
+
+    return result;
+}
+
+/** \brief Parse a value of a given type. */
+static unsigned char
+parseValue(driOptionValue *v, driOptionType type, const XML_Char *string)
+{
+    const XML_Char *tail = NULL;
+  /* skip leading white-space */
+    string += strspn (string, " \f\n\r\t\v");
+    switch (type) {
+      case DRI_BOOL:
+        if (!strcmp (string, "false")) {
+            v->_bool = false;
+            tail = string + 5;
+        } else if (!strcmp (string, "true")) {
+            v->_bool = true;
+            tail = string + 4;
+        }
+        else
+            return false;
+        break;
+      case DRI_ENUM: /* enum is just a special integer */
+      case DRI_INT:
+        v->_int = strToI (string, &tail, 0);
+        break;
+      case DRI_FLOAT:
+        v->_float = strToF (string, &tail);
+        break;
+      case DRI_STRING:
+        free (v->_string);
+        v->_string = strndup(string, STRING_CONF_MAXLEN);
+        return true;
+    }
+
+    if (tail == string)
+        return false; /* empty string (or containing only white-space) */
+  /* skip trailing white space */
+    if (*tail)
+        tail += strspn (tail, " \f\n\r\t\v");
+    if (*tail)
+        return false; /* something left over that is not part of value */
+
+    return true;
+}
+
+/** \brief Parse a list of ranges of type info->type. */
+static unsigned char
+parseRanges(driOptionInfo *info, const XML_Char *string)
+{
+    XML_Char *cp, *range;
+    uint32_t nRanges, i;
+    driOptionRange *ranges;
+
+    XSTRDUP (cp, string);
+  /* pass 1: determine the number of ranges (number of commas + 1) */
+    range = cp;
+    for (nRanges = 1; *range; ++range)
+        if (*range == ',')
+            ++nRanges;
+
+    if ((ranges = malloc(nRanges*sizeof(driOptionRange))) == NULL) {
+        fprintf (stderr, "%s: %d: out of memory.\n", __FILE__, __LINE__);
+        abort();
+    }
+
+  /* pass 2: parse all ranges into preallocated array */
+    range = cp;
+    for (i = 0; i < nRanges; ++i) {
+        XML_Char *end, *sep;
+        assert (range);
+        end = strchr (range, ',');
+        if (end)
+            *end = '\0';
+        sep = strchr (range, ':');
+        if (sep) { /* non-empty interval */
+            *sep = '\0';
+            if (!parseValue (&ranges[i].start, info->type, range) ||
+                !parseValue (&ranges[i].end, info->type, sep+1))
+                break;
+            if (info->type == DRI_INT &&
+                ranges[i].start._int > ranges[i].end._int)
+                break;
+            if (info->type == DRI_FLOAT &&
+                ranges[i].start._float > ranges[i].end._float)
+                break;
+        } else { /* empty interval */
+            if (!parseValue (&ranges[i].start, info->type, range))
+                break;
+            ranges[i].end = ranges[i].start;
+        }
+        if (end)
+            range = end+1;
+        else
+            range = NULL;
+    }
+    free(cp);
+    if (i < nRanges) {
+        free(ranges);
+        return false;
+    } else
+        assert (range == NULL);
+
+    info->nRanges = nRanges;
+    info->ranges = ranges;
+    return true;
+}
+
+/** \brief Check if a value is in one of info->ranges. */
+static bool
+checkValue(const driOptionValue *v, const driOptionInfo *info)
+{
+    uint32_t i;
+    assert (info->type != DRI_BOOL); /* should be caught by the parser */
+    if (info->nRanges == 0)
+        return true;
+    switch (info->type) {
+      case DRI_ENUM: /* enum is just a special integer */
+      case DRI_INT:
+        for (i = 0; i < info->nRanges; ++i)
+            if (v->_int >= info->ranges[i].start._int &&
+                v->_int <= info->ranges[i].end._int)
+                return true;
+        break;
+      case DRI_FLOAT:
+        for (i = 0; i < info->nRanges; ++i)
+            if (v->_float >= info->ranges[i].start._float &&
+                v->_float <= info->ranges[i].end._float)
+                return true;
+        break;
+      case DRI_STRING:
+        break;
+      default:
+        assert (0); /* should never happen */
+    }
+    return false;
+}
+
+/**
+ * Print message to \c stderr if the \c LIBGL_DEBUG environment variable
+ * is set. 
+ * 
+ * Is called from the drivers.
+ * 
+ * \param f \c printf like format string.
+ */
+static void
+__driUtilMessage(const char *f, ...)
+{
+    va_list args;
+    const char *libgl_debug;
+
+    libgl_debug=getenv("LIBGL_DEBUG");
+    if (libgl_debug && !strstr(libgl_debug, "quiet")) {
+        fprintf(stderr, "libGL: ");
+        va_start(args, f);
+        vfprintf(stderr, f, args);
+        va_end(args);
+        fprintf(stderr, "\n");
+    }
+}
+
+/** \brief Output a warning message. */
+#define XML_WARNING1(msg) do {\
+    __driUtilMessage ("Warning in %s line %d, column %d: "msg, data->name, \
+                      (int) XML_GetCurrentLineNumber(data->parser), \
+                      (int) XML_GetCurrentColumnNumber(data->parser)); \
+} while (0)
+#define XML_WARNING(msg,args...) do { \
+    __driUtilMessage ("Warning in %s line %d, column %d: "msg, data->name, \
+                      (int) XML_GetCurrentLineNumber(data->parser), \
+                      (int) XML_GetCurrentColumnNumber(data->parser), \
+                      args); \
+} while (0)
+/** \brief Output an error message. */
+#define XML_ERROR1(msg) do { \
+    __driUtilMessage ("Error in %s line %d, column %d: "msg, data->name, \
+                      (int) XML_GetCurrentLineNumber(data->parser), \
+                      (int) XML_GetCurrentColumnNumber(data->parser)); \
+} while (0)
+#define XML_ERROR(msg,args...) do { \
+    __driUtilMessage ("Error in %s line %d, column %d: "msg, data->name, \
+                      (int) XML_GetCurrentLineNumber(data->parser), \
+                      (int) XML_GetCurrentColumnNumber(data->parser), \
+                      args); \
+} while (0)
+/** \brief Output a fatal error message and abort. */
+#define XML_FATAL1(msg) do { \
+    fprintf (stderr, "Fatal error in %s line %d, column %d: "msg"\n", \
+             data->name, \
+             (int) XML_GetCurrentLineNumber(data->parser),        \
+             (int) XML_GetCurrentColumnNumber(data->parser)); \
+    abort();\
+} while (0)
+#define XML_FATAL(msg,args...) do { \
+    fprintf (stderr, "Fatal error in %s line %d, column %d: "msg"\n", \
+             data->name, \
+             (int) XML_GetCurrentLineNumber(data->parser), \
+             (int) XML_GetCurrentColumnNumber(data->parser), \
+             args); \
+    abort();\
+} while (0)
+
+/** \brief Parser context for __driConfigOptions. */
+struct OptInfoData {
+    const char *name;
+    XML_Parser parser;
+    driOptionCache *cache;
+    bool inDriInfo;
+    bool inSection;
+    bool inDesc;
+    bool inOption;
+    bool inEnum;
+    int curOption;
+};
+
+/** \brief Elements in __driConfigOptions. */
+enum OptInfoElem {
+    OI_DESCRIPTION = 0, OI_DRIINFO, OI_ENUM, OI_OPTION, OI_SECTION, OI_COUNT
+};
+static const XML_Char *OptInfoElems[] = {
+    "description", "driinfo", "enum", "option", "section"
+};
+
+/** \brief Parse attributes of an enum element.
+ *
+ * We're not actually interested in the data. Just make sure this is ok
+ * for external configuration tools.
+ */
+static void
+parseEnumAttr(struct OptInfoData *data, const XML_Char **attr)
+{
+    uint32_t i;
+    const XML_Char *value = NULL, *text = NULL;
+    driOptionValue v;
+    uint32_t opt = data->curOption;
+    for (i = 0; attr[i]; i += 2) {
+        if (!strcmp (attr[i], "value")) value = attr[i+1];
+        else if (!strcmp (attr[i], "text")) text = attr[i+1];
+        else XML_FATAL("illegal enum attribute: %s.", attr[i]);
+    }
+    if (!value) XML_FATAL1 ("value attribute missing in enum.");
+    if (!text) XML_FATAL1 ("text attribute missing in enum.");
+     if (!parseValue (&v, data->cache->info[opt].type, value))
+        XML_FATAL ("illegal enum value: %s.", value);
+    if (!checkValue (&v, &data->cache->info[opt]))
+        XML_FATAL ("enum value out of valid range: %s.", value);
+}
+
+/** \brief Parse attributes of a description element.
+ *
+ * We're not actually interested in the data. Just make sure this is ok
+ * for external configuration tools.
+ */
+static void
+parseDescAttr(struct OptInfoData *data, const XML_Char **attr)
+{
+    uint32_t i;
+    const XML_Char *lang = NULL, *text = NULL;
+    for (i = 0; attr[i]; i += 2) {
+        if (!strcmp (attr[i], "lang")) lang = attr[i+1];
+        else if (!strcmp (attr[i], "text")) text = attr[i+1];
+        else XML_FATAL("illegal description attribute: %s.", attr[i]);
+    }
+    if (!lang) XML_FATAL1 ("lang attribute missing in description.");
+    if (!text) XML_FATAL1 ("text attribute missing in description.");
+}
+
+/** \brief Parse attributes of an option element. */
+static void
+parseOptInfoAttr(struct OptInfoData *data, const XML_Char **attr)
+{
+    enum OptAttr {OA_DEFAULT = 0, OA_NAME, OA_TYPE, OA_VALID, OA_COUNT};
+    static const XML_Char *optAttr[] = {"default", "name", "type", "valid"};
+    const XML_Char *attrVal[OA_COUNT] = {NULL, NULL, NULL, NULL};
+    const char *defaultVal;
+    driOptionCache *cache = data->cache;
+    uint32_t opt, i;
+    for (i = 0; attr[i]; i += 2) {
+        uint32_t attrName = bsearchStr (attr[i], optAttr, OA_COUNT);
+        if (attrName >= OA_COUNT)
+            XML_FATAL ("illegal option attribute: %s", attr[i]);
+        attrVal[attrName] = attr[i+1];
+    }
+    if (!attrVal[OA_NAME]) XML_FATAL1 ("name attribute missing in option.");
+    if (!attrVal[OA_TYPE]) XML_FATAL1 ("type attribute missing in option.");
+    if (!attrVal[OA_DEFAULT]) XML_FATAL1 ("default attribute missing in option.");
+
+    opt = findOption (cache, attrVal[OA_NAME]);
+    if (cache->info[opt].name)
+        XML_FATAL ("option %s redefined.", attrVal[OA_NAME]);
+    data->curOption = opt;
+
+    XSTRDUP (cache->info[opt].name, attrVal[OA_NAME]);
+
+    if (!strcmp (attrVal[OA_TYPE], "bool"))
+        cache->info[opt].type = DRI_BOOL;
+    else if (!strcmp (attrVal[OA_TYPE], "enum"))
+        cache->info[opt].type = DRI_ENUM;
+    else if (!strcmp (attrVal[OA_TYPE], "int"))
+        cache->info[opt].type = DRI_INT;
+    else if (!strcmp (attrVal[OA_TYPE], "float"))
+        cache->info[opt].type = DRI_FLOAT;
+    else if (!strcmp (attrVal[OA_TYPE], "string"))
+        cache->info[opt].type = DRI_STRING;
+    else
+        XML_FATAL ("illegal type in option: %s.", attrVal[OA_TYPE]);
+
+    defaultVal = getenv (cache->info[opt].name);
+    if (defaultVal != NULL) {
+      /* don't use XML_WARNING, we want the user to see this! */
+        fprintf (stderr,
+                 "ATTENTION: default value of option %s overridden by environment.\n",
+                 cache->info[opt].name);
+    } else
+        defaultVal = attrVal[OA_DEFAULT];
+    if (!parseValue (&cache->values[opt], cache->info[opt].type, defaultVal))
+        XML_FATAL ("illegal default value for %s: %s.", cache->info[opt].name, defaultVal);
+
+    if (attrVal[OA_VALID]) {
+        if (cache->info[opt].type == DRI_BOOL)
+            XML_FATAL1 ("boolean option with valid attribute.");
+        if (!parseRanges (&cache->info[opt], attrVal[OA_VALID]))
+            XML_FATAL ("illegal valid attribute: %s.", attrVal[OA_VALID]);
+        if (!checkValue (&cache->values[opt], &cache->info[opt]))
+            XML_FATAL ("default value out of valid range '%s': %s.",
+                       attrVal[OA_VALID], defaultVal);
+    } else if (cache->info[opt].type == DRI_ENUM) {
+        XML_FATAL1 ("valid attribute missing in option (mandatory for enums).");
+    } else {
+        cache->info[opt].nRanges = 0;
+        cache->info[opt].ranges = NULL;
+    }
+}
+
+/** \brief Handler for start element events. */
+static void
+optInfoStartElem(void *userData, const XML_Char *name, const XML_Char **attr)
+{
+    struct OptInfoData *data = (struct OptInfoData *)userData;
+    enum OptInfoElem elem = bsearchStr (name, OptInfoElems, OI_COUNT);
+    switch (elem) {
+      case OI_DRIINFO:
+        if (data->inDriInfo)
+            XML_FATAL1 ("nested <driinfo> elements.");
+        if (attr[0])
+            XML_FATAL1 ("attributes specified on <driinfo> element.");
+        data->inDriInfo = true;
+        break;
+      case OI_SECTION:
+        if (!data->inDriInfo)
+            XML_FATAL1 ("<section> must be inside <driinfo>.");
+        if (data->inSection)
+            XML_FATAL1 ("nested <section> elements.");
+        if (attr[0])
+            XML_FATAL1 ("attributes specified on <section> element.");
+        data->inSection = true;
+        break;
+      case OI_DESCRIPTION:
+        if (!data->inSection && !data->inOption)
+            XML_FATAL1 ("<description> must be inside <description> or <option.");
+        if (data->inDesc)
+            XML_FATAL1 ("nested <description> elements.");
+        data->inDesc = true;
+        parseDescAttr (data, attr);
+        break;
+      case OI_OPTION:
+        if (!data->inSection)
+            XML_FATAL1 ("<option> must be inside <section>.");
+        if (data->inDesc)
+            XML_FATAL1 ("<option> nested in <description> element.");
+        if (data->inOption)
+            XML_FATAL1 ("nested <option> elements.");
+        data->inOption = true;
+        parseOptInfoAttr (data, attr);
+        break;
+      case OI_ENUM:
+        if (!(data->inOption && data->inDesc))
+            XML_FATAL1 ("<enum> must be inside <option> and <description>.");
+        if (data->inEnum)
+            XML_FATAL1 ("nested <enum> elements.");
+        data->inEnum = true;
+        parseEnumAttr (data, attr);
+        break;
+      default:
+        XML_FATAL ("unknown element: %s.", name);
+    }
+}
+
+/** \brief Handler for end element events. */
+static void
+optInfoEndElem(void *userData, const XML_Char *name)
+{
+    struct OptInfoData *data = (struct OptInfoData *)userData;
+    enum OptInfoElem elem = bsearchStr (name, OptInfoElems, OI_COUNT);
+    switch (elem) {
+      case OI_DRIINFO:
+        data->inDriInfo = false;
+        break;
+      case OI_SECTION:
+        data->inSection = false;
+        break;
+      case OI_DESCRIPTION:
+        data->inDesc = false;
+        break;
+      case OI_OPTION:
+        data->inOption = false;
+        break;
+      case OI_ENUM:
+        data->inEnum = false;
+        break;
+      default:
+        assert (0); /* should have been caught by StartElem */
+    }
+}
+
+void
+driParseOptionInfo(driOptionCache *info, const char *configOptions)
+{
+    XML_Parser p;
+    int status;
+    struct OptInfoData userData;
+    struct OptInfoData *data = &userData;
+
+    /* Make the hash table big enough to fit more than the maximum number of
+     * config options we've ever seen in a driver.
+     */
+    info->tableSize = 6;
+    info->info = calloc(1 << info->tableSize, sizeof (driOptionInfo));
+    info->values = calloc(1 << info->tableSize, sizeof (driOptionValue));
+    if (info->info == NULL || info->values == NULL) {
+        fprintf (stderr, "%s: %d: out of memory.\n", __FILE__, __LINE__);
+        abort();
+    }
+
+    p = XML_ParserCreate ("UTF-8"); /* always UTF-8 */
+    XML_SetElementHandler (p, optInfoStartElem, optInfoEndElem);
+    XML_SetUserData (p, data);
+
+    userData.name = "__driConfigOptions";
+    userData.parser = p;
+    userData.cache = info;
+    userData.inDriInfo = false;
+    userData.inSection = false;
+    userData.inDesc = false;
+    userData.inOption = false;
+    userData.inEnum = false;
+    userData.curOption = -1;
+
+    status = XML_Parse (p, configOptions, strlen (configOptions), 1);
+    if (!status)
+        XML_FATAL ("%s.", XML_ErrorString(XML_GetErrorCode(p)));
+
+    XML_ParserFree (p);
+}
+
+/** \brief Parser context for configuration files. */
+struct OptConfData {
+    const char *name;
+    XML_Parser parser;
+    driOptionCache *cache;
+    int screenNum;
+    const char *driverName, *execName;
+    uint32_t ignoringDevice;
+    uint32_t ignoringApp;
+    uint32_t inDriConf;
+    uint32_t inDevice;
+    uint32_t inApp;
+    uint32_t inOption;
+};
+
+/** \brief Elements in configuration files. */
+enum OptConfElem {
+    OC_APPLICATION = 0, OC_DEVICE, OC_DRICONF, OC_OPTION, OC_COUNT
+};
+static const XML_Char *OptConfElems[] = {
+    [OC_APPLICATION]  = "application",
+    [OC_DEVICE] = "device",
+    [OC_DRICONF] = "driconf",
+    [OC_OPTION] = "option",
+};
+
+/** \brief Parse attributes of a device element. */
+static void
+parseDeviceAttr(struct OptConfData *data, const XML_Char **attr)
+{
+    uint32_t i;
+    const XML_Char *driver = NULL, *screen = NULL;
+    for (i = 0; attr[i]; i += 2) {
+        if (!strcmp (attr[i], "driver")) driver = attr[i+1];
+        else if (!strcmp (attr[i], "screen")) screen = attr[i+1];
+        else XML_WARNING("unknown device attribute: %s.", attr[i]);
+    }
+    if (driver && strcmp (driver, data->driverName))
+        data->ignoringDevice = data->inDevice;
+    else if (screen) {
+        driOptionValue screenNum;
+        if (!parseValue (&screenNum, DRI_INT, screen))
+            XML_WARNING("illegal screen number: %s.", screen);
+        else if (screenNum._int != data->screenNum)
+            data->ignoringDevice = data->inDevice;
+    }
+}
+
+/** \brief Parse attributes of an application element. */
+static void
+parseAppAttr(struct OptConfData *data, const XML_Char **attr)
+{
+    uint32_t i;
+    const XML_Char *exec = NULL;
+    for (i = 0; attr[i]; i += 2) {
+        if (!strcmp (attr[i], "name")) /* not needed here */;
+        else if (!strcmp (attr[i], "executable")) exec = attr[i+1];
+        else XML_WARNING("unknown application attribute: %s.", attr[i]);
+    }
+    if (exec && strcmp (exec, data->execName))
+        data->ignoringApp = data->inApp;
+}
+
+/** \brief Parse attributes of an option element. */
+static void
+parseOptConfAttr(struct OptConfData *data, const XML_Char **attr)
+{
+    uint32_t i;
+    const XML_Char *name = NULL, *value = NULL;
+    for (i = 0; attr[i]; i += 2) {
+        if (!strcmp (attr[i], "name")) name = attr[i+1];
+        else if (!strcmp (attr[i], "value")) value = attr[i+1];
+        else XML_WARNING("unknown option attribute: %s.", attr[i]);
+    }
+    if (!name) XML_WARNING1 ("name attribute missing in option.");
+    if (!value) XML_WARNING1 ("value attribute missing in option.");
+    if (name && value) {
+        driOptionCache *cache = data->cache;
+        uint32_t opt = findOption (cache, name);
+        if (cache->info[opt].name == NULL)
+            /* don't use XML_WARNING, drirc defines options for all drivers,
+             * but not all drivers support them */
+            return;
+        else if (getenv (cache->info[opt].name))
+          /* don't use XML_WARNING, we want the user to see this! */
+            fprintf (stderr, "ATTENTION: option value of option %s ignored.\n",
+                     cache->info[opt].name);
+        else if (!parseValue (&cache->values[opt], cache->info[opt].type, value))
+            XML_WARNING ("illegal option value: %s.", value);
+    }
+}
+
+/** \brief Handler for start element events. */
+static void
+optConfStartElem(void *userData, const XML_Char *name,
+                 const XML_Char **attr)
+{
+    struct OptConfData *data = (struct OptConfData *)userData;
+    enum OptConfElem elem = bsearchStr (name, OptConfElems, OC_COUNT);
+    switch (elem) {
+      case OC_DRICONF:
+        if (data->inDriConf)
+            XML_WARNING1 ("nested <driconf> elements.");
+        if (attr[0])
+            XML_WARNING1 ("attributes specified on <driconf> element.");
+        data->inDriConf++;
+        break;
+      case OC_DEVICE:
+        if (!data->inDriConf)
+            XML_WARNING1 ("<device> should be inside <driconf>.");
+        if (data->inDevice)
+            XML_WARNING1 ("nested <device> elements.");
+        data->inDevice++;
+        if (!data->ignoringDevice && !data->ignoringApp)
+            parseDeviceAttr (data, attr);
+        break;
+      case OC_APPLICATION:
+        if (!data->inDevice)
+            XML_WARNING1 ("<application> should be inside <device>.");
+        if (data->inApp)
+            XML_WARNING1 ("nested <application> elements.");
+        data->inApp++;
+        if (!data->ignoringDevice && !data->ignoringApp)
+            parseAppAttr (data, attr);
+        break;
+      case OC_OPTION:
+        if (!data->inApp)
+            XML_WARNING1 ("<option> should be inside <application>.");
+        if (data->inOption)
+            XML_WARNING1 ("nested <option> elements.");
+        data->inOption++;
+        if (!data->ignoringDevice && !data->ignoringApp)
+            parseOptConfAttr (data, attr);
+        break;
+      default:
+        XML_WARNING ("unknown element: %s.", name);
+    }
+}
+
+/** \brief Handler for end element events. */
+static void
+optConfEndElem(void *userData, const XML_Char *name)
+{
+    struct OptConfData *data = (struct OptConfData *)userData;
+    enum OptConfElem elem = bsearchStr (name, OptConfElems, OC_COUNT);
+    switch (elem) {
+      case OC_DRICONF:
+        data->inDriConf--;
+        break;
+      case OC_DEVICE:
+        if (data->inDevice-- == data->ignoringDevice)
+            data->ignoringDevice = 0;
+        break;
+      case OC_APPLICATION:
+        if (data->inApp-- == data->ignoringApp)
+            data->ignoringApp = 0;
+        break;
+      case OC_OPTION:
+        data->inOption--;
+        break;
+      default:
+        /* unknown element, warning was produced on start tag */;
+    }
+}
+
+/** \brief Initialize an option cache based on info */
+static void
+initOptionCache(driOptionCache *cache, const driOptionCache *info)
+{
+    unsigned i, size = 1 << info->tableSize;
+    cache->info = info->info;
+    cache->tableSize = info->tableSize;
+    cache->values = malloc((1<<info->tableSize) * sizeof (driOptionValue));
+    if (cache->values == NULL) {
+        fprintf (stderr, "%s: %d: out of memory.\n", __FILE__, __LINE__);
+        abort();
+    }
+    memcpy (cache->values, info->values,
+            (1<<info->tableSize) * sizeof (driOptionValue));
+    for (i = 0; i < size; ++i) {
+        if (cache->info[i].type == DRI_STRING)
+            XSTRDUP(cache->values[i]._string, info->values[i]._string);
+    }
+}
+
+/** \brief Parse the named configuration file */
+static void
+parseOneConfigFile(XML_Parser p)
+{
+#define BUF_SIZE 0x1000
+    struct OptConfData *data = (struct OptConfData *)XML_GetUserData (p);
+    int status;
+    int fd;
+
+    if ((fd = open (data->name, O_RDONLY)) == -1) {
+        __driUtilMessage ("Can't open configuration file %s: %s.",
+                          data->name, strerror (errno));
+        return;
+    }
+
+    while (1) {
+        int bytesRead;
+        void *buffer = XML_GetBuffer (p, BUF_SIZE);
+        if (!buffer) {
+            __driUtilMessage ("Can't allocate parser buffer.");
+            break;
+        }
+        bytesRead = read (fd, buffer, BUF_SIZE);
+        if (bytesRead == -1) {
+            __driUtilMessage ("Error reading from configuration file %s: %s.",
+                              data->name, strerror (errno));
+            break;
+        }
+        status = XML_ParseBuffer (p, bytesRead, bytesRead == 0);
+        if (!status) {
+            XML_ERROR ("%s.", XML_ErrorString(XML_GetErrorCode(p)));
+            break;
+        }
+        if (bytesRead == 0)
+            break;
+    }
+
+    close (fd);
+#undef BUF_SIZE
+}
+
+#ifndef SYSCONFDIR
+#define SYSCONFDIR "/etc"
+#endif
+
+void
+driParseConfigFiles(driOptionCache *cache, const driOptionCache *info,
+                    int screenNum, const char *driverName)
+{
+    char *filenames[2] = { SYSCONFDIR "/drirc", NULL};
+    char *home;
+    uint32_t i;
+    struct OptConfData userData;
+
+    initOptionCache (cache, info);
+
+    userData.cache = cache;
+    userData.screenNum = screenNum;
+    userData.driverName = driverName;
+    userData.execName = GET_PROGRAM_NAME();
+
+    if ((home = getenv ("HOME"))) {
+        uint32_t len = strlen (home);
+        filenames[1] = malloc(len + 7+1);
+        if (filenames[1] == NULL)
+            __driUtilMessage ("Can't allocate memory for %s/.drirc.", home);
+        else {
+            memcpy (filenames[1], home, len);
+            memcpy (filenames[1] + len, "/.drirc", 7+1);
+        }
+    }
+
+    for (i = 0; i < 2; ++i) {
+        XML_Parser p;
+        if (filenames[i] == NULL)
+            continue;
+
+        p = XML_ParserCreate (NULL); /* use encoding specified by file */
+        XML_SetElementHandler (p, optConfStartElem, optConfEndElem);
+        XML_SetUserData (p, &userData);
+        userData.parser = p;
+        userData.name = filenames[i];
+        userData.ignoringDevice = 0;
+        userData.ignoringApp = 0;
+        userData.inDriConf = 0;
+        userData.inDevice = 0;
+        userData.inApp = 0;
+        userData.inOption = 0;
+
+        parseOneConfigFile (p);
+        XML_ParserFree (p);
+    }
+
+    free(filenames[1]);
+}
+
+void
+driDestroyOptionInfo(driOptionCache *info)
+{
+    driDestroyOptionCache(info);
+    if (info->info) {
+        uint32_t i, size = 1 << info->tableSize;
+        for (i = 0; i < size; ++i) {
+            if (info->info[i].name) {
+                free(info->info[i].name);
+                free(info->info[i].ranges);
+            }
+        }
+        free(info->info);
+    }
+}
+
+void
+driDestroyOptionCache(driOptionCache *cache)
+{
+    if (cache->info) {
+        unsigned i, size = 1 << cache->tableSize;
+        for (i = 0; i < size; ++i) {
+            if (cache->info[i].type == DRI_STRING)
+                free(cache->values[i]._string);
+        }
+    }
+    free(cache->values);
+}
+
+unsigned char
+driCheckOption(const driOptionCache *cache, const char *name,
+               driOptionType type)
+{
+    uint32_t i = findOption (cache, name);
+    return cache->info[i].name != NULL && cache->info[i].type == type;
+}
+
+unsigned char
+driQueryOptionb(const driOptionCache *cache, const char *name)
+{
+    uint32_t i = findOption (cache, name);
+  /* make sure the option is defined and has the correct type */
+    assert (cache->info[i].name != NULL);
+    assert (cache->info[i].type == DRI_BOOL);
+    return cache->values[i]._bool;
+}
+
+int
+driQueryOptioni(const driOptionCache *cache, const char *name)
+{
+    uint32_t i = findOption (cache, name);
+  /* make sure the option is defined and has the correct type */
+    assert (cache->info[i].name != NULL);
+    assert (cache->info[i].type == DRI_INT || cache->info[i].type == DRI_ENUM);
+    return cache->values[i]._int;
+}
+
+float
+driQueryOptionf(const driOptionCache *cache, const char *name)
+{
+    uint32_t i = findOption (cache, name);
+  /* make sure the option is defined and has the correct type */
+    assert (cache->info[i].name != NULL);
+    assert (cache->info[i].type == DRI_FLOAT);
+    return cache->values[i]._float;
+}
+
+char *
+driQueryOptionstr(const driOptionCache *cache, const char *name)
+{
+    uint32_t i = findOption (cache, name);
+  /* make sure the option is defined and has the correct type */
+    assert (cache->info[i].name != NULL);
+    assert (cache->info[i].type == DRI_STRING);
+    return cache->values[i]._string;
+}
diff --git a/src/util/xmlconfig.h b/src/util/xmlconfig.h
new file mode 100644 (file)
index 0000000..77aa14c
--- /dev/null
@@ -0,0 +1,179 @@
+/*
+ * 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 xmlconfig.h
+ * \brief Driver-independent client-side part of the XML configuration
+ * \author Felix Kuehling
+ */
+
+#ifndef __XMLCONFIG_H
+#define __XMLCONFIG_H
+
+#include "util/mesa-sha1.h"
+#include "util/ralloc.h"
+
+#define STRING_CONF_MAXLEN 25
+
+/** \brief Option data types */
+typedef enum driOptionType {
+    DRI_BOOL, DRI_ENUM, DRI_INT, DRI_FLOAT, DRI_STRING
+} driOptionType;
+
+/** \brief Option value */
+typedef union driOptionValue {
+    unsigned char _bool; /**< \brief Boolean */
+    int _int;      /**< \brief Integer or Enum */
+    float _float;  /**< \brief Floating-point */
+    char *_string;   /**< \brief String */
+} driOptionValue;
+
+/** \brief Single range of valid values
+ *
+ * For empty ranges (a single value) start == end */
+typedef struct driOptionRange {
+    driOptionValue start; /**< \brief Start */
+    driOptionValue end;   /**< \brief End */
+} driOptionRange;
+
+/** \brief Information about an option */
+typedef struct driOptionInfo {
+    char *name;             /**< \brief Name */
+    driOptionType type;     /**< \brief Type */
+    driOptionRange *ranges; /**< \brief Array of ranges */
+    unsigned int nRanges;   /**< \brief Number of ranges */
+} driOptionInfo;
+
+/** \brief Option cache
+ *
+ * \li One in <driver>Screen caching option info and the default values
+ * \li One in each <driver>Context with the actual values for that context */
+typedef struct driOptionCache {
+    driOptionInfo *info;
+  /**< \brief Array of option infos
+   *
+   * Points to the same array in the screen and all contexts */
+    driOptionValue *values;    
+  /**< \brief Array of option values
+   *
+   * \li Default values in screen
+   * \li Actual values in contexts 
+   */
+    unsigned int tableSize;
+  /**< \brief Size of the arrays
+   *
+   * In the current implementation it's not actually a size but log2(size).
+   * The value is the same in the screen and all contexts. */
+} driOptionCache;
+
+/** \brief Parse XML option info from configOptions
+ *
+ * To be called in <driver>CreateScreen 
+ *
+ * \param info    pointer to a driOptionCache that will store the option info
+ * \param configOptions   XML document describing available configuration opts
+ *
+ * For the option information to be available to external configuration tools
+ * it must be a public symbol __driConfigOptions. It is also passed as a
+ * parameter to driParseOptionInfo in order to avoid driver-independent code
+ * depending on symbols in driver-specific code. */
+void driParseOptionInfo (driOptionCache *info,
+                        const char *configOptions);
+/** \brief Initialize option cache from info and parse configuration files
+ *
+ * To be called in <driver>CreateContext. screenNum and driverName select
+ * device sections. */
+void driParseConfigFiles (driOptionCache *cache, const driOptionCache *info,
+                         int screenNum, const char *driverName);
+/** \brief Destroy option info
+ *
+ * To be called in <driver>DestroyScreen */
+void driDestroyOptionInfo (driOptionCache *info);
+/** \brief Destroy option cache
+ *
+ * To be called in <driver>DestroyContext */
+void driDestroyOptionCache (driOptionCache *cache);
+
+/** \brief Check if there exists a certain option */
+unsigned char driCheckOption (const driOptionCache *cache, const char *name,
+                         driOptionType type);
+
+/** \brief Query a boolean option value */
+unsigned char driQueryOptionb (const driOptionCache *cache, const char *name);
+/** \brief Query an integer option value */
+int driQueryOptioni (const driOptionCache *cache, const char *name);
+/** \brief Query a floating-point option value */
+float driQueryOptionf (const driOptionCache *cache, const char *name);
+/** \brief Query a string option value */
+char *driQueryOptionstr (const driOptionCache *cache, const char *name);
+
+/**
+ * Returns a hash of the options for this application.
+ */
+static inline void
+driComputeOptionsSha1(const driOptionCache *cache, unsigned char *sha1)
+{
+   void *ctx = ralloc_context(NULL);
+   char *dri_options = ralloc_strdup(ctx, "");
+
+   for (int i = 0; i < 1 << cache->tableSize; i++) {
+      if (cache->info[i].name == NULL)
+         continue;
+
+      bool ret = false;
+      switch (cache->info[i].type) {
+      case DRI_BOOL:
+         ret = ralloc_asprintf_append(&dri_options, "%s:%u,",
+                                      cache->info[i].name,
+                                      cache->values[i]._bool);
+         break;
+      case DRI_INT:
+      case DRI_ENUM:
+         ret = ralloc_asprintf_append(&dri_options, "%s:%d,",
+                                      cache->info[i].name,
+                                      cache->values[i]._int);
+         break;
+      case DRI_FLOAT:
+         ret = ralloc_asprintf_append(&dri_options, "%s:%f,",
+                                      cache->info[i].name,
+                                      cache->values[i]._float);
+         break;
+      case DRI_STRING:
+         ret = ralloc_asprintf_append(&dri_options, "%s:%s,",
+                                      cache->info[i].name,
+                                      cache->values[i]._string);
+         break;
+      default:
+         unreachable("unsupported dri config type!");
+      }
+
+      if (!ret) {
+         break;
+      }
+   }
+
+   _mesa_sha1_compute(dri_options, strlen(dri_options), sha1);
+   ralloc_free(ctx);
+}
+
+#endif
diff --git a/src/util/xmlpool.h b/src/util/xmlpool.h
new file mode 100644 (file)
index 0000000..ebd4e7c
--- /dev/null
@@ -0,0 +1,105 @@
+/*
+ * 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 xmlpool.h
+ * \brief Pool of common options
+ * \author Felix Kuehling
+ *
+ * This file defines macros that can be used to construct
+ * driConfigOptions in the drivers. Common options are defined in
+ * xmlpool/t_options.h from which xmlpool/options.h is generated with
+ * translations. This file defines generic helper macros and includes
+ * xmlpool/options.h.
+ */
+
+#ifndef __XMLPOOL_H
+#define __XMLPOOL_H
+
+/*
+ * generic macros
+ */
+
+/** \brief Begin __driConfigOptions */
+#define DRI_CONF_BEGIN \
+"<driinfo>\n"
+
+/** \brief End __driConfigOptions */
+#define DRI_CONF_END \
+"</driinfo>\n"
+
+/** \brief Begin a section of related options */
+#define DRI_CONF_SECTION_BEGIN \
+"<section>\n"
+
+/** \brief End a section of related options */
+#define DRI_CONF_SECTION_END \
+"</section>\n"
+
+/** \brief Begin an option definition */
+#define DRI_CONF_OPT_BEGIN(name,type,def) \
+"<option name=\""#name"\" type=\""#type"\" default=\""#def"\">\n"
+
+/**
+ * \brief Begin a boolean option definition, with the default value passed in
+ * as a string
+ */
+#define DRI_CONF_OPT_BEGIN_B(name,def) \
+"<option name=\""#name"\" type=\"bool\" default="#def">\n"
+
+/** \brief Begin an option definition with quoted default value */
+#define DRI_CONF_OPT_BEGIN_Q(name,type,def) \
+"<option name=\""#name"\" type=\""#type"\" default="#def">\n"
+
+/** \brief Begin an option definition with restrictions on valid values */
+#define DRI_CONF_OPT_BEGIN_V(name,type,def,valid) \
+"<option name=\""#name"\" type=\""#type"\" default=\""#def"\" valid=\""valid"\">\n"
+
+/** \brief End an option description */
+#define DRI_CONF_OPT_END \
+"</option>\n"
+
+/** \brief A verbal description in a specified language (empty version) */
+#define DRI_CONF_DESC(lang,text) \
+"<description lang=\""#lang"\" text=\""text"\"/>\n"
+
+/** \brief A verbal description in a specified language */
+#define DRI_CONF_DESC_BEGIN(lang,text) \
+"<description lang=\""#lang"\" text=\""text"\">\n"
+
+/** \brief End a description */
+#define DRI_CONF_DESC_END \
+"</description>\n"
+
+/** \brief A verbal description of an enum value */
+#define DRI_CONF_ENUM(value,text) \
+"<enum value=\""#value"\" text=\""text"\"/>\n"
+
+
+/*
+ * Predefined option sections and options with multi-lingual descriptions
+ * are now automatically generated.
+ */
+#include "xmlpool/options.h"
+
+#endif
diff --git a/src/util/xmlpool/.gitignore b/src/util/xmlpool/.gitignore
new file mode 100644 (file)
index 0000000..383df72
--- /dev/null
@@ -0,0 +1,8 @@
+ca
+de
+es
+fr
+nl
+sv
+options.h
+xmlpool.pot
diff --git a/src/util/xmlpool/Makefile.am b/src/util/xmlpool/Makefile.am
new file mode 100644 (file)
index 0000000..dfd8fb8
--- /dev/null
@@ -0,0 +1,101 @@
+# Convenient makefile for managing translations.
+
+# Prerequisites:
+# - GNU gettext
+# - Python
+
+# Adding new translations
+# -----------------------
+
+# To start working on a new translation edit the POS=... line
+# below. If you want to add for example a french translation, add
+# fr.po.
+
+# Then run "make po" to generate a fresh .po file from translatable
+# strings in t_options.h. Now you can edit the new .po file (fr.po in
+# the example above) to translate the strings. Please make sure that
+# your editor encodes the file in UTF-8.
+
+# Updating existing translations
+# ------------------------------
+
+# Run "make po" to update .po files with new translatable strings from
+# t_options.h. Now you can edit the .po files you're interested
+# in. Please make sure that your editor encodes the file in UTF-8.
+
+# Updating options.h
+# ------------------
+
+# Finally run "make" to generate options.h from t_options.h with all
+# translations. Now you can rebuild the drivers. Any common options
+# used by the drivers will have option descriptions with the latest
+# translations.
+
+# Publishing translations
+# -----------------------
+
+# To get your translation(s) into Mesa CVS, please send me your
+# <lang>.po file.
+
+# More information:
+# - info gettext
+
+# The set of supported languages. Add languages as needed.
+POS=ca.po de.po es.po nl.po fr.po sv.po
+
+#
+# Don't change anything below, unless you know what you're doing.
+#
+LANGS=$(POS:%.po=%)
+MOS=$(POS:%.po=%/LC_MESSAGES/options.mo)
+POT=xmlpool.pot
+
+.PHONY: all clean pot po mo
+
+EXTRA_DIST = \
+       gen_xmlpool.py \
+       options.h \
+       t_options.h \
+       $(POS) \
+       $(MOS) \
+       SConscript
+
+BUILT_SOURCES = options.h
+CLEANFILES = \
+       options.h
+       $(POS) \
+       $(MOS)
+
+# Default target 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.
+%/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: $(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
diff --git a/src/util/xmlpool/SConscript b/src/util/xmlpool/SConscript
new file mode 100644 (file)
index 0000000..fa42554
--- /dev/null
@@ -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/src/util/xmlpool/ca.po b/src/util/xmlpool/ca.po
new file mode 100644 (file)
index 0000000..03bf296
--- /dev/null
@@ -0,0 +1,348 @@
+# Language  translations for Mesa package
+# Traduccions al català del paquet «Mesa».
+#
+# Copyright © 2014 Alex Henrie <alexhenrie24@gmail.com>
+#
+# 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 (including the next
+# paragraph) 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
+# THE AUTHORS OR COPYRIGHT HOLDERS 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.
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesa 10.1.0-devel\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2015-02-07 02:08-0700\n"
+"PO-Revision-Date: 2015-02-23 14:28-0700\n"
+"Last-Translator: Alex Henrie <alexhenrie24@gmail.com>\n"
+"Language-Team: Catalan <ca@li.org>\n"
+"Language: ca\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 1.7.4\n"
+
+#: t_options.h:56
+msgid "Debugging"
+msgstr "Depuració"
+
+#: t_options.h:60
+msgid "Disable 3D acceleration"
+msgstr "Deshabilita l'acceleració 3D"
+
+#: t_options.h:65
+msgid "Show performance boxes"
+msgstr "Mostra les caixes de rendiment"
+
+#: t_options.h:70
+msgid "Enable flushing batchbuffer after each draw call"
+msgstr "Habilita el buidatge del batchbuffer després de cada trucada de dibuix"
+
+#: t_options.h:75
+msgid "Enable flushing GPU caches with each draw call"
+msgstr ""
+"Habilita el buidatge de les memòries cau de GPU amb cada trucada de dibuix"
+
+#: t_options.h:80
+msgid "Disable throttling on first batch after flush"
+msgstr "Deshabilita la regulació en el primer lot després de buidar"
+
+#: t_options.h:85
+msgid "Force GLSL extension default behavior to 'warn'"
+msgstr ""
+"Força que el comportament per defecte de les extensions GLSL sigui 'warn'"
+
+#: t_options.h:90
+msgid "Disable dual source blending"
+msgstr "Deshabilita la barreja de font dual"
+
+#: t_options.h:95
+msgid "Disable backslash-based line continuations in GLSL source"
+msgstr ""
+"Deshabilita les continuacions de línia basades en barra invertida en la font "
+"GLSL"
+
+#: t_options.h:100
+msgid "Disable GL_ARB_shader_bit_encoding"
+msgstr "Deshabilita el GL_ARB_shader_bit_encoding"
+
+#: t_options.h:105
+msgid ""
+"Force a default GLSL version for shaders that lack an explicit #version line"
+msgstr ""
+"Força una versió GLSL per defecte en els shaders als quals lis manca una "
+"línia #version explícita"
+
+#: t_options.h:110
+msgid "Allow GLSL #extension directives in the middle of shaders"
+msgstr "Permet les directives #extension GLSL en el mitjà dels shaders"
+
+#: t_options.h:120
+msgid "Image Quality"
+msgstr "Qualitat d'imatge"
+
+#: t_options.h:133
+msgid "Texture color depth"
+msgstr "Profunditat de color de textura"
+
+#: t_options.h:134
+msgid "Prefer frame buffer color depth"
+msgstr "Prefereix profunditat de color del framebuffer"
+
+#: t_options.h:135
+msgid "Prefer 32 bits per texel"
+msgstr "Prefereix 32 bits per texel"
+
+#: t_options.h:136
+msgid "Prefer 16 bits per texel"
+msgstr "Prefereix 16 bits per texel"
+
+#: t_options.h:137
+msgid "Force 16 bits per texel"
+msgstr "Força 16 bits per texel"
+
+#: t_options.h:143
+msgid "Initial maximum value for anisotropic texture filtering"
+msgstr "Valor màxim inicial per a la filtració de textura anisòtropa"
+
+#: t_options.h:148
+msgid "Forbid negative texture LOD bias"
+msgstr ""
+"Prohibeix una parcialitat negativa del Nivell de Detalle (LOD) de les "
+"textures"
+
+#: t_options.h:153
+msgid ""
+"Enable S3TC texture compression even if software support is not available"
+msgstr ""
+"Habilita la compressió de textures S3TC encara que el suport de programari "
+"no estigui disponible"
+
+#: t_options.h:160
+msgid "Initial color reduction method"
+msgstr "Mètode inicial de reducció de color"
+
+#: t_options.h:161
+msgid "Round colors"
+msgstr "Colors arrodonits"
+
+#: t_options.h:162
+msgid "Dither colors"
+msgstr "Colors tramats"
+
+#: t_options.h:170
+msgid "Color rounding method"
+msgstr "Mètode d'arrodoniment de color"
+
+#: t_options.h:171
+msgid "Round color components downward"
+msgstr "Arrodoneix els components de color a baix"
+
+#: t_options.h:172
+msgid "Round to nearest color"
+msgstr "Arrodoneix al color més proper"
+
+#: t_options.h:181
+msgid "Color dithering method"
+msgstr "Mètode de tramat de color"
+
+#: t_options.h:182
+msgid "Horizontal error diffusion"
+msgstr "Difusió d'error horitzontal"
+
+#: t_options.h:183
+msgid "Horizontal error diffusion, reset error at line start"
+msgstr "Difusió d'error horitzontal, reinicia l'error a l'inici de la línia"
+
+#: t_options.h:184
+msgid "Ordered 2D color dithering"
+msgstr "Tramat de color 2D ordenat"
+
+#: t_options.h:190
+msgid "Floating point depth buffer"
+msgstr "Buffer de profunditat de punt flotant"
+
+#: t_options.h:195
+msgid "A post-processing filter to cel-shade the output"
+msgstr "Un filtre de postprocessament per a aplicar cel shading a la sortida"
+
+#: t_options.h:200
+msgid "A post-processing filter to remove the red channel"
+msgstr "Un filtre de postprocessament per a eliminar el canal vermell"
+
+#: t_options.h:205
+msgid "A post-processing filter to remove the green channel"
+msgstr "Un filtre de postprocessament per a eliminar el canal verd"
+
+#: t_options.h:210
+msgid "A post-processing filter to remove the blue channel"
+msgstr "Un filtre de postprocessament per a eliminar el canal blau"
+
+#: t_options.h:215
+msgid ""
+"Morphological anti-aliasing based on Jimenez\\' MLAA. 0 to disable, 8 for "
+"default quality"
+msgstr ""
+"Antialiàsing morfològic basat en el MLAA de Jimenez. 0 per deshabilitar, 8 "
+"per qualitat per defecte"
+
+#: t_options.h:220
+msgid ""
+"Morphological anti-aliasing based on Jimenez\\' MLAA. 0 to disable, 8 for "
+"default quality. Color version, usable with 2d GL apps"
+msgstr ""
+"Antialiàsing morfològic basat en el MLAA de Jimenez. 0 per deshabilitar, 8 "
+"per qualitat per defecte. Versió en color, utilitzable amb les aplicacions "
+"GL 2D"
+
+#: t_options.h:230
+msgid "Performance"
+msgstr "Rendiment"
+
+#: t_options.h:238
+msgid "TCL mode (Transformation, Clipping, Lighting)"
+msgstr "Mode TCL (Transformació, Retall, Il·luminació)"
+
+#: t_options.h:239
+msgid "Use software TCL pipeline"
+msgstr "Utilitza la canonada TCL de programari"
+
+#: t_options.h:240
+msgid "Use hardware TCL as first TCL pipeline stage"
+msgstr "Utilitza el TCL de maquinari com a la primera fase de la canonada TCL"
+
+#: t_options.h:241
+msgid "Bypass the TCL pipeline"
+msgstr "Passa per alt la canonada TCL"
+
+#: t_options.h:242
+msgid ""
+"Bypass the TCL pipeline with state-based machine code generated on-the-fly"
+msgstr ""
+"Passa per alt la canonada TCL amb codi de màquina basat en estats, generat "
+"sobre la marxa"
+
+#: t_options.h:251
+msgid "Method to limit rendering latency"
+msgstr "Mètode per a limitar la latència de renderització"
+
+#: t_options.h:252
+msgid "Busy waiting for the graphics hardware"
+msgstr "Espera activa pel maquinari de gràfics"
+
+#: t_options.h:253
+msgid "Sleep for brief intervals while waiting for the graphics hardware"
+msgstr "Dorm per intervals breus mentre s'espera al maquinari de gràfics"
+
+#: t_options.h:254
+msgid "Let the graphics hardware emit a software interrupt and sleep"
+msgstr ""
+"Deixa que el maquinari de gràfics emeti una interrupció de programari i dormi"
+
+#: t_options.h:264
+msgid "Synchronization with vertical refresh (swap intervals)"
+msgstr "Sincronització amb refresc vertical (intervals d'intercanvi)"
+
+#: t_options.h:265
+msgid "Never synchronize with vertical refresh, ignore application's choice"
+msgstr ""
+"Mai sincronitzis amb el refresc vertical, ignora l'elecció de l'aplicació"
+
+#: t_options.h:266
+msgid "Initial swap interval 0, obey application's choice"
+msgstr "Interval d'intercanvi inicial 0, obeeix l'elecció de l'aplicació"
+
+#: t_options.h:267
+msgid "Initial swap interval 1, obey application's choice"
+msgstr "Interval d'intercanvi inicial 1, obeeix l'elecció de l'aplicació"
+
+#: t_options.h:268
+msgid ""
+"Always synchronize with vertical refresh, application chooses the minimum "
+"swap interval"
+msgstr ""
+"Sempre sincronitza amb el refresc vertical, l'aplicació tria l'interval "
+"mínim d'intercanvi"
+
+#: t_options.h:276
+msgid "Use HyperZ to boost performance"
+msgstr "Utilitza el HyperZ per a augmentar el rendiment"
+
+#: t_options.h:281
+msgid "Number of texture units used"
+msgstr "Nombre d'unitats de textura utilitzades"
+
+#: t_options.h:286
+msgid "Texture filtering quality vs. speed, AKA “brilinear” texture filtering"
+msgstr ""
+"Qualitat vs. velocitat de filtració de textura, àlies filtració \"brilinear"
+"\" de textura"
+
+#: t_options.h:294
+msgid "Used types of texture memory"
+msgstr "Tipus utilitzats de memòria de textura"
+
+#: t_options.h:295
+msgid "All available memory"
+msgstr "Tota la memòria disponible"
+
+#: t_options.h:296
+msgid "Only card memory (if available)"
+msgstr "Només memòria de targeta (si està disponible)"
+
+#: t_options.h:297
+msgid "Only GART (AGP/PCIE) memory (if available)"
+msgstr "Només memòria GART (AGP/PCIE) (si està disponible)"
+
+#: t_options.h:309
+msgid "Features that are not hardware-accelerated"
+msgstr "Característiques no accelerades per maquinari"
+
+#: t_options.h:313
+msgid "Enable extension GL_ARB_vertex_program"
+msgstr "Habilita l'extensió GL_ARB_vertex_program"
+
+#: t_options.h:323
+msgid "Miscellaneous"
+msgstr "Miscel·lània"
+
+#: t_options.h:327
+msgid "Create all visuals with a depth buffer"
+msgstr "Crea tots els visuals amb buffer de profunditat"
+
+#: t_options.h:337
+msgid "Initialization"
+msgstr "Inicialització"
+
+#: t_options.h:341
+msgid "Define the graphic device to use if possible"
+msgstr "Defineix el dispositiu de gràfics que utilitzar si és possible"
+
+#: t_options.h:350
+msgid "Gallium Nine"
+msgstr "Gallium Nine"
+
+#: t_options.h:354
+msgid ""
+"Define the throttling value. -1 for no throttling, -2 for default (usually "
+"2), 0 for glfinish behaviour"
+msgstr ""
+"Defineix el valor de regulació. -1 per a no regular, -2 per al predeterminat "
+"(generalment 2), 0 per al comportament de glfinish"
+
+#: t_options.h:359
+msgid "Use an additional thread to submit buffers."
+msgstr "Utilitza un fil addicional per a entregar els buffers."
diff --git a/src/util/xmlpool/de.po b/src/util/xmlpool/de.po
new file mode 100644 (file)
index 0000000..7b20d00
--- /dev/null
@@ -0,0 +1,320 @@
+# German translations for DRI driver options.
+# Copyright (C) 2005 Felix Kuehling
+# This file is distributed under the same license as the Mesa package.
+# Felix Kuehling <fxkuehl@gmx.de>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesa 6.3\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-09-25 22:29-0600\n"
+"PO-Revision-Date: 2005-04-11 01:34+0200\n"
+"Last-Translator: Felix Kuehling <fxkuehl@gmx.de>\n"
+"Language-Team: German <de@li.org>\n"
+"Language: de\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: t_options.h:56
+msgid "Debugging"
+msgstr "Fehlersuche"
+
+#: t_options.h:60
+msgid "Disable 3D acceleration"
+msgstr "3D-Beschleunigung abschalten"
+
+#: t_options.h:65
+msgid "Show performance boxes"
+msgstr "Zeige Performanceboxen"
+
+#: t_options.h:70
+msgid "Enable flushing batchbuffer after each draw call"
+msgstr "Aktiviere sofortige Leerung des Stapelpuffers nach jedem Zeichenaufruf"
+
+#: t_options.h:75
+msgid "Enable flushing GPU caches with each draw call"
+msgstr ""
+"Aktiviere sofortige Leerung der GPU-Zwischenspeicher mit jedem Zeichenaufruf"
+
+#: t_options.h:80
+msgid "Disable throttling on first batch after flush"
+msgstr ""
+
+#: t_options.h:85
+msgid "Force GLSL extension default behavior to 'warn'"
+msgstr ""
+
+#: t_options.h:90
+msgid "Disable dual source blending"
+msgstr ""
+
+#: t_options.h:95
+msgid "Disable backslash-based line continuations in GLSL source"
+msgstr ""
+
+#: t_options.h:100
+msgid "Disable GL_ARB_shader_bit_encoding"
+msgstr ""
+
+#: t_options.h:105
+msgid ""
+"Force a default GLSL version for shaders that lack an explicit #version line"
+msgstr ""
+
+#: t_options.h:110
+msgid "Allow GLSL #extension directives in the middle of shaders"
+msgstr ""
+
+#: t_options.h:120
+msgid "Image Quality"
+msgstr "Bildqualität"
+
+#: t_options.h:133
+msgid "Texture color depth"
+msgstr "Texturfarbtiefe"
+
+#: t_options.h:134
+msgid "Prefer frame buffer color depth"
+msgstr "Bevorzuge Farbtiefe des Framebuffers"
+
+#: t_options.h:135
+msgid "Prefer 32 bits per texel"
+msgstr "Bevorzuge 32 bits pro Texel"
+
+#: t_options.h:136
+msgid "Prefer 16 bits per texel"
+msgstr "Bevorzuge 16 bits pro Texel"
+
+#: t_options.h:137
+msgid "Force 16 bits per texel"
+msgstr "Erzwinge 16 bits pro Texel"
+
+#: t_options.h:143
+msgid "Initial maximum value for anisotropic texture filtering"
+msgstr "Initialer Maximalwert für anisotropische Texturfilterung"
+
+#: t_options.h:148
+msgid "Forbid negative texture LOD bias"
+msgstr "Verbiete negative Textur-Detailgradverschiebung"
+
+#: t_options.h:153
+msgid ""
+"Enable S3TC texture compression even if software support is not available"
+msgstr ""
+"Aktiviere S3TC Texturkomprimierung auch wenn die nötige "
+"Softwareunterstützung fehlt"
+
+#: t_options.h:160
+msgid "Initial color reduction method"
+msgstr "Initiale Farbreduktionsmethode"
+
+#: t_options.h:161
+msgid "Round colors"
+msgstr "Farben runden"
+
+#: t_options.h:162
+msgid "Dither colors"
+msgstr "Farben rastern"
+
+#: t_options.h:170
+msgid "Color rounding method"
+msgstr "Farbrundungsmethode"
+
+#: t_options.h:171
+msgid "Round color components downward"
+msgstr "Farbkomponenten abrunden"
+
+#: t_options.h:172
+msgid "Round to nearest color"
+msgstr "Zur ähnlichsten Farbe runden"
+
+#: t_options.h:181
+msgid "Color dithering method"
+msgstr "Farbrasterungsmethode"
+
+#: t_options.h:182
+msgid "Horizontal error diffusion"
+msgstr "Horizontale Fehlerstreuung"
+
+#: t_options.h:183
+msgid "Horizontal error diffusion, reset error at line start"
+msgstr "Horizontale Fehlerstreuung, Fehler am Zeilenanfang zurücksetzen"
+
+#: t_options.h:184
+msgid "Ordered 2D color dithering"
+msgstr "Geordnete 2D Farbrasterung"
+
+#: t_options.h:190
+msgid "Floating point depth buffer"
+msgstr "Fließkomma z-Puffer"
+
+#: t_options.h:195
+msgid "A post-processing filter to cel-shade the output"
+msgstr "Nachbearbeitungsfilter für Cell Shading"
+
+#: t_options.h:200
+msgid "A post-processing filter to remove the red channel"
+msgstr "Nachbearbeitungsfilter zum Entfernen des Rotkanals"
+
+#: t_options.h:205
+msgid "A post-processing filter to remove the green channel"
+msgstr "Nachbearbeitungsfilter zum Entfernen des Grünkanals"
+
+#: t_options.h:210
+msgid "A post-processing filter to remove the blue channel"
+msgstr "Nachbearbeitungsfilter zum Entfernen des Blaukanals"
+
+#: t_options.h:215
+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"
+
+#: t_options.h:220
+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. Farbversion, für 2D-Anwendungen"
+
+#: t_options.h:230
+msgid "Performance"
+msgstr "Leistung"
+
+#: t_options.h:238
+msgid "TCL mode (Transformation, Clipping, Lighting)"
+msgstr "TCL-Modus (Transformation, Clipping, Licht)"
+
+#: t_options.h:239
+msgid "Use software TCL pipeline"
+msgstr "Benutze die Software-TCL-Pipeline"
+
+#: t_options.h:240
+msgid "Use hardware TCL as first TCL pipeline stage"
+msgstr "Benutze Hardware TCL als erste Stufe der TCL-Pipeline"
+
+#: t_options.h:241
+msgid "Bypass the TCL pipeline"
+msgstr "Umgehe die TCL-Pipeline"
+
+#: t_options.h:242
+msgid ""
+"Bypass the TCL pipeline with state-based machine code generated on-the-fly"
+msgstr ""
+"Umgehe die TCL-Pipeline mit zur Laufzeit erzeugtem, zustandsbasiertem "
+"Maschinencode"
+
+#: t_options.h:251
+msgid "Method to limit rendering latency"
+msgstr "Methode zur Begrenzung der Bildverzögerung"
+
+#: t_options.h:252
+msgid "Busy waiting for the graphics hardware"
+msgstr "Aktives Warten auf die Grafikhardware"
+
+#: t_options.h:253
+msgid "Sleep for brief intervals while waiting for the graphics hardware"
+msgstr "Kurze Schlafintervalle beim Warten auf die Grafikhardware"
+
+#: t_options.h:254
+msgid "Let the graphics hardware emit a software interrupt and sleep"
+msgstr ""
+"Die Grafikhardware eine Softwareunterbrechnung erzeugen lassen und schlafen"
+
+#: t_options.h:264
+msgid "Synchronization with vertical refresh (swap intervals)"
+msgstr "Synchronisation mit der vertikalen Bildwiederholung"
+
+#: t_options.h:265
+msgid "Never synchronize with vertical refresh, ignore application's choice"
+msgstr ""
+"Niemals mit der Bildwiederholung synchronisieren, Anweisungen der Anwendung "
+"ignorieren"
+
+#: t_options.h:266
+msgid "Initial swap interval 0, obey application's choice"
+msgstr "Initiales Bildinterval 0, Anweisungen der Anwendung gehorchen"
+
+#: t_options.h:267
+msgid "Initial swap interval 1, obey application's choice"
+msgstr "Initiales Bildinterval 1, Anweisungen der Anwendung gehorchen"
+
+#: t_options.h:268
+msgid ""
+"Always synchronize with vertical refresh, application chooses the minimum "
+"swap interval"
+msgstr ""
+"Immer mit der Bildwiederholung synchronisieren, Anwendung wählt das minimale "
+"Bildintervall"
+
+#: t_options.h:276
+msgid "Use HyperZ to boost performance"
+msgstr "HyperZ zur Leistungssteigerung verwenden"
+
+#: t_options.h:281
+msgid "Number of texture units used"
+msgstr "Anzahl der benutzten Textureinheiten"
+
+#: t_options.h:286
+msgid "Texture filtering quality vs. speed, AKA “brilinear” texture filtering"
+msgstr ""
+"Texturfilterqualität versus -geschwindigkeit, auch bekannt als „brilineare“ "
+"Texturfilterung"
+
+#: t_options.h:294
+msgid "Used types of texture memory"
+msgstr "Benutzte Arten von Texturspeicher"
+
+#: t_options.h:295
+msgid "All available memory"
+msgstr "Aller verfügbarer Speicher"
+
+#: t_options.h:296
+msgid "Only card memory (if available)"
+msgstr "Nur Grafikspeicher (falls verfügbar)"
+
+#: t_options.h:297
+msgid "Only GART (AGP/PCIE) memory (if available)"
+msgstr "Nur GART-Speicher (AGP/PCIE) (falls verfügbar)"
+
+#: t_options.h:309
+msgid "Features that are not hardware-accelerated"
+msgstr "Funktionalität, die nicht hardwarebeschleunigt ist"
+
+#: t_options.h:313
+msgid "Enable extension GL_ARB_vertex_program"
+msgstr "Erweiterung GL_ARB_vertex_program aktivieren"
+
+#: t_options.h:323
+msgid "Miscellaneous"
+msgstr ""
+
+#: t_options.h:327
+msgid "Create all visuals with a depth buffer"
+msgstr ""
+
+#: t_options.h:337
+msgid "Initialization"
+msgstr ""
+
+#: t_options.h:341
+msgid "Define the graphic device to use if possible"
+msgstr ""
+
+#~ msgid "Support larger textures not guaranteed to fit into graphics memory"
+#~ msgstr ""
+#~ "Unterstütze grosse Texturen die evtl. nicht in den Grafikspeicher passen"
+
+#~ msgid "No"
+#~ msgstr "Nein"
+
+#~ msgid "At least 1 texture must fit under worst-case assumptions"
+#~ msgstr "Mindestens 1 Textur muss auch im schlechtesten Fall Platz haben"
+
+#~ msgid "Announce hardware limits"
+#~ msgstr "Benutze Hardware-Limits"
diff --git a/src/util/xmlpool/es.po b/src/util/xmlpool/es.po
new file mode 100644 (file)
index 0000000..f9d950a
--- /dev/null
@@ -0,0 +1,332 @@
+# translation of es.po to Spanish
+# Spanish translations for PACKAGE package.
+# Copyright (C) 2005 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# David <deifo@ono.com>, 2005.
+# David Rubio Miguélez <deifo@ono.com>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: es\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2015-02-07 02:08-0700\n"
+"PO-Revision-Date: 2015-02-23 14:54-0700\n"
+"Last-Translator: Alex Henrie <alexhenrie24@gmail.com>\n"
+"Language-Team: Spanish <es@li.org>\n"
+"Language: es\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Poedit 1.7.4\n"
+
+#: t_options.h:56
+msgid "Debugging"
+msgstr "Depuración"
+
+#: t_options.h:60
+msgid "Disable 3D acceleration"
+msgstr "Deshabilitar aceleración 3D"
+
+#: t_options.h:65
+msgid "Show performance boxes"
+msgstr "Mostrar cajas de rendimiento"
+
+#: t_options.h:70
+msgid "Enable flushing batchbuffer after each draw call"
+msgstr "Habilitar vaciado del batchbuffer después de cada llamada de dibujo"
+
+#: t_options.h:75
+msgid "Enable flushing GPU caches with each draw call"
+msgstr "Habilitar vaciado de los cachés GPU con cada llamada de dibujo"
+
+#: t_options.h:80
+msgid "Disable throttling on first batch after flush"
+msgstr "Deshabilitar regulación del primer lote después de vaciar"
+
+#: t_options.h:85
+msgid "Force GLSL extension default behavior to 'warn'"
+msgstr ""
+"Forzar que el comportamiento por defecto de las extensiones GLSL sea 'warn'"
+
+#: t_options.h:90
+msgid "Disable dual source blending"
+msgstr "Deshabilitar mezcla de fuente dual"
+
+#: t_options.h:95
+msgid "Disable backslash-based line continuations in GLSL source"
+msgstr ""
+"Deshabilitar continuaciones de línea basadas en barra inversa en el código "
+"GLSL"
+
+#: t_options.h:100
+msgid "Disable GL_ARB_shader_bit_encoding"
+msgstr "Deshabilitar GL_ARB_shader_bit_encoding"
+
+#: t_options.h:105
+msgid ""
+"Force a default GLSL version for shaders that lack an explicit #version line"
+msgstr ""
+"Forzar una versión de GLSL por defecto en los shaders a los cuales les falta "
+"una línea #version explícita"
+
+#: t_options.h:110
+msgid "Allow GLSL #extension directives in the middle of shaders"
+msgstr "Permite directivas #extension GLSL en medio de los shaders"
+
+#: t_options.h:120
+msgid "Image Quality"
+msgstr "Calidad de imagen"
+
+#: t_options.h:133
+msgid "Texture color depth"
+msgstr "Profundidad de color de textura"
+
+#: t_options.h:134
+msgid "Prefer frame buffer color depth"
+msgstr "Preferir profundidad de color del framebuffer"
+
+#: t_options.h:135
+msgid "Prefer 32 bits per texel"
+msgstr "Preferir 32 bits por texel"
+
+#: t_options.h:136
+msgid "Prefer 16 bits per texel"
+msgstr "Preferir 16 bits por texel"
+
+#: t_options.h:137
+msgid "Force 16 bits per texel"
+msgstr "Forzar a 16 bits por texel"
+
+#: t_options.h:143
+msgid "Initial maximum value for anisotropic texture filtering"
+msgstr "Valor máximo inicial para filtrado anisotrópico de textura"
+
+#: t_options.h:148
+msgid "Forbid negative texture LOD bias"
+msgstr "Prohibir valores negativos de Nivel De Detalle (LOD) de texturas"
+
+#: t_options.h:153
+msgid ""
+"Enable S3TC texture compression even if software support is not available"
+msgstr ""
+"Habilitar la compresión de texturas S3TC incluso si el soporte por software "
+"no está disponible"
+
+#: t_options.h:160
+msgid "Initial color reduction method"
+msgstr "Método inicial de reducción de color"
+
+#: t_options.h:161
+msgid "Round colors"
+msgstr "Colores redondeados"
+
+#: t_options.h:162
+msgid "Dither colors"
+msgstr "Colores suavizados"
+
+#: t_options.h:170
+msgid "Color rounding method"
+msgstr "Método de redondeo de colores"
+
+#: t_options.h:171
+msgid "Round color components downward"
+msgstr "Redondear hacia abajo los componentes de color"
+
+#: t_options.h:172
+msgid "Round to nearest color"
+msgstr "Redondear al color más cercano"
+
+#: t_options.h:181
+msgid "Color dithering method"
+msgstr "Método de suavizado de color"
+
+#: t_options.h:182
+msgid "Horizontal error diffusion"
+msgstr "Difusión de error horizontal"
+
+#: t_options.h:183
+msgid "Horizontal error diffusion, reset error at line start"
+msgstr "Difusión de error horizontal, reiniciar error al comienzo de línea"
+
+#: t_options.h:184
+msgid "Ordered 2D color dithering"
+msgstr "Suavizado de color 2D ordenado"
+
+#: t_options.h:190
+msgid "Floating point depth buffer"
+msgstr "Búfer de profundidad en coma flotante"
+
+#: t_options.h:195
+msgid "A post-processing filter to cel-shade the output"
+msgstr "Un filtro de postprocesamiento para aplicar cel shading a la salida"
+
+#: t_options.h:200
+msgid "A post-processing filter to remove the red channel"
+msgstr "Un filtro de postprocesamiento para eliminar el canal rojo"
+
+#: t_options.h:205
+msgid "A post-processing filter to remove the green channel"
+msgstr "Un filtro de postprocesamiento para eliminar el canal verde"
+
+#: t_options.h:210
+msgid "A post-processing filter to remove the blue channel"
+msgstr "Un filtro de postprocesamiento para eliminar el canal azul"
+
+#: t_options.h:215
+msgid ""
+"Morphological anti-aliasing based on Jimenez\\' MLAA. 0 to disable, 8 for "
+"default quality"
+msgstr ""
+"Antialiasing morfológico basado en el MLAA de Jimenez. 0 para deshabilitar, "
+"8 para calidad por defecto"
+
+#: t_options.h:220
+msgid ""
+"Morphological anti-aliasing based on Jimenez\\' MLAA. 0 to disable, 8 for "
+"default quality. Color version, usable with 2d GL apps"
+msgstr ""
+"Antialiasing morfológico basado en el MLAA de Jimenez. 0 para deshabilitar, "
+"8 para calidad por defecto. Versión en color, usable con aplicaciones GL 2D"
+
+#: t_options.h:230
+msgid "Performance"
+msgstr "Rendimiento"
+
+#: t_options.h:238
+msgid "TCL mode (Transformation, Clipping, Lighting)"
+msgstr "Modo TCL (Transformación, Recorte, Iluminación)"
+
+#: t_options.h:239
+msgid "Use software TCL pipeline"
+msgstr "Usar tubería TCL por software"
+
+#: t_options.h:240
+msgid "Use hardware TCL as first TCL pipeline stage"
+msgstr "Usar TCL por hardware en la primera fase de la tubería TCL"
+
+#: t_options.h:241
+msgid "Bypass the TCL pipeline"
+msgstr "Pasar por alto la tubería TCL"
+
+#: t_options.h:242
+msgid ""
+"Bypass the TCL pipeline with state-based machine code generated on-the-fly"
+msgstr ""
+"Pasar por alto la tubería TCL con código máquina basado en estados, generado "
+"al vuelo"
+
+#: t_options.h:251
+msgid "Method to limit rendering latency"
+msgstr "Método para limitar la latencia de renderización"
+
+#: t_options.h:252
+msgid "Busy waiting for the graphics hardware"
+msgstr "Esperar activamente al hardware gráfico"
+
+#: t_options.h:253
+msgid "Sleep for brief intervals while waiting for the graphics hardware"
+msgstr "Dormir en intervalos cortos mientras se espera al hardware gráfico"
+
+#: t_options.h:254
+msgid "Let the graphics hardware emit a software interrupt and sleep"
+msgstr ""
+"Permitir que el hardware gráfico emita una interrupción de software y duerma"
+
+#: t_options.h:264
+msgid "Synchronization with vertical refresh (swap intervals)"
+msgstr "Sincronización con el refresco vertical (intervalos de intercambio)"
+
+#: t_options.h:265
+msgid "Never synchronize with vertical refresh, ignore application's choice"
+msgstr ""
+"No sincronizar nunca con el refresco vertical, ignorar la elección de la "
+"aplicación"
+
+#: t_options.h:266
+msgid "Initial swap interval 0, obey application's choice"
+msgstr ""
+"Intervalo de intercambio inicial 0, obedecer la elección de la aplicación"
+
+#: t_options.h:267
+msgid "Initial swap interval 1, obey application's choice"
+msgstr ""
+"Intervalo de intercambio inicial 1, obedecer la elección de la aplicación"
+
+#: t_options.h:268
+msgid ""
+"Always synchronize with vertical refresh, application chooses the minimum "
+"swap interval"
+msgstr ""
+"Sincronizar siempre con el refresco vertical, la aplicación elige el "
+"intervalo de intercambio mínimo"
+
+#: t_options.h:276
+msgid "Use HyperZ to boost performance"
+msgstr "Usar HyperZ para potenciar rendimiento"
+
+#: t_options.h:281
+msgid "Number of texture units used"
+msgstr "Número de unidades de textura usadas"
+
+#: t_options.h:286
+msgid "Texture filtering quality vs. speed, AKA “brilinear” texture filtering"
+msgstr ""
+"Calidad de filtrado de textura vs. velocidad, alias filtrado \"brilinear\" "
+"de textura"
+
+#: t_options.h:294
+msgid "Used types of texture memory"
+msgstr "Tipos de memoria de textura usados"
+
+#: t_options.h:295
+msgid "All available memory"
+msgstr "Toda la memoria disponible"
+
+#: t_options.h:296
+msgid "Only card memory (if available)"
+msgstr "Solo memoria de tarjeta (si está disponible)"
+
+#: t_options.h:297
+msgid "Only GART (AGP/PCIE) memory (if available)"
+msgstr "Solo memoria GART (AGP/PCIE) (si está disponible)"
+
+#: t_options.h:309
+msgid "Features that are not hardware-accelerated"
+msgstr "Características no aceleradas por hardware"
+
+#: t_options.h:313
+msgid "Enable extension GL_ARB_vertex_program"
+msgstr "Habilitar la extensión GL_ARB_vertex_program"
+
+#: t_options.h:323
+msgid "Miscellaneous"
+msgstr "Misceláneos"
+
+#: t_options.h:327
+msgid "Create all visuals with a depth buffer"
+msgstr "Crear todos los visuales con búfer de profundidad"
+
+#: t_options.h:337
+msgid "Initialization"
+msgstr "Inicialización"
+
+#: t_options.h:341
+msgid "Define the graphic device to use if possible"
+msgstr "Define el dispositivo de gráficos que usar si es posible"
+
+#: t_options.h:350
+msgid "Gallium Nine"
+msgstr "Gallium Nine"
+
+#: t_options.h:354
+msgid ""
+"Define the throttling value. -1 for no throttling, -2 for default (usually "
+"2), 0 for glfinish behaviour"
+msgstr ""
+"Define el valor de regulación. -1 para no regular, -2 para el por defecto "
+"(generalmente 2), 0 para el comportamiento de glfinish"
+
+#: t_options.h:359
+msgid "Use an additional thread to submit buffers."
+msgstr "Usar un hilo adicional para entregar los búfer."
diff --git a/src/util/xmlpool/fr.po b/src/util/xmlpool/fr.po
new file mode 100644 (file)
index 0000000..fa06965
--- /dev/null
@@ -0,0 +1,310 @@
+# French translations for DRI driver options.
+# Copyright (C) 2005 Stephane Marchesin
+# This file is distributed under the same license as the Mesa package.
+# Stephane Marchesin <marchesin@icps.u-strasbg.fr>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesa 6.3\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-09-25 22:29-0600\n"
+"PO-Revision-Date: 2005-04-11 01:34+0200\n"
+"Last-Translator: Stephane Marchesin <marchesin@icps.u-strasbg.fr>\n"
+"Language-Team: French <fr@li.org>\n"
+"Language: fr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: t_options.h:56
+msgid "Debugging"
+msgstr "Debogage"
+
+#: t_options.h:60
+msgid "Disable 3D acceleration"
+msgstr "Désactiver l'accélération 3D"
+
+#: t_options.h:65
+msgid "Show performance boxes"
+msgstr "Afficher les boîtes de performance"
+
+#: t_options.h:70
+msgid "Enable flushing batchbuffer after each draw call"
+msgstr ""
+
+#: t_options.h:75
+msgid "Enable flushing GPU caches with each draw call"
+msgstr ""
+
+#: t_options.h:80
+msgid "Disable throttling on first batch after flush"
+msgstr ""
+
+#: t_options.h:85
+msgid "Force GLSL extension default behavior to 'warn'"
+msgstr ""
+
+#: t_options.h:90
+msgid "Disable dual source blending"
+msgstr ""
+
+#: t_options.h:95
+msgid "Disable backslash-based line continuations in GLSL source"
+msgstr ""
+
+#: t_options.h:100
+msgid "Disable GL_ARB_shader_bit_encoding"
+msgstr ""
+
+#: t_options.h:105
+msgid ""
+"Force a default GLSL version for shaders that lack an explicit #version line"
+msgstr ""
+
+#: t_options.h:110
+msgid "Allow GLSL #extension directives in the middle of shaders"
+msgstr ""
+
+#: t_options.h:120
+msgid "Image Quality"
+msgstr "Qualité d'image"
+
+#: t_options.h:133
+msgid "Texture color depth"
+msgstr "Profondeur de texture"
+
+#: t_options.h:134
+msgid "Prefer frame buffer color depth"
+msgstr "Profondeur de couleur"
+
+#: t_options.h:135
+msgid "Prefer 32 bits per texel"
+msgstr "Préférer 32 bits par texel"
+
+#: t_options.h:136
+msgid "Prefer 16 bits per texel"
+msgstr "Prérérer 16 bits par texel"
+
+#: t_options.h:137
+msgid "Force 16 bits per texel"
+msgstr "Forcer 16 bits par texel"
+
+#: t_options.h:143
+msgid "Initial maximum value for anisotropic texture filtering"
+msgstr "Valeur maximale initiale pour le filtrage anisotropique de texture"
+
+#: t_options.h:148
+msgid "Forbid negative texture LOD bias"
+msgstr "Interdire le LOD bias negatif"
+
+#: t_options.h:153
+msgid ""
+"Enable S3TC texture compression even if software support is not available"
+msgstr ""
+"Activer la compression de texture S3TC même si le support logiciel est absent"
+
+#: t_options.h:160
+msgid "Initial color reduction method"
+msgstr "Technique de réduction de couleurs"
+
+#: t_options.h:161
+msgid "Round colors"
+msgstr "Arrondir les valeurs de couleur"
+
+#: t_options.h:162
+msgid "Dither colors"
+msgstr "Tramer les couleurs"
+
+#: t_options.h:170
+msgid "Color rounding method"
+msgstr "Méthode d'arrondi des couleurs"
+
+#: t_options.h:171
+msgid "Round color components downward"
+msgstr "Arrondi à l'inférieur"
+
+#: t_options.h:172
+msgid "Round to nearest color"
+msgstr "Arrondi au plus proche"
+
+#: t_options.h:181
+msgid "Color dithering method"
+msgstr "Méthode de tramage"
+
+#: t_options.h:182
+msgid "Horizontal error diffusion"
+msgstr "Diffusion d'erreur horizontale"
+
+#: t_options.h:183
+msgid "Horizontal error diffusion, reset error at line start"
+msgstr "Diffusion d'erreur horizontale, réinitialisé pour chaque ligne"
+
+#: t_options.h:184
+msgid "Ordered 2D color dithering"
+msgstr "Tramage ordonné des couleurs"
+
+#: t_options.h:190
+msgid "Floating point depth buffer"
+msgstr "Z-buffer en virgule flottante"
+
+#: t_options.h:195
+msgid "A post-processing filter to cel-shade the output"
+msgstr ""
+
+#: t_options.h:200
+msgid "A post-processing filter to remove the red channel"
+msgstr ""
+
+#: t_options.h:205
+msgid "A post-processing filter to remove the green channel"
+msgstr ""
+
+#: t_options.h:210
+msgid "A post-processing filter to remove the blue channel"
+msgstr ""
+
+#: t_options.h:215
+msgid ""
+"Morphological anti-aliasing based on Jimenez\\' MLAA. 0 to disable, 8 for "
+"default quality"
+msgstr ""
+
+#: t_options.h:220
+msgid ""
+"Morphological anti-aliasing based on Jimenez\\' MLAA. 0 to disable, 8 for "
+"default quality. Color version, usable with 2d GL apps"
+msgstr ""
+
+#: t_options.h:230
+msgid "Performance"
+msgstr "Performance"
+
+#: t_options.h:238
+msgid "TCL mode (Transformation, Clipping, Lighting)"
+msgstr "Mode de TCL (Transformation, Clipping, Eclairage)"
+
+#: t_options.h:239
+msgid "Use software TCL pipeline"
+msgstr "Utiliser un pipeline TCL logiciel"
+
+#: t_options.h:240
+msgid "Use hardware TCL as first TCL pipeline stage"
+msgstr "Utiliser le TCL matériel pour le premier niveau de pipeline"
+
+#: t_options.h:241
+msgid "Bypass the TCL pipeline"
+msgstr "Court-circuiter le pipeline TCL"
+
+#: t_options.h:242
+msgid ""
+"Bypass the TCL pipeline with state-based machine code generated on-the-fly"
+msgstr ""
+"Court-circuiter le pipeline TCL par une machine à états qui génère le codede "
+"TCL à la volée"
+
+#: t_options.h:251
+msgid "Method to limit rendering latency"
+msgstr "Méthode d'attente de la carte graphique"
+
+#: t_options.h:252
+msgid "Busy waiting for the graphics hardware"
+msgstr "Attente active de la carte graphique"
+
+#: t_options.h:253
+msgid "Sleep for brief intervals while waiting for the graphics hardware"
+msgstr "Attente utilisant usleep()"
+
+#: t_options.h:254
+msgid "Let the graphics hardware emit a software interrupt and sleep"
+msgstr "Utiliser les interruptions"
+
+#: t_options.h:264
+msgid "Synchronization with vertical refresh (swap intervals)"
+msgstr "Synchronisation de l'affichage avec le balayage vertical"
+
+#: t_options.h:265
+msgid "Never synchronize with vertical refresh, ignore application's choice"
+msgstr ""
+"Ne jamais synchroniser avec le balayage vertical, ignorer le choix de "
+"l'application"
+
+#: t_options.h:266
+msgid "Initial swap interval 0, obey application's choice"
+msgstr ""
+"Ne pas synchroniser avec le balayage vertical par défaut, mais obéir au "
+"choix de l'application"
+
+#: t_options.h:267
+msgid "Initial swap interval 1, obey application's choice"
+msgstr ""
+"Synchroniser avec le balayage vertical par défaut, mais obéir au choix de "
+"l'application"
+
+#: t_options.h:268
+msgid ""
+"Always synchronize with vertical refresh, application chooses the minimum "
+"swap interval"
+msgstr ""
+"Toujours synchroniser avec le balayage vertical, l'application choisit "
+"l'intervalle minimal"
+
+#: t_options.h:276
+msgid "Use HyperZ to boost performance"
+msgstr "Utiliser le HyperZ pour améliorer les performances"
+
+#: t_options.h:281
+msgid "Number of texture units used"
+msgstr "Nombre d'unités de texture"
+
+#: t_options.h:286
+msgid "Texture filtering quality vs. speed, AKA “brilinear” texture filtering"
+msgstr ""
+"Qualité/performance du filtrage trilinéaire de texture (filtrage brilinéaire)"
+
+#: t_options.h:294
+msgid "Used types of texture memory"
+msgstr "Types de mémoire de texture"
+
+#: t_options.h:295
+msgid "All available memory"
+msgstr "Utiliser toute la mémoire disponible"
+
+#: t_options.h:296
+msgid "Only card memory (if available)"
+msgstr "Utiliser uniquement la mémoire graphique (si disponible)"
+
+#: t_options.h:297
+msgid "Only GART (AGP/PCIE) memory (if available)"
+msgstr "Utiliser uniquement la mémoire GART (AGP/PCIE) (si disponible)"
+
+#: t_options.h:309
+msgid "Features that are not hardware-accelerated"
+msgstr "Fonctionnalités ne bénéficiant pas d'une accélération matérielle"
+
+#: t_options.h:313
+msgid "Enable extension GL_ARB_vertex_program"
+msgstr "Activer l'extension GL_ARB_vertex_program"
+
+#: t_options.h:323
+msgid "Miscellaneous"
+msgstr ""
+
+#: t_options.h:327
+msgid "Create all visuals with a depth buffer"
+msgstr ""
+
+#: t_options.h:337
+msgid "Initialization"
+msgstr ""
+
+#: t_options.h:341
+msgid "Define the graphic device to use if possible"
+msgstr ""
+
+#~ msgid ""
+#~ "Enable hack to allow larger textures with texture compression on radeon/"
+#~ "r200"
+#~ msgstr ""
+#~ "Activer le hack permettant l'utilisation de textures de grande taille "
+#~ "avec la compression de textures sur radeon/r200"
diff --git a/src/util/xmlpool/gen_xmlpool.py b/src/util/xmlpool/gen_xmlpool.py
new file mode 100644 (file)
index 0000000..eb68a65
--- /dev/null
@@ -0,0 +1,203 @@
+
+#
+# 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[3:]
+
+# Escape special characters in C strings
+def escapeCString (s):
+    escapeSeqs = {'\a' : '\\a', '\b' : '\\b', '\f' : '\\f', '\n' : '\\n',
+                  '\r' : '\\r', '\t' : '\\t', '\v' : '\\v', '\\' : '\\\\'}
+    # " -> '' is a hack. Quotes (") aren't possible in XML attributes.
+    # Better use Unicode characters for typographic quotes in option
+    # descriptions and translations.
+    i = 0
+    r = ''
+    while i < len(s):
+        # Special case: escape double quote with \u201c or \u201d, depending
+        # on whether it's an open or close quote. This is needed because plain
+        # double quotes are not possible in XML attributes.
+        if s[i] == '"':
+            if i == len(s)-1 or s[i+1].isspace():
+                # close quote
+                q = u'\u201c'
+            else:
+                # open quote
+                q = u'\u201d'
+            r = r + q
+        elif escapeSeqs.has_key(s[i]):
+            r = r + escapeSeqs[s[i]]
+        else:
+            r = r + s[i]
+        i = i + 1
+    return r
+
+# Expand escape sequences in C strings (needed for gettext lookup)
+def expandCString (s):
+    escapeSeqs = {'a' : '\a', 'b' : '\b', 'f' : '\f', 'n' : '\n',
+                  'r' : '\r', 't' : '\t', 'v' : '\v',
+                  '"' : '"', '\\' : '\\'}
+    i = 0
+    escape = False
+    hexa = False
+    octa = False
+    num = 0
+    digits = 0
+    r = ''
+    while i < len(s):
+        if not escape:
+            if s[i] == '\\':
+                escape = True
+            else:
+                r = r + s[i]
+        elif hexa:
+            if (s[i] >= '0' and s[i] <= '9') or \
+               (s[i] >= 'a' and s[i] <= 'f') or \
+               (s[i] >= 'A' and s[i] <= 'F'):
+                num = num * 16 + int(s[i],16)
+                digits = digits + 1
+            else:
+                digits = 2
+            if digits >= 2:
+                hexa = False
+                escape = False
+                r = r + chr(num)
+        elif octa:
+            if s[i] >= '0' and s[i] <= '7':
+                num = num * 8 + int(s[i],8)
+                digits = digits + 1
+            else:
+                digits = 3
+            if digits >= 3:
+                octa = False
+                escape = False
+                r = r + chr(num)
+        else:
+            if escapeSeqs.has_key(s[i]):
+                r = r + escapeSeqs[s[i]]
+                escape = False
+            elif s[i] >= '0' and s[i] <= '7':
+                octa = True
+                num = int(s[i],8)
+                if num <= 3:
+                    digits = 1
+                else:
+                    digits = 2
+            elif s[i] == 'x' or s[i] == 'X':
+                hexa = True
+                num = 0
+                digits = 0
+            else:
+                r = r + s[i]
+                escape = False
+        i = i + 1
+    return r
+
+# Expand matches. The first match is always a DESC or DESC_BEGIN match.
+# Subsequent matches are ENUM matches.
+#
+# DESC, DESC_BEGIN format: \1 \2=<lang> \3 \4=gettext(" \5=<text> \6=") \7
+# ENUM format:             \1 \2=gettext(" \3=<text> \4=") \5
+def expandMatches (matches, translations, end=None):
+    assert len(matches) > 0
+    nTranslations = len(translations)
+    i = 0
+    # Expand the description+enums for all translations
+    for lang,trans in translations:
+        i = i + 1
+        # Make sure that all but the last line of a simple description
+        # are extended with a backslash.
+        suffix = ''
+        if len(matches) == 1 and i < len(translations) and \
+               not matches[0].expand (r'\7').endswith('\\'):
+            suffix = ' \\'
+        # Expand the description line. Need to use ugettext in order to allow
+        # non-ascii unicode chars in the original English descriptions.
+        text = escapeCString (trans.ugettext (unicode (expandCString (
+            matches[0].expand (r'\5')), "utf-8"))).encode("utf-8")
+        print matches[0].expand (r'\1' + lang + r'\3"' + text + r'"\7') + suffix
+        # Expand any subsequent enum lines
+        for match in matches[1:]:
+            text = escapeCString (trans.ugettext (unicode (expandCString (
+                match.expand (r'\3')), "utf-8"))).encode("utf-8")
+            print match.expand (r'\1"' + text + r'"\5')
+
+        # Expand description end
+        if end:
+            print end,
+
+# Compile a list of translation classes to all supported languages.
+# The first translation is always a NullTranslations.
+translations = [("en", gettext.NullTranslations())]
+for lang in languages:
+    try:
+        trans = gettext.translation ("options", localedir, [lang])
+    except IOError:
+        sys.stderr.write ("Warning: language '%s' not found.\n" % lang)
+        continue
+    translations.append ((lang, trans))
+
+# Regular expressions:
+reLibintl_h  = re.compile (r'#\s*include\s*<libintl.h>')
+reDESC       = re.compile (r'(\s*DRI_CONF_DESC\s*\(\s*)([a-z]+)(\s*,\s*)(gettext\s*\(\s*")(.*)("\s*\))(\s*\)[ \t]*\\?)$')
+reDESC_BEGIN = re.compile (r'(\s*DRI_CONF_DESC_BEGIN\s*\(\s*)([a-z]+)(\s*,\s*)(gettext\s*\(\s*")(.*)("\s*\))(\s*\)[ \t]*\\?)$')
+reENUM       = re.compile (r'(\s*DRI_CONF_ENUM\s*\([^,]+,\s*)(gettext\s*\(\s*")(.*)("\s*\))(\s*\)[ \t]*\\?)$')
+reDESC_END   = re.compile (r'\s*DRI_CONF_DESC_END')
+
+# Print a header
+print \
+"/***********************************************************************\n" \
+" ***        THIS FILE IS GENERATED AUTOMATICALLY. DON'T EDIT!        ***\n" \
+" ***********************************************************************/"
+
+# Process the options template and generate options.h with all
+# translations.
+template = file (template_header_path, "r")
+descMatches = []
+for line in template:
+    if len(descMatches) > 0:
+        matchENUM     = reENUM    .match (line)
+        matchDESC_END = reDESC_END.match (line)
+        if matchENUM:
+            descMatches.append (matchENUM)
+        elif matchDESC_END:
+            expandMatches (descMatches, translations, line)
+            descMatches = []
+        else:
+            sys.stderr.write (
+                "Warning: unexpected line inside description dropped:\n%s\n" \
+                % line)
+        continue
+    if reLibintl_h.search (line):
+        # Ignore (comment out) #include <libintl.h>
+        print "/* %s * commented out by gen_xmlpool.py */" % line
+        continue
+    matchDESC       = reDESC      .match (line)
+    matchDESC_BEGIN = reDESC_BEGIN.match (line)
+    if matchDESC:
+        assert len(descMatches) == 0
+        expandMatches ([matchDESC], translations)
+    elif matchDESC_BEGIN:
+        assert len(descMatches) == 0
+        descMatches = [matchDESC_BEGIN]
+    else:
+        print line,
+
+if len(descMatches) > 0:
+    sys.stderr.write ("Warning: unterminated description at end of file.\n")
+    expandMatches (descMatches, translations)
diff --git a/src/util/xmlpool/nl.po b/src/util/xmlpool/nl.po
new file mode 100644 (file)
index 0000000..86cb6e9
--- /dev/null
@@ -0,0 +1,311 @@
+# Dutch translations for PACKAGE package.
+# Copyright (C) 2005 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+#  <manfred.stienstra@dwerg.net>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-09-25 22:29-0600\n"
+"PO-Revision-Date: 2005-04-12 20:09+0200\n"
+"Last-Translator:  Manfred Stienstra <manfred.stienstra@dwerg.net>\n"
+"Language-Team: Dutch <vertaling@nl.linux.org>\n"
+"Language: nl\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: t_options.h:56
+msgid "Debugging"
+msgstr "Debuggen"
+
+#: t_options.h:60
+msgid "Disable 3D acceleration"
+msgstr "3D versnelling uitschakelen"
+
+#: t_options.h:65
+msgid "Show performance boxes"
+msgstr "Laat prestatie boxjes zien"
+
+#: t_options.h:70
+msgid "Enable flushing batchbuffer after each draw call"
+msgstr ""
+
+#: t_options.h:75
+msgid "Enable flushing GPU caches with each draw call"
+msgstr ""
+
+#: t_options.h:80
+msgid "Disable throttling on first batch after flush"
+msgstr ""
+
+#: t_options.h:85
+msgid "Force GLSL extension default behavior to 'warn'"
+msgstr ""
+
+#: t_options.h:90
+msgid "Disable dual source blending"
+msgstr ""
+
+#: t_options.h:95
+msgid "Disable backslash-based line continuations in GLSL source"
+msgstr ""
+
+#: t_options.h:100
+msgid "Disable GL_ARB_shader_bit_encoding"
+msgstr ""
+
+#: t_options.h:105
+msgid ""
+"Force a default GLSL version for shaders that lack an explicit #version line"
+msgstr ""
+
+#: t_options.h:110
+msgid "Allow GLSL #extension directives in the middle of shaders"
+msgstr ""
+
+#: t_options.h:120
+msgid "Image Quality"
+msgstr "Beeldkwaliteit"
+
+#: t_options.h:133
+msgid "Texture color depth"
+msgstr "Textuurkleurendiepte"
+
+#: t_options.h:134
+msgid "Prefer frame buffer color depth"
+msgstr "Prefereer kaderbufferkleurdiepte"
+
+#: t_options.h:135
+msgid "Prefer 32 bits per texel"
+msgstr "Prefereer 32 bits per texel"
+
+#: t_options.h:136
+msgid "Prefer 16 bits per texel"
+msgstr "Prefereer 16 bits per texel"
+
+#: t_options.h:137
+msgid "Force 16 bits per texel"
+msgstr "Dwing 16 bits per texel af"
+
+#: t_options.h:143
+msgid "Initial maximum value for anisotropic texture filtering"
+msgstr "Initïele maximum waarde voor anisotrophische textuur filtering"
+
+#: t_options.h:148
+msgid "Forbid negative texture LOD bias"
+msgstr "Verbied negatief niveau detailonderscheid (LOD) van texturen"
+
+#: t_options.h:153
+msgid ""
+"Enable S3TC texture compression even if software support is not available"
+msgstr ""
+"Schakel S3TC textuurcompressie in, zelfs als softwareondersteuning niet "
+"aanwezig is"
+
+#: t_options.h:160
+msgid "Initial color reduction method"
+msgstr "Initïele kleurreductie methode"
+
+#: t_options.h:161
+msgid "Round colors"
+msgstr "Rond kleuren af"
+
+#: t_options.h:162
+msgid "Dither colors"
+msgstr "Rasteriseer kleuren"
+
+#: t_options.h:170
+msgid "Color rounding method"
+msgstr "Kleurafrondingmethode"
+
+#: t_options.h:171
+msgid "Round color components downward"
+msgstr "Rond kleurencomponenten af naar beneden"
+
+#: t_options.h:172
+msgid "Round to nearest color"
+msgstr "Rond af naar dichtsbijzijnde kleur"
+
+#: t_options.h:181
+msgid "Color dithering method"
+msgstr "Kleurrasteriseringsmethode"
+
+#: t_options.h:182
+msgid "Horizontal error diffusion"
+msgstr "Horizontale foutdiffusie"
+
+#: t_options.h:183
+msgid "Horizontal error diffusion, reset error at line start"
+msgstr "Horizontale foutdiffusie, zet fout bij lijnbegin terug"
+
+#: t_options.h:184
+msgid "Ordered 2D color dithering"
+msgstr "Geordende 2D kleurrasterisering"
+
+#: t_options.h:190
+msgid "Floating point depth buffer"
+msgstr "Dieptebuffer als commagetal"
+
+#: t_options.h:195
+msgid "A post-processing filter to cel-shade the output"
+msgstr ""
+
+#: t_options.h:200
+msgid "A post-processing filter to remove the red channel"
+msgstr ""
+
+#: t_options.h:205
+msgid "A post-processing filter to remove the green channel"
+msgstr ""
+
+#: t_options.h:210
+msgid "A post-processing filter to remove the blue channel"
+msgstr ""
+
+#: t_options.h:215
+msgid ""
+"Morphological anti-aliasing based on Jimenez\\' MLAA. 0 to disable, 8 for "
+"default quality"
+msgstr ""
+
+#: t_options.h:220
+msgid ""
+"Morphological anti-aliasing based on Jimenez\\' MLAA. 0 to disable, 8 for "
+"default quality. Color version, usable with 2d GL apps"
+msgstr ""
+
+#: t_options.h:230
+msgid "Performance"
+msgstr "Prestatie"
+
+#: t_options.h:238
+msgid "TCL mode (Transformation, Clipping, Lighting)"
+msgstr "TCL-modus (Transformatie, Clipping, Licht)"
+
+#: t_options.h:239
+msgid "Use software TCL pipeline"
+msgstr "Gebruik software TCL pijpleiding"
+
+#: t_options.h:240
+msgid "Use hardware TCL as first TCL pipeline stage"
+msgstr "Gebruik hardware TCL as eerste TCL pijpleiding trap"
+
+#: t_options.h:241
+msgid "Bypass the TCL pipeline"
+msgstr "Omzeil de TCL pijpleiding"
+
+#: t_options.h:242
+msgid ""
+"Bypass the TCL pipeline with state-based machine code generated on-the-fly"
+msgstr ""
+"Omzeil de TCL pijpleiding met staatgebaseerde machinecode die tijdens "
+"executie gegenereerd wordt"
+
+#: t_options.h:251
+msgid "Method to limit rendering latency"
+msgstr "Methode om beeldopbouwvertraging te onderdrukken"
+
+#: t_options.h:252
+msgid "Busy waiting for the graphics hardware"
+msgstr "Actief wachten voor de grafische hardware"
+
+#: t_options.h:253
+msgid "Sleep for brief intervals while waiting for the graphics hardware"
+msgstr ""
+"Slaap voor korte intervallen tijdens het wachten op de grafische hardware"
+
+#: t_options.h:254
+msgid "Let the graphics hardware emit a software interrupt and sleep"
+msgstr ""
+"Laat de grafische hardware een software onderbreking uitzenden en in slaap "
+"vallen"
+
+#: t_options.h:264
+msgid "Synchronization with vertical refresh (swap intervals)"
+msgstr "Synchronisatie met verticale verversing (interval omwisselen)"
+
+#: t_options.h:265
+msgid "Never synchronize with vertical refresh, ignore application's choice"
+msgstr ""
+"Nooit synchroniseren met verticale verversing, negeer de keuze van de "
+"applicatie"
+
+#: t_options.h:266
+msgid "Initial swap interval 0, obey application's choice"
+msgstr "Initïeel omwisselingsinterval 0, honoreer de keuze van de applicatie"
+
+#: t_options.h:267
+msgid "Initial swap interval 1, obey application's choice"
+msgstr "Initïeel omwisselingsinterval 1, honoreer de keuze van de applicatie"
+
+#: t_options.h:268
+msgid ""
+"Always synchronize with vertical refresh, application chooses the minimum "
+"swap interval"
+msgstr ""
+"Synchroniseer altijd met verticale verversing, de applicatie kiest het "
+"minimum omwisselingsinterval"
+
+#: t_options.h:276
+msgid "Use HyperZ to boost performance"
+msgstr "Gebruik HyperZ om de prestaties te verbeteren"
+
+#: t_options.h:281
+msgid "Number of texture units used"
+msgstr "Aantal textuureenheden in gebruik"
+
+#: t_options.h:286
+msgid "Texture filtering quality vs. speed, AKA “brilinear” texture filtering"
+msgstr ""
+"Textuurfilterkwaliteit versus -snelheid, ookwel bekend als “brilineaire” "
+"textuurfiltering"
+
+#: t_options.h:294
+msgid "Used types of texture memory"
+msgstr "Gebruikte soorten textuurgeheugen"
+
+#: t_options.h:295
+msgid "All available memory"
+msgstr "Al het beschikbaar geheugen"
+
+#: t_options.h:296
+msgid "Only card memory (if available)"
+msgstr "Alleen geheugen op de kaart (als het aanwezig is)"
+
+#: t_options.h:297
+msgid "Only GART (AGP/PCIE) memory (if available)"
+msgstr "Alleen GART (AGP/PCIE) geheugen (als het aanwezig is)"
+
+#: t_options.h:309
+msgid "Features that are not hardware-accelerated"
+msgstr "Eigenschappen die niet hardwareversneld zijn"
+
+#: t_options.h:313
+msgid "Enable extension GL_ARB_vertex_program"
+msgstr "Zet uitbreiding GL_ARB_vertex_program aan"
+
+#: t_options.h:323
+msgid "Miscellaneous"
+msgstr ""
+
+#: t_options.h:327
+msgid "Create all visuals with a depth buffer"
+msgstr ""
+
+#: t_options.h:337
+msgid "Initialization"
+msgstr ""
+
+#: t_options.h:341
+msgid "Define the graphic device to use if possible"
+msgstr ""
+
+#~ msgid ""
+#~ "Enable hack to allow larger textures with texture compression on radeon/"
+#~ "r200"
+#~ msgstr ""
+#~ "Schakel hack in om met textuurcompressie grotere texturen toe te staan op "
+#~ "een radeon/r200"
diff --git a/src/util/xmlpool/sv.po b/src/util/xmlpool/sv.po
new file mode 100644 (file)
index 0000000..d8d7353
--- /dev/null
@@ -0,0 +1,309 @@
+# Swedish translation of DRI driver options.
+# Copyright (C) Free Software Foundation, Inc.
+# This file is distributed under the same license as the Mesa package.
+# Daniel Nylander <po@danielnylander.se>, 2006.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Mesa DRI\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2014-09-25 22:29-0600\n"
+"PO-Revision-Date: 2006-09-18 10:56+0100\n"
+"Last-Translator: Daniel Nylander <po@danielnylander.se>\n"
+"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
+"Language: sv\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: t_options.h:56
+msgid "Debugging"
+msgstr "Felsökning"
+
+#: t_options.h:60
+msgid "Disable 3D acceleration"
+msgstr "Inaktivera 3D-accelerering"
+
+#: t_options.h:65
+msgid "Show performance boxes"
+msgstr "Visa prestandarutor"
+
+#: t_options.h:70
+msgid "Enable flushing batchbuffer after each draw call"
+msgstr ""
+
+#: t_options.h:75
+msgid "Enable flushing GPU caches with each draw call"
+msgstr ""
+
+#: t_options.h:80
+msgid "Disable throttling on first batch after flush"
+msgstr ""
+
+#: t_options.h:85
+msgid "Force GLSL extension default behavior to 'warn'"
+msgstr ""
+
+#: t_options.h:90
+msgid "Disable dual source blending"
+msgstr ""
+
+#: t_options.h:95
+msgid "Disable backslash-based line continuations in GLSL source"
+msgstr ""
+
+#: t_options.h:100
+msgid "Disable GL_ARB_shader_bit_encoding"
+msgstr ""
+
+#: t_options.h:105
+msgid ""
+"Force a default GLSL version for shaders that lack an explicit #version line"
+msgstr ""
+
+#: t_options.h:110
+msgid "Allow GLSL #extension directives in the middle of shaders"
+msgstr ""
+
+#: t_options.h:120
+msgid "Image Quality"
+msgstr "Bildkvalitet"
+
+#: t_options.h:133
+msgid "Texture color depth"
+msgstr "Färgdjup för texturer"
+
+#: t_options.h:134
+msgid "Prefer frame buffer color depth"
+msgstr "Föredra färgdjupet för framebuffer"
+
+#: t_options.h:135
+msgid "Prefer 32 bits per texel"
+msgstr "Föredra 32 bitar per texel"
+
+#: t_options.h:136
+msgid "Prefer 16 bits per texel"
+msgstr "Föredra 16 bitar per texel"
+
+#: t_options.h:137
+msgid "Force 16 bits per texel"
+msgstr "Tvinga 16 bitar per texel"
+
+#: t_options.h:143
+msgid "Initial maximum value for anisotropic texture filtering"
+msgstr "Initialt maximalt värde för anisotropisk texturfiltrering"
+
+#: t_options.h:148
+msgid "Forbid negative texture LOD bias"
+msgstr "Förbjud negativ LOD-kompensation för texturer"
+
+#: t_options.h:153
+msgid ""
+"Enable S3TC texture compression even if software support is not available"
+msgstr "Aktivera S3TC-texturkomprimering även om programvarustöd saknas"
+
+#: t_options.h:160
+msgid "Initial color reduction method"
+msgstr "Initial färgminskningsmetod"
+
+#: t_options.h:161
+msgid "Round colors"
+msgstr "Avrunda färger"
+
+#: t_options.h:162
+msgid "Dither colors"
+msgstr "Utjämna färger"
+
+#: t_options.h:170
+msgid "Color rounding method"
+msgstr "Färgavrundningsmetod"
+
+#: t_options.h:171
+msgid "Round color components downward"
+msgstr "Avrunda färdkomponenter nedåt"
+
+#: t_options.h:172
+msgid "Round to nearest color"
+msgstr "Avrunda till närmsta färg"
+
+#: t_options.h:181
+msgid "Color dithering method"
+msgstr "Färgutjämningsmetod"
+
+#: t_options.h:182
+msgid "Horizontal error diffusion"
+msgstr "Horisontell felspridning"
+
+#: t_options.h:183
+msgid "Horizontal error diffusion, reset error at line start"
+msgstr "Horisontell felspridning, återställ fel vid radbörjan"
+
+#: t_options.h:184
+msgid "Ordered 2D color dithering"
+msgstr "Ordnad 2D-färgutjämning"
+
+#: t_options.h:190
+msgid "Floating point depth buffer"
+msgstr "Buffert för flytande punktdjup"
+
+#: t_options.h:195
+msgid "A post-processing filter to cel-shade the output"
+msgstr ""
+
+#: t_options.h:200
+msgid "A post-processing filter to remove the red channel"
+msgstr ""
+
+#: t_options.h:205
+msgid "A post-processing filter to remove the green channel"
+msgstr ""
+
+#: t_options.h:210
+msgid "A post-processing filter to remove the blue channel"
+msgstr ""
+
+#: t_options.h:215
+msgid ""
+"Morphological anti-aliasing based on Jimenez\\' MLAA. 0 to disable, 8 for "
+"default quality"
+msgstr ""
+
+#: t_options.h:220
+msgid ""
+"Morphological anti-aliasing based on Jimenez\\' MLAA. 0 to disable, 8 for "
+"default quality. Color version, usable with 2d GL apps"
+msgstr ""
+
+#: t_options.h:230
+msgid "Performance"
+msgstr "Prestanda"
+
+#: t_options.h:238
+msgid "TCL mode (Transformation, Clipping, Lighting)"
+msgstr "TCL-läge (Transformation, Clipping, Lighting)"
+
+#: t_options.h:239
+msgid "Use software TCL pipeline"
+msgstr "Använd programvaru-TCL-rörledning"
+
+#: t_options.h:240
+msgid "Use hardware TCL as first TCL pipeline stage"
+msgstr "Använd maskinvaru-TCL som första TCL-rörledningssteg"
+
+#: t_options.h:241
+msgid "Bypass the TCL pipeline"
+msgstr "Kringgå TCL-rörledningen"
+
+#: t_options.h:242
+msgid ""
+"Bypass the TCL pipeline with state-based machine code generated on-the-fly"
+msgstr ""
+"Kringgå TCL-rörledningen med tillståndsbaserad maskinkod som direktgenereras"
+
+#: t_options.h:251
+msgid "Method to limit rendering latency"
+msgstr "Metod för att begränsa renderingslatens"
+
+#: t_options.h:252
+msgid "Busy waiting for the graphics hardware"
+msgstr "Upptagen med att vänta på grafikhårdvaran"
+
+#: t_options.h:253
+msgid "Sleep for brief intervals while waiting for the graphics hardware"
+msgstr "Sov i korta intervall under väntan på grafikhårdvaran"
+
+#: t_options.h:254
+msgid "Let the graphics hardware emit a software interrupt and sleep"
+msgstr "Låt grafikhårdvaran sända ut ett programvaruavbrott och sov"
+
+#: t_options.h:264
+msgid "Synchronization with vertical refresh (swap intervals)"
+msgstr "Synkronisering med vertikal uppdatering (växlingsintervall)"
+
+#: t_options.h:265
+msgid "Never synchronize with vertical refresh, ignore application's choice"
+msgstr "Synkronisera aldrig med vertikal uppdatering, ignorera programmets val"
+
+#: t_options.h:266
+msgid "Initial swap interval 0, obey application's choice"
+msgstr "Initialt växlingsintervall 0, följ programmets val"
+
+#: t_options.h:267
+msgid "Initial swap interval 1, obey application's choice"
+msgstr "Initialt växlingsintervall 1, följ programmets val"
+
+#: t_options.h:268
+msgid ""
+"Always synchronize with vertical refresh, application chooses the minimum "
+"swap interval"
+msgstr ""
+"Synkronisera alltid med vertikal uppdatering, programmet väljer den minsta "
+"växlingsintervallen"
+
+#: t_options.h:276
+msgid "Use HyperZ to boost performance"
+msgstr "Använd HyperZ för att maximera prestandan"
+
+#: t_options.h:281
+msgid "Number of texture units used"
+msgstr "Antal använda texturenheter"
+
+#: t_options.h:286
+msgid "Texture filtering quality vs. speed, AKA “brilinear” texture filtering"
+msgstr ""
+"Texturfiltreringskvalitet mot hastighet, även kallad \"brilinear\"-"
+"texturfiltrering"
+
+#: t_options.h:294
+msgid "Used types of texture memory"
+msgstr "Använda typer av texturminne"
+
+#: t_options.h:295
+msgid "All available memory"
+msgstr "Allt tillgängligt minne"
+
+#: t_options.h:296
+msgid "Only card memory (if available)"
+msgstr "Endast kortminne (om tillgängligt)"
+
+#: t_options.h:297
+msgid "Only GART (AGP/PCIE) memory (if available)"
+msgstr "Endast GART-minne (AGP/PCIE) (om tillgängligt)"
+
+#: t_options.h:309
+msgid "Features that are not hardware-accelerated"
+msgstr "Funktioner som inte är hårdvaruaccelererade"
+
+#: t_options.h:313
+msgid "Enable extension GL_ARB_vertex_program"
+msgstr "Aktivera tillägget GL_ARB_vertex_program"
+
+#: t_options.h:323
+msgid "Miscellaneous"
+msgstr ""
+
+#: t_options.h:327
+msgid "Create all visuals with a depth buffer"
+msgstr ""
+
+#: t_options.h:337
+msgid "Initialization"
+msgstr ""
+
+#: t_options.h:341
+msgid "Define the graphic device to use if possible"
+msgstr ""
+
+#~ msgid "Support larger textures not guaranteed to fit into graphics memory"
+#~ msgstr ""
+#~ "Stöd för större texturer är inte garanterat att passa i grafikminnet"
+
+#~ msgid "No"
+#~ msgstr "Nej"
+
+#~ msgid "At least 1 texture must fit under worst-case assumptions"
+#~ msgstr "Åtminstone en textur måste passa för antaget sämsta förhållande"
+
+#~ msgid "Announce hardware limits"
+#~ msgstr "Annonsera hårdvarubegränsningar"
diff --git a/src/util/xmlpool/t_options.h b/src/util/xmlpool/t_options.h
new file mode 100644 (file)
index 0000000..e308839
--- /dev/null
@@ -0,0 +1,431 @@
+/*
+ * 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>
+
+/*
+ * 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,gettext("Debugging"))
+
+#define DRI_CONF_NO_RAST(def) \
+DRI_CONF_OPT_BEGIN_B(no_rast, def) \
+        DRI_CONF_DESC(en,gettext("Disable 3D acceleration")) \
+DRI_CONF_OPT_END
+
+#define DRI_CONF_PERFORMANCE_BOXES(def) \
+DRI_CONF_OPT_BEGIN_B(performance_boxes, def) \
+        DRI_CONF_DESC(en,gettext("Show performance boxes")) \
+DRI_CONF_OPT_END
+
+#define DRI_CONF_ALWAYS_FLUSH_BATCH(def) \
+DRI_CONF_OPT_BEGIN_B(always_flush_batch, def) \
+        DRI_CONF_DESC(en,gettext("Enable flushing batchbuffer after each draw call")) \
+DRI_CONF_OPT_END
+
+#define DRI_CONF_ALWAYS_FLUSH_CACHE(def) \
+DRI_CONF_OPT_BEGIN_B(always_flush_cache, def) \
+        DRI_CONF_DESC(en,gettext("Enable flushing GPU caches with each draw call")) \
+DRI_CONF_OPT_END
+
+#define DRI_CONF_DISABLE_THROTTLING(def) \
+DRI_CONF_OPT_BEGIN_B(disable_throttling, def) \
+       DRI_CONF_DESC(en,gettext("Disable throttling on first batch after flush")) \
+DRI_CONF_OPT_END
+
+#define DRI_CONF_FORCE_GLSL_EXTENSIONS_WARN(def) \
+DRI_CONF_OPT_BEGIN_B(force_glsl_extensions_warn, 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_B(disable_blend_func_extended, def) \
+        DRI_CONF_DESC(en,gettext("Disable dual source blending")) \
+DRI_CONF_OPT_END
+
+#define DRI_CONF_DUAL_COLOR_BLEND_BY_LOCATION(def) \
+DRI_CONF_OPT_BEGIN_B(dual_color_blend_by_location, def) \
+        DRI_CONF_DESC(en,gettext("Identify dual color blending sources by location rather than index")) \
+DRI_CONF_OPT_END
+
+#define DRI_CONF_DISABLE_GLSL_LINE_CONTINUATIONS(def) \
+DRI_CONF_OPT_BEGIN_B(disable_glsl_line_continuations, def) \
+        DRI_CONF_DESC(en,gettext("Disable backslash-based line continuations in GLSL source")) \
+DRI_CONF_OPT_END
+
+#define DRI_CONF_DISABLE_SHADER_BIT_ENCODING(def) \
+DRI_CONF_OPT_BEGIN_B(disable_shader_bit_encoding, def) \
+        DRI_CONF_DESC(en,gettext("Disable GL_ARB_shader_bit_encoding")) \
+DRI_CONF_OPT_END
+
+#define DRI_CONF_FORCE_GLSL_VERSION(def) \
+DRI_CONF_OPT_BEGIN_V(force_glsl_version, int, def, "0:999") \
+        DRI_CONF_DESC(en,gettext("Force a default GLSL version for shaders that lack an explicit #version line")) \
+DRI_CONF_OPT_END
+
+#define DRI_CONF_ALLOW_GLSL_EXTENSION_DIRECTIVE_MIDSHADER(def) \
+DRI_CONF_OPT_BEGIN_B(allow_glsl_extension_directive_midshader, def) \
+        DRI_CONF_DESC(en,gettext("Allow GLSL #extension directives in the middle of shaders")) \
+DRI_CONF_OPT_END
+
+#define DRI_CONF_ALLOW_GLSL_BUILTIN_VARIABLE_REDECLARATION(def) \
+DRI_CONF_OPT_BEGIN_B(allow_glsl_builtin_variable_redeclaration, def) \
+        DRI_CONF_DESC(en,gettext("Allow GLSL built-in variables to be redeclared verbatim")) \
+DRI_CONF_OPT_END
+
+#define DRI_CONF_ALLOW_HIGHER_COMPAT_VERSION(def) \
+DRI_CONF_OPT_BEGIN_B(allow_higher_compat_version, def) \
+        DRI_CONF_DESC(en,gettext("Allow a higher compat profile (version 3.1+) for apps that request it")) \
+DRI_CONF_OPT_END
+
+#define DRI_CONF_FORCE_GLSL_ABS_SQRT(def) \
+DRI_CONF_OPT_BEGIN_B(force_glsl_abs_sqrt, def) \
+        DRI_CONF_DESC(en,gettext("Force computing the absolute value for sqrt() and inversesqrt()")) \
+DRI_CONF_OPT_END
+
+#define DRI_CONF_GLSL_CORRECT_DERIVATIVES_AFTER_DISCARD(def) \
+DRI_CONF_OPT_BEGIN_B(glsl_correct_derivatives_after_discard, def) \
+        DRI_CONF_DESC(en,gettext("Implicit and explicit derivatives after a discard behave as if the discard didn't happen")) \
+DRI_CONF_OPT_END
+
+
+/**
+ * \brief Image quality-related options
+ */
+#define DRI_CONF_SECTION_QUALITY \
+DRI_CONF_SECTION_BEGIN \
+       DRI_CONF_DESC(en,gettext("Image Quality"))
+
+#define DRI_CONF_EXCESS_MIPMAP(def) \
+DRI_CONF_OPT_BEGIN_B(excess_mipmap, 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,gettext("Texture color depth")) \
+                DRI_CONF_ENUM(0,gettext("Prefer frame buffer color depth")) \
+                DRI_CONF_ENUM(1,gettext("Prefer 32 bits per texel")) \
+                DRI_CONF_ENUM(2,gettext("Prefer 16 bits per texel")) \
+                DRI_CONF_ENUM(3,gettext("Force 16 bits 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,gettext("Initial maximum value for anisotropic texture filtering")) \
+DRI_CONF_OPT_END
+
+#define DRI_CONF_NO_NEG_LOD_BIAS(def) \
+DRI_CONF_OPT_BEGIN_B(no_neg_lod_bias, def) \
+        DRI_CONF_DESC(en,gettext("Forbid negative texture LOD bias")) \
+DRI_CONF_OPT_END
+
+#define DRI_CONF_FORCE_S3TC_ENABLE(def) \
+DRI_CONF_OPT_BEGIN_B(force_s3tc_enable, def) \
+        DRI_CONF_DESC(en,gettext("Enable S3TC texture compression even if software support is not available")) \
+DRI_CONF_OPT_END
+
+#define DRI_CONF_PRECISE_TRIG(def) \
+DRI_CONF_OPT_BEGIN_B(precise_trig, def) \
+        DRI_CONF_DESC(en,gettext("Prefer accuracy over performance in trig functions")) \
+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,gettext("Initial color reduction method")) \
+                DRI_CONF_ENUM(0,gettext("Round colors")) \
+                DRI_CONF_ENUM(1,gettext("Dither colors")) \
+        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,gettext("Color rounding method")) \
+                DRI_CONF_ENUM(0,gettext("Round color components downward")) \
+                DRI_CONF_ENUM(1,gettext("Round to nearest color")) \
+        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,gettext("Color dithering method")) \
+                DRI_CONF_ENUM(0,gettext("Horizontal error diffusion")) \
+                DRI_CONF_ENUM(1,gettext("Horizontal error diffusion, reset error at line start")) \
+                DRI_CONF_ENUM(2,gettext("Ordered 2D color dithering")) \
+        DRI_CONF_DESC_END \
+DRI_CONF_OPT_END
+
+#define DRI_CONF_FLOAT_DEPTH(def) \
+DRI_CONF_OPT_BEGIN_B(float_depth, def) \
+        DRI_CONF_DESC(en,gettext("Floating point depth buffer")) \
+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,gettext("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,gettext("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,gettext("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,gettext("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,gettext("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,gettext("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
+
+
+
+/**
+ * \brief Performance-related options
+ */
+#define DRI_CONF_SECTION_PERFORMANCE \
+DRI_CONF_SECTION_BEGIN \
+        DRI_CONF_DESC(en,gettext("Performance"))
+
+#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,gettext("TCL mode (Transformation, Clipping, Lighting)")) \
+                DRI_CONF_ENUM(0,gettext("Use software TCL pipeline")) \
+                DRI_CONF_ENUM(1,gettext("Use hardware TCL as first TCL pipeline stage")) \
+                DRI_CONF_ENUM(2,gettext("Bypass the TCL pipeline")) \
+                DRI_CONF_ENUM(3,gettext("Bypass the TCL pipeline with state-based machine code generated on-the-fly")) \
+        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,gettext("Method to limit rendering latency")) \
+                DRI_CONF_ENUM(0,gettext("Busy waiting for the graphics hardware")) \
+                DRI_CONF_ENUM(1,gettext("Sleep for brief intervals while waiting for the graphics hardware")) \
+                DRI_CONF_ENUM(2,gettext("Let the graphics hardware emit a software interrupt and sleep")) \
+        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,gettext("Synchronization with vertical refresh (swap intervals)")) \
+                DRI_CONF_ENUM(0,gettext("Never synchronize with vertical refresh, ignore application's choice")) \
+                DRI_CONF_ENUM(1,gettext("Initial swap interval 0, obey application's choice")) \
+                DRI_CONF_ENUM(2,gettext("Initial swap interval 1, obey application's choice")) \
+                DRI_CONF_ENUM(3,gettext("Always synchronize with vertical refresh, application chooses the minimum swap interval")) \
+        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_B(hyperz, def) \
+        DRI_CONF_DESC(en,gettext("Use HyperZ to boost performance")) \
+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,gettext("Number of texture units used")) \
+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,gettext("Texture filtering quality vs. speed, AKA “brilinear” texture filtering")) \
+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,gettext("Used types of texture memory")) \
+               DRI_CONF_ENUM(0,gettext("All available memory")) \
+               DRI_CONF_ENUM(1,gettext("Only card memory (if available)")) \
+               DRI_CONF_ENUM(2,gettext("Only GART (AGP/PCIE) memory (if available)")) \
+       DRI_CONF_DESC_END \
+DRI_CONF_OPT_END
+
+#define DRI_CONF_MESA_GLTHREAD(def) \
+DRI_CONF_OPT_BEGIN_B(mesa_glthread, def) \
+        DRI_CONF_DESC(en,gettext("Enable offloading GL driver work to a separate thread")) \
+DRI_CONF_OPT_END
+
+#define DRI_CONF_MESA_NO_ERROR(def) \
+DRI_CONF_OPT_BEGIN_B(mesa_no_error, def) \
+        DRI_CONF_DESC(en,gettext("Disable GL driver error checking")) \
+DRI_CONF_OPT_END
+
+#define DRI_CONF_DISABLE_EXT_BUFFER_AGE(def) \
+DRI_CONF_OPT_BEGIN_B(glx_disable_ext_buffer_age, def) \
+   DRI_CONF_DESC(en, gettext("Disable the GLX_EXT_buffer_age extension")) \
+DRI_CONF_OPT_END
+
+#define DRI_CONF_DISABLE_OML_SYNC_CONTROL(def) \
+DRI_CONF_OPT_BEGIN_B(glx_disable_oml_sync_control, def) \
+   DRI_CONF_DESC(en, gettext("Disable the GLX_OML_sync_control extension")) \
+DRI_CONF_OPT_END
+
+
+/**
+ * \brief Software-fallback options.  To allow using features (like
+ * GL_ARB_vertex_program) on GPUs that don't otherwise support the feature.
+ */
+#define DRI_CONF_SECTION_SOFTWARE \
+DRI_CONF_SECTION_BEGIN \
+        DRI_CONF_DESC(en,gettext("Features that are not hardware-accelerated"))
+
+#define DRI_CONF_ARB_VERTEX_PROGRAM(def) \
+DRI_CONF_OPT_BEGIN_B(arb_vertex_program, def) \
+        DRI_CONF_DESC(en,gettext("Enable extension GL_ARB_vertex_program")) \
+DRI_CONF_OPT_END
+
+
+
+/**
+ * \brief Miscellaneous configuration options
+ */
+#define DRI_CONF_SECTION_MISCELLANEOUS \
+DRI_CONF_SECTION_BEGIN \
+        DRI_CONF_DESC(en,gettext("Miscellaneous"))
+
+#define DRI_CONF_ALWAYS_HAVE_DEPTH_BUFFER(def) \
+DRI_CONF_OPT_BEGIN_B(always_have_depth_buffer, def) \
+        DRI_CONF_DESC(en,gettext("Create all visuals with a depth buffer")) \
+DRI_CONF_OPT_END
+
+#define DRI_CONF_GLSL_ZERO_INIT(def) \
+DRI_CONF_OPT_BEGIN_B(glsl_zero_init, def) \
+        DRI_CONF_DESC(en,gettext("Force uninitialized variables to default to zero")) \
+DRI_CONF_OPT_END
+
+/**
+ * \brief Initialization configuration options
+ */
+#define DRI_CONF_SECTION_INITIALIZATION \
+DRI_CONF_SECTION_BEGIN \
+        DRI_CONF_DESC(en,gettext("Initialization"))
+
+#define DRI_CONF_DEVICE_ID_PATH_TAG(def) \
+DRI_CONF_OPT_BEGIN(device_id, string, def) \
+        DRI_CONF_DESC(en,gettext("Define the graphic device to use if possible")) \
+DRI_CONF_OPT_END
+
+/**
+ * \brief Gallium-Nine specific configuration options
+ */
+
+#define DRI_CONF_SECTION_NINE \
+DRI_CONF_SECTION_BEGIN \
+        DRI_CONF_DESC(en,gettext("Gallium Nine"))
+
+#define DRI_CONF_NINE_THROTTLE(def) \
+DRI_CONF_OPT_BEGIN(throttle_value, int, def) \
+        DRI_CONF_DESC(en,gettext("Define the throttling value. -1 for no throttling, -2 for default (usually 2), 0 for glfinish behaviour")) \
+DRI_CONF_OPT_END
+
+#define DRI_CONF_NINE_THREADSUBMIT(def) \
+DRI_CONF_OPT_BEGIN_B(thread_submit, def) \
+        DRI_CONF_DESC(en,gettext("Use an additional thread to submit buffers.")) \
+DRI_CONF_OPT_END
+
+#define DRI_CONF_NINE_OVERRIDEVENDOR(def) \
+DRI_CONF_OPT_BEGIN(override_vendorid, int, def) \
+        DRI_CONF_DESC(en,gettext("Define the vendor_id to report. This allows faking another hardware vendor.")) \
+DRI_CONF_OPT_END
+
+#define DRI_CONF_NINE_ALLOWDISCARDDELAYEDRELEASE(def) \
+DRI_CONF_OPT_BEGIN_B(discard_delayed_release, def) \
+        DRI_CONF_DESC(en,gettext("Whether to allow the display server to release buffers with a delay when using d3d's presentation mode DISCARD. Default to true. Set to false if suffering from lag (thread_submit=true can also help in this situation).")) \
+DRI_CONF_OPT_END
+
+#define DRI_CONF_NINE_TEARFREEDISCARD(def) \
+DRI_CONF_OPT_BEGIN_B(tearfree_discard, def) \
+        DRI_CONF_DESC(en,gettext("Whether to make d3d's presentation mode DISCARD (games usually use that mode) Tear Free. If rendering above screen refresh, some frames will get skipped. false by default.")) \
+DRI_CONF_OPT_END
+
+#define DRI_CONF_NINE_CSMT(def) \
+DRI_CONF_OPT_BEGIN(csmt_force, int, def) \
+        DRI_CONF_DESC(en,gettext("If set to 1, force gallium nine CSMT. If set to 0, disable it. By default (-1) CSMT is enabled on known thread-safe drivers.")) \
+DRI_CONF_OPT_END