Commit 55ba0dcc authored by Felix Kühling's avatar Felix Kühling

Manage option translations in separate .po files to make translations

easier for non-programmers familiar with GNU gettext. For now there is
only a German translation but more translations are encouraged.

Translatable strings are extracted from t_options.h containing option
definitions with English descriptions. A corresponding header options.h
with all available translations of option descriptions is generated by
gen_xmlpool.py and included by xmlpool.h.

Many option descriptions were rephrased to make them unambiguous for
translation without context. They are hopefully more helpful to users at
the same time.
parent aaa5a664
This diff is collapsed.
# 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=de.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
all: options.h
# Only intermediate files are cleaned up. options.h is not deleted because
# it's in CVS.
clean:
rm -f $(POT) *~
rm -rf $(LANGS)
# Default target options.h
options.h: t_options.h mo
python gen_xmlpool.py $(LANGS) > options.h
# Update .mo files from the corresponding .po files.
mo:
@for mo in $(MOS); do \
lang=$${mo%%/*}; \
echo "Updating $$mo from $$lang.po."; \
mkdir -p $${mo%/*}; \
msgfmt -o $$mo $$lang.po; \
done
# Use this target to create or update .po files with new messages in
# driconf.py.
po: $(POS)
pot: $(POT)
# Extract message catalog from driconf.py.
$(POT): t_options.h
xgettext -L C --from-code utf-8 -o $(POT) t_options.h
# Create or update a .po file for a specific language.
%.po: $(POT)
@if [ -f $@ ]; then \
echo "Merging new strings from $(POT) into $@."; \
mv $@ $@~; \
msgmerge -o $@ $@~ $(POT); \
else \
echo "Initializing $@ from $(POT)."; \
msginit -i $(POT) -o $@~ --locale=$*; \
sed -e 's/charset=.*\\n/charset=UTF-8\\n/' $@~ > $@; \
fi
# 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: 2005-04-11 23:19+0200\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"
"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:53
msgid "Debugging"
msgstr "Fehlersuche"
#: t_options.h:57
msgid "Disable 3D acceleration"
msgstr "3D-Beschleunigung abschalten"
#: t_options.h:62
msgid "Show performance boxes"
msgstr "Zeige Performanceboxen"
#: t_options.h:69
msgid "Image Quality"
msgstr "Bildqualität"
#: t_options.h:77
msgid "Texture color depth"
msgstr "Texturfarbtiefe"
#: t_options.h:78
msgid "Prefer frame buffer color depth"
msgstr "Bevorzuge Farbtiefe des Framebuffers"
#: t_options.h:79
msgid "Prefer 32 bits per texel"
msgstr "Bevorzuge 32 bits pro Texel"
#: t_options.h:80
msgid "Prefer 16 bits per texel"
msgstr "Bevorzuge 16 bits pro Texel"
#: t_options.h:81
msgid "Force 16 bits per texel"
msgstr "Erzwinge 16 bits pro Texel"
#: t_options.h:87
msgid "Initial maximum value for anisotropic texture filtering"
msgstr "Initialer Maximalwert für anisotropische Texturfilterung"
#: t_options.h:92
msgid "Forbid negative texture LOD bias"
msgstr "Verbiete negative Textur-Detailgradverschiebung"
#: t_options.h:97
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:104
msgid "Initial color reduction method"
msgstr "Initiale Farbreduktionsmethode"
#: t_options.h:105
msgid "Round colors"
msgstr "Farben runden"
#: t_options.h:106
msgid "Dither colors"
msgstr "Farben rastern"
#: t_options.h:114
msgid "Color rounding method"
msgstr "Farbrundungsmethode"
#: t_options.h:115
msgid "Round color components downward"
msgstr "Farbkomponenten abrunden"
#: t_options.h:116
msgid "Round to nearest color"
msgstr "Zur ähnlichsten Farbe runden"
#: t_options.h:125
msgid "Color dithering method"
msgstr "Farbrasterungsmethode"
#: t_options.h:126
msgid "Horizontal error diffusion"
msgstr "Horizontale Fehlerstreuung"
#: t_options.h:127
msgid "Horizontal error diffusion, reset error at line start"
msgstr "Horizontale Fehlerstreuung, Fehler am Zeilenanfang zurücksetzen"
#: t_options.h:128
msgid "Ordered 2D color dithering"
msgstr "Geordnete 2D Farbrasterung"
#: t_options.h:134
msgid "Floating point depth buffer"
msgstr "Fließkomma z-Puffer"
#: t_options.h:140
msgid "Performance"
msgstr "Leistung"
#: t_options.h:148
msgid "TCL mode (Transformation, Clipping, Lighting)"
msgstr "TCL-Modus (Transformation, Clipping, Licht)"
#: t_options.h:149
msgid "Use software TCL pipeline"
msgstr "Benutze die Software-TCL-Pipeline"
#: t_options.h:150
msgid "Use hardware TCL as first TCL pipeline stage"
msgstr "Benutze Hardware TCL als erste Stufe der TCL-Pipeline"
#: t_options.h:151
msgid "Bypass the TCL pipeline"
msgstr "Umgehe die TCL-Pipeline"
#: t_options.h:152
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:161
msgid "Method to limit rendering latency"
msgstr "Methode zur Begrenzung der Bildverzögerung"
#: t_options.h:162
msgid "Busy waiting for the graphics hardware"
msgstr "Aktives Warten auf die Grafikhardware"
#: t_options.h:163
msgid "Sleep for brief intervals while waiting for the graphics hardware"
msgstr "Kurze Schlafintervalle beim Warten auf die Grafikhardware"
#: t_options.h:164
msgid "Let the graphics hardware emit a software interrupt and sleep"
msgstr ""
"Die Grafikhardware eine Softwareunterbrechnung erzeugen lassen und schlafen"
#: t_options.h:174
msgid "Synchronization with vertical refresh (swap intervals)"
msgstr "Synchronisation mit der vertikalen Bildwiederholung"
#: t_options.h:175
msgid "Never synchronize with vertical refresh, ignore application's choice"
msgstr ""
"Niemals mit der Bildwiederholung synchronisieren, Anweisungen der Anwendung "
"ignorieren"
#: t_options.h:176
msgid "Initial swap interval 0, obey application's choice"
msgstr "Initiales Bildinterval 0, Anweisungen der Anwendung gehorchen"
#: t_options.h:177
msgid "Initial swap interval 1, obey application's choice"
msgstr "Initiales Bildinterval 1, Anweisungen der Anwendung gehorchen"
#: t_options.h:178
msgid ""
"Always synchronize with vertical refresh, application chooses the minimum "
"swap interval"
msgstr ""
"Immer mit der Bildwiederholung synchronisieren, Anwendung wählt das minmale "
"Bildinterval"
#: t_options.h:186
msgid "Use HyperZ to boost performance"
msgstr "HyperZ zur Leistungssteigerung verwenden"
#: t_options.h:191
msgid "Number of texture units used"
msgstr "Anzahl der benutzten Textureinheiten"
#: t_options.h:196
msgid ""
"Enable hack to allow larger textures with texture compression on radeon/r200"
msgstr ""
"Hack aktivieren, der mit Texturkompression auf radeon/r200 größere Texturen "
"erlaubt"
#: t_options.h:201
msgid "Texture filtering quality vs. speed, AKA “brilinear” texture filtering"
msgstr ""
"Texturfilterqualität versus -geschwindigkeit, auch bekannt als „brilineare“ "
"Texturfilterung"
#: t_options.h:209
msgid "Used types of texture memory"
msgstr "Benutzte Arten von Texturspeicher"
#: t_options.h:210
msgid "All available memory"
msgstr "Aller verfügbarer Speicher"
#: t_options.h:211
msgid "Only card memory (if available)"
msgstr "Nur Grafikspeicher (falls verfügbar)"
#: t_options.h:212
msgid "Only GART (AGP/PCIE) memory (if available)"
msgstr "Nur GART-Speicher (AGP/PCIE) (falls verfügbar)"
#: t_options.h:220
msgid "Features that are not hardware-accelerated"
msgstr "Funktionalität, die nicht hardwarebeschleunigt ist"
#: t_options.h:224
msgid "Enable extension GL_ARB_vertex_program"
msgstr "Erweiterung GL_ARB_vertex_program aktivieren"
#: t_options.h:229
msgid "Enable extension GL_NV_vertex_program"
msgstr "Erweiterung GL_NV_vertex_program aktivieren"
#!/usr/bin/python
import sys
import gettext
import re
# List of supported languages
languages = sys.argv[1:]
# 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):
if escapeSeqs.has_key(s[i]):
if s[i] == '"':
sys.stderr.write (
"Warning: Double quotes don't work in XML attributes. "
"Escaping with ''.\n"
"Consider using typographic quotes (\\u201c-\\u201f) "
"instead.\n%s\n" % repr(s))
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", ".", [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 ("t_options.h", "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)
This diff is collapsed.
/*
* 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(no_rast,bool,def) \
DRI_CONF_DESC(en,gettext("Disable 3D acceleration")) \
DRI_CONF_OPT_END
#define DRI_CONF_PERFORMANCE_BOXES(def) \
DRI_CONF_OPT_BEGIN(performance_boxes,bool,def) \
DRI_CONF_DESC(en,gettext("Show performance boxes")) \
DRI_CONF_OPT_END
/** \brief Texture-related options */
#define DRI_CONF_SECTION_QUALITY \
DRI_CONF_SECTION_BEGIN \
DRI_CONF_DESC(en,gettext("Image Quality"))
#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(no_neg_lod_bias,bool,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(force_s3tc_enable,bool,def) \
DRI_CONF_DESC(en,gettext("Enable S3TC texture compression even if software support is not available")) \
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(float_depth,bool,def) \
DRI_CONF_DESC(en,gettext("Floating point depth buffer")) \
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(hyperz,bool,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_LEVEL_HACK(def) \
DRI_CONF_OPT_BEGIN(texture_level_hack,bool,def) \
DRI_CONF_DESC(en,gettext("Enable hack to allow larger textures with texture compression on radeon/r200")) \
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