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