/contrib/sdk/sources/Mesa/src/mesa/drivers/dri/common/Android.mk |
---|
0,0 → 1,88 |
# |
# Mesa 3-D graphics library |
# |
# Copyright (C) 2011 Intel Corporation |
# |
# 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 |
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING |
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER |
# DEALINGS IN THE SOFTWARE. |
# |
# |
# Build libmesa_dri_common |
# |
LOCAL_PATH := $(call my-dir) |
include $(CLEAR_VARS) |
include $(LOCAL_PATH)/Makefile.sources |
LOCAL_MODULE := libmesa_dri_common |
LOCAL_MODULE_CLASS := STATIC_LIBRARIES |
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) |
.SECONDEXPANSION: |
$(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) |
/contrib/sdk/sources/Mesa/src/mesa/drivers/dri/common/Makefile.am |
---|
0,0 → 1,46 |
# Copyright © 2012 Intel Corporation |
# |
# Permission is hereby granted, free of charge, to any person obtaining a |
# copy of this software and associated documentation files (the "Software"), |
# to deal in the Software without restriction, including without limitation |
# the rights to use, copy, modify, merge, publish, distribute, sublicense, |
# and/or sell copies of the Software, and to permit persons to whom the |
# Software is furnished to do so, subject to the following conditions: |
# |
# The above copyright notice and this permission notice (including the next |
# paragraph) shall be included in all copies or substantial portions of the |
# Software. |
# |
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL |
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING |
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS |
# IN THE SOFTWARE. |
SUBDIRS = xmlpool |
AM_CFLAGS = \ |
-I$(top_srcdir)/include \ |
-I$(top_srcdir)/src/ \ |
-I$(top_srcdir)/src/mapi \ |
-I$(top_srcdir)/src/mesa/ \ |
$(DEFINES) \ |
$(LIBDRM_CFLAGS) \ |
$(VISIBILITY_CFLAGS) |
noinst_LTLIBRARIES = \ |
libdricommon.la \ |
libdri_test_stubs.la |
libdricommon_la_SOURCES = \ |
utils.c \ |
dri_util.c \ |
xmlconfig.c |
libdri_test_stubs_la_SOURCES = \ |
dri_test.c |
libdri_test_stubs_la_CFLAGS = $(AM_CFLAGS) -DNO_MAIN |
sysconf_DATA = drirc |
/contrib/sdk/sources/Mesa/src/mesa/drivers/dri/common/Makefile.in |
---|
0,0 → 1,977 |
# Makefile.in generated by automake 1.14 from Makefile.am. |
# @configure_input@ |
# Copyright (C) 1994-2013 Free Software Foundation, Inc. |
# This Makefile.in is free software; the Free Software Foundation |
# gives unlimited permission to copy and/or distribute it, |
# with or without modifications, as long as this notice is preserved. |
# This program is distributed in the hope that it will be useful, |
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without |
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A |
# PARTICULAR PURPOSE. |
@SET_MAKE@ |
# Copyright © 2012 Intel Corporation |
# |
# Permission is hereby granted, free of charge, to any person obtaining a |
# copy of this software and associated documentation files (the "Software"), |
# to deal in the Software without restriction, including without limitation |
# the rights to use, copy, modify, merge, publish, distribute, sublicense, |
# and/or sell copies of the Software, and to permit persons to whom the |
# Software is furnished to do so, subject to the following conditions: |
# |
# The above copyright notice and this permission notice (including the next |
# paragraph) shall be included in all copies or substantial portions of the |
# Software. |
# |
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL |
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING |
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS |
# IN THE SOFTWARE. |
VPATH = @srcdir@ |
am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' |
am__make_running_with_option = \ |
case $${target_option-} in \ |
?) ;; \ |
*) echo "am__make_running_with_option: internal error: invalid" \ |
"target option '$${target_option-}' specified" >&2; \ |
exit 1;; \ |
esac; \ |
has_opt=no; \ |
sane_makeflags=$$MAKEFLAGS; \ |
if $(am__is_gnu_make); then \ |
sane_makeflags=$$MFLAGS; \ |
else \ |
case $$MAKEFLAGS in \ |
*\\[\ \ ]*) \ |
bs=\\; \ |
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ |
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ |
esac; \ |
fi; \ |
skip_next=no; \ |
strip_trailopt () \ |
{ \ |
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ |
}; \ |
for flg in $$sane_makeflags; do \ |
test $$skip_next = yes && { skip_next=no; continue; }; \ |
case $$flg in \ |
*=*|--*) continue;; \ |
-*I) strip_trailopt 'I'; skip_next=yes;; \ |
-*I?*) strip_trailopt 'I';; \ |
-*O) strip_trailopt 'O'; skip_next=yes;; \ |
-*O?*) strip_trailopt 'O';; \ |
-*l) strip_trailopt 'l'; skip_next=yes;; \ |
-*l?*) strip_trailopt 'l';; \ |
-[dEDm]) skip_next=yes;; \ |
-[JT]) skip_next=yes;; \ |
esac; \ |
case $$flg in \ |
*$$target_option*) has_opt=yes; break;; \ |
esac; \ |
done; \ |
test $$has_opt = yes |
am__make_dryrun = (target_option=n; $(am__make_running_with_option)) |
am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) |
pkgdatadir = $(datadir)/@PACKAGE@ |
pkgincludedir = $(includedir)/@PACKAGE@ |
pkglibdir = $(libdir)/@PACKAGE@ |
pkglibexecdir = $(libexecdir)/@PACKAGE@ |
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd |
install_sh_DATA = $(install_sh) -c -m 644 |
install_sh_PROGRAM = $(install_sh) -c |
install_sh_SCRIPT = $(install_sh) -c |
INSTALL_HEADER = $(INSTALL_DATA) |
transform = $(program_transform_name) |
NORMAL_INSTALL = : |
PRE_INSTALL = : |
POST_INSTALL = : |
NORMAL_UNINSTALL = : |
PRE_UNINSTALL = : |
POST_UNINSTALL = : |
build_triplet = @build@ |
host_triplet = @host@ |
target_triplet = @target@ |
subdir = src/mesa/drivers/dri/common |
DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ |
$(top_srcdir)/bin/depcomp |
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 |
am__aclocal_m4_deps = $(top_srcdir)/m4/ax_prog_bison.m4 \ |
$(top_srcdir)/m4/ax_prog_cc_for_build.m4 \ |
$(top_srcdir)/m4/ax_prog_cxx_for_build.m4 \ |
$(top_srcdir)/m4/ax_prog_flex.m4 \ |
$(top_srcdir)/m4/ax_pthread.m4 \ |
$(top_srcdir)/m4/ax_python_module.m4 \ |
$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ |
$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ |
$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac |
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ |
$(ACLOCAL_M4) |
mkinstalldirs = $(install_sh) -d |
CONFIG_CLEAN_FILES = |
CONFIG_CLEAN_VPATH_FILES = |
LTLIBRARIES = $(noinst_LTLIBRARIES) |
libdri_test_stubs_la_LIBADD = |
am_libdri_test_stubs_la_OBJECTS = libdri_test_stubs_la-dri_test.lo |
libdri_test_stubs_la_OBJECTS = $(am_libdri_test_stubs_la_OBJECTS) |
AM_V_lt = $(am__v_lt_@AM_V@) |
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) |
am__v_lt_0 = --silent |
am__v_lt_1 = |
libdri_test_stubs_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ |
$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ |
$(libdri_test_stubs_la_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ |
$(LDFLAGS) -o $@ |
libdricommon_la_LIBADD = |
am_libdricommon_la_OBJECTS = utils.lo dri_util.lo xmlconfig.lo |
libdricommon_la_OBJECTS = $(am_libdricommon_la_OBJECTS) |
AM_V_P = $(am__v_P_@AM_V@) |
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) |
am__v_P_0 = false |
am__v_P_1 = : |
AM_V_GEN = $(am__v_GEN_@AM_V@) |
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) |
am__v_GEN_0 = @echo " GEN " $@; |
am__v_GEN_1 = |
AM_V_at = $(am__v_at_@AM_V@) |
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) |
am__v_at_0 = @ |
am__v_at_1 = |
DEFAULT_INCLUDES = -I.@am__isrc@ |
depcomp = $(SHELL) $(top_srcdir)/bin/depcomp |
am__depfiles_maybe = depfiles |
am__mv = mv -f |
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ |
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) |
LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ |
$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ |
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ |
$(AM_CFLAGS) $(CFLAGS) |
AM_V_CC = $(am__v_CC_@AM_V@) |
am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) |
am__v_CC_0 = @echo " CC " $@; |
am__v_CC_1 = |
CCLD = $(CC) |
LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ |
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ |
$(AM_LDFLAGS) $(LDFLAGS) -o $@ |
AM_V_CCLD = $(am__v_CCLD_@AM_V@) |
am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) |
am__v_CCLD_0 = @echo " CCLD " $@; |
am__v_CCLD_1 = |
SOURCES = $(libdri_test_stubs_la_SOURCES) $(libdricommon_la_SOURCES) |
DIST_SOURCES = $(libdri_test_stubs_la_SOURCES) \ |
$(libdricommon_la_SOURCES) |
RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ |
ctags-recursive dvi-recursive html-recursive info-recursive \ |
install-data-recursive install-dvi-recursive \ |
install-exec-recursive install-html-recursive \ |
install-info-recursive install-pdf-recursive \ |
install-ps-recursive install-recursive installcheck-recursive \ |
installdirs-recursive pdf-recursive ps-recursive \ |
tags-recursive uninstall-recursive |
am__can_run_installinfo = \ |
case $$AM_UPDATE_INFO_DIR in \ |
n|no|NO) false;; \ |
*) (install-info --version) >/dev/null 2>&1;; \ |
esac |
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; |
am__vpath_adj = case $$p in \ |
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ |
*) f=$$p;; \ |
esac; |
am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; |
am__install_max = 40 |
am__nobase_strip_setup = \ |
srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` |
am__nobase_strip = \ |
for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" |
am__nobase_list = $(am__nobase_strip_setup); \ |
for p in $$list; do echo "$$p $$p"; done | \ |
sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ |
$(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ |
if (++n[$$2] == $(am__install_max)) \ |
{ print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ |
END { for (dir in files) print dir, files[dir] }' |
am__base_list = \ |
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ |
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' |
am__uninstall_files_from_dir = { \ |
test -z "$$files" \ |
|| { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ |
|| { echo " ( cd '$$dir' && rm -f" $$files ")"; \ |
$(am__cd) "$$dir" && rm -f $$files; }; \ |
} |
am__installdirs = "$(DESTDIR)$(sysconfdir)" |
DATA = $(sysconf_DATA) |
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ |
distclean-recursive maintainer-clean-recursive |
am__recursive_targets = \ |
$(RECURSIVE_TARGETS) \ |
$(RECURSIVE_CLEAN_TARGETS) \ |
$(am__extra_recursive_targets) |
AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ |
distdir |
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) |
# Read a list of newline-separated strings from the standard input, |
# and print each of them once, without duplicates. Input order is |
# *not* preserved. |
am__uniquify_input = $(AWK) '\ |
BEGIN { nonempty = 0; } \ |
{ items[$$0] = 1; nonempty = 1; } \ |
END { if (nonempty) { for (i in items) print i; }; } \ |
' |
# Make sure the list of sources is unique. This is necessary because, |
# e.g., the same source file might be shared among _SOURCES variables |
# for different programs/libraries. |
am__define_uniq_tagged_files = \ |
list='$(am__tagged_files)'; \ |
unique=`for i in $$list; do \ |
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ |
done | $(am__uniquify_input)` |
ETAGS = etags |
CTAGS = ctags |
DIST_SUBDIRS = $(SUBDIRS) |
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) |
am__relativize = \ |
dir0=`pwd`; \ |
sed_first='s,^\([^/]*\)/.*$$,\1,'; \ |
sed_rest='s,^[^/]*/*,,'; \ |
sed_last='s,^.*/\([^/]*\)$$,\1,'; \ |
sed_butlast='s,/*[^/]*$$,,'; \ |
while test -n "$$dir1"; do \ |
first=`echo "$$dir1" | sed -e "$$sed_first"`; \ |
if test "$$first" != "."; then \ |
if test "$$first" = ".."; then \ |
dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ |
dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ |
else \ |
first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ |
if test "$$first2" = "$$first"; then \ |
dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ |
else \ |
dir2="../$$dir2"; \ |
fi; \ |
dir0="$$dir0"/"$$first"; \ |
fi; \ |
fi; \ |
dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ |
done; \ |
reldir="$$dir2" |
ACLOCAL = @ACLOCAL@ |
AMTAR = @AMTAR@ |
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ |
AR = @AR@ |
AUTOCONF = @AUTOCONF@ |
AUTOHEADER = @AUTOHEADER@ |
AUTOMAKE = @AUTOMAKE@ |
AWK = @AWK@ |
BUILD_EXEEXT = @BUILD_EXEEXT@ |
BUILD_OBJEXT = @BUILD_OBJEXT@ |
CC = @CC@ |
CCAS = @CCAS@ |
CCASDEPMODE = @CCASDEPMODE@ |
CCASFLAGS = @CCASFLAGS@ |
CCDEPMODE = @CCDEPMODE@ |
CC_FOR_BUILD = @CC_FOR_BUILD@ |
CFLAGS = @CFLAGS@ |
CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@ |
CLANG_RESOURCE_DIR = @CLANG_RESOURCE_DIR@ |
CLOCK_LIB = @CLOCK_LIB@ |
CPP = @CPP@ |
CPPFLAGS = @CPPFLAGS@ |
CPPFLAGS_FOR_BUILD = @CPPFLAGS_FOR_BUILD@ |
CPP_FOR_BUILD = @CPP_FOR_BUILD@ |
CXX = @CXX@ |
CXXCPP = @CXXCPP@ |
CXXCPPFLAGS_FOR_BUILD = @CXXCPPFLAGS_FOR_BUILD@ |
CXXCPP_FOR_BUILD = @CXXCPP_FOR_BUILD@ |
CXXDEPMODE = @CXXDEPMODE@ |
CXXFLAGS = @CXXFLAGS@ |
CXXFLAGS_FOR_BUILD = @CXXFLAGS_FOR_BUILD@ |
CXX_FOR_BUILD = @CXX_FOR_BUILD@ |
CYGPATH_W = @CYGPATH_W@ |
DEFINES = @DEFINES@ |
DEFINES_FOR_BUILD = @DEFINES_FOR_BUILD@ |
DEFS = @DEFS@ |
DEPDIR = @DEPDIR@ |
DLLTOOL = @DLLTOOL@ |
DLOPEN_LIBS = @DLOPEN_LIBS@ |
DRI2PROTO_CFLAGS = @DRI2PROTO_CFLAGS@ |
DRI2PROTO_LIBS = @DRI2PROTO_LIBS@ |
DRIGL_CFLAGS = @DRIGL_CFLAGS@ |
DRIGL_LIBS = @DRIGL_LIBS@ |
DRI_DRIVER_INSTALL_DIR = @DRI_DRIVER_INSTALL_DIR@ |
DRI_DRIVER_SEARCH_DIR = @DRI_DRIVER_SEARCH_DIR@ |
DRI_LIB_DEPS = @DRI_LIB_DEPS@ |
DRI_PC_REQ_PRIV = @DRI_PC_REQ_PRIV@ |
DSYMUTIL = @DSYMUTIL@ |
DUMPBIN = @DUMPBIN@ |
ECHO_C = @ECHO_C@ |
ECHO_N = @ECHO_N@ |
ECHO_T = @ECHO_T@ |
EGL_CFLAGS = @EGL_CFLAGS@ |
EGL_CLIENT_APIS = @EGL_CLIENT_APIS@ |
EGL_DRIVER_INSTALL_DIR = @EGL_DRIVER_INSTALL_DIR@ |
EGL_LIB_DEPS = @EGL_LIB_DEPS@ |
EGL_LIB_GLOB = @EGL_LIB_GLOB@ |
EGL_LIB_NAME = @EGL_LIB_NAME@ |
EGL_NATIVE_PLATFORM = @EGL_NATIVE_PLATFORM@ |
EGL_PLATFORMS = @EGL_PLATFORMS@ |
EGREP = @EGREP@ |
ELF_LIB = @ELF_LIB@ |
EXEEXT = @EXEEXT@ |
EXPAT_INCLUDES = @EXPAT_INCLUDES@ |
FGREP = @FGREP@ |
FREEDRENO_CFLAGS = @FREEDRENO_CFLAGS@ |
FREEDRENO_LIBS = @FREEDRENO_LIBS@ |
GALLIUM_DRI_LIB_DEPS = @GALLIUM_DRI_LIB_DEPS@ |
GALLIUM_PIPE_LOADER_DEFINES = @GALLIUM_PIPE_LOADER_DEFINES@ |
GALLIUM_PIPE_LOADER_LIBS = @GALLIUM_PIPE_LOADER_LIBS@ |
GALLIUM_PIPE_LOADER_XCB_CFLAGS = @GALLIUM_PIPE_LOADER_XCB_CFLAGS@ |
GALLIUM_PIPE_LOADER_XCB_LIBS = @GALLIUM_PIPE_LOADER_XCB_LIBS@ |
GBM_PC_LIB_PRIV = @GBM_PC_LIB_PRIV@ |
GBM_PC_REQ_PRIV = @GBM_PC_REQ_PRIV@ |
GLAPI_LIB_GLOB = @GLAPI_LIB_GLOB@ |
GLAPI_LIB_NAME = @GLAPI_LIB_NAME@ |
GLESv1_CM_LIB_DEPS = @GLESv1_CM_LIB_DEPS@ |
GLESv1_CM_LIB_GLOB = @GLESv1_CM_LIB_GLOB@ |
GLESv1_CM_LIB_NAME = @GLESv1_CM_LIB_NAME@ |
GLESv1_CM_PC_LIB_PRIV = @GLESv1_CM_PC_LIB_PRIV@ |
GLESv2_LIB_DEPS = @GLESv2_LIB_DEPS@ |
GLESv2_LIB_GLOB = @GLESv2_LIB_GLOB@ |
GLESv2_LIB_NAME = @GLESv2_LIB_NAME@ |
GLESv2_PC_LIB_PRIV = @GLESv2_PC_LIB_PRIV@ |
GLPROTO_CFLAGS = @GLPROTO_CFLAGS@ |
GLPROTO_LIBS = @GLPROTO_LIBS@ |
GLX_TLS = @GLX_TLS@ |
GL_LIB = @GL_LIB@ |
GL_LIB_DEPS = @GL_LIB_DEPS@ |
GL_LIB_GLOB = @GL_LIB_GLOB@ |
GL_LIB_NAME = @GL_LIB_NAME@ |
GL_PC_CFLAGS = @GL_PC_CFLAGS@ |
GL_PC_LIB_PRIV = @GL_PC_LIB_PRIV@ |
GL_PC_REQ_PRIV = @GL_PC_REQ_PRIV@ |
GREP = @GREP@ |
HAVE_XF86VIDMODE = @HAVE_XF86VIDMODE@ |
INDENT = @INDENT@ |
INDENT_FLAGS = @INDENT_FLAGS@ |
INSTALL = @INSTALL@ |
INSTALL_DATA = @INSTALL_DATA@ |
INSTALL_PROGRAM = @INSTALL_PROGRAM@ |
INSTALL_SCRIPT = @INSTALL_SCRIPT@ |
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ |
INTEL_CFLAGS = @INTEL_CFLAGS@ |
INTEL_LIBS = @INTEL_LIBS@ |
LD = @LD@ |
LDFLAGS = @LDFLAGS@ |
LDFLAGS_FOR_BUILD = @LDFLAGS_FOR_BUILD@ |
LEX = @LEX@ |
LEXLIB = @LEXLIB@ |
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ |
LIBCLC_INCLUDEDIR = @LIBCLC_INCLUDEDIR@ |
LIBCLC_LIBEXECDIR = @LIBCLC_LIBEXECDIR@ |
LIBDRM_CFLAGS = @LIBDRM_CFLAGS@ |
LIBDRM_LIBS = @LIBDRM_LIBS@ |
LIBDRM_XORG_CFLAGS = @LIBDRM_XORG_CFLAGS@ |
LIBDRM_XORG_LIBS = @LIBDRM_XORG_LIBS@ |
LIBKMS_XORG_CFLAGS = @LIBKMS_XORG_CFLAGS@ |
LIBKMS_XORG_LIBS = @LIBKMS_XORG_LIBS@ |
LIBOBJS = @LIBOBJS@ |
LIBS = @LIBS@ |
LIBTOOL = @LIBTOOL@ |
LIBUDEV_CFLAGS = @LIBUDEV_CFLAGS@ |
LIBUDEV_LIBS = @LIBUDEV_LIBS@ |
LIB_DIR = @LIB_DIR@ |
LIPO = @LIPO@ |
LLVM_BINDIR = @LLVM_BINDIR@ |
LLVM_CFLAGS = @LLVM_CFLAGS@ |
LLVM_CONFIG = @LLVM_CONFIG@ |
LLVM_CPPFLAGS = @LLVM_CPPFLAGS@ |
LLVM_CXXFLAGS = @LLVM_CXXFLAGS@ |
LLVM_INCLUDEDIR = @LLVM_INCLUDEDIR@ |
LLVM_LDFLAGS = @LLVM_LDFLAGS@ |
LLVM_LIBDIR = @LLVM_LIBDIR@ |
LLVM_LIBS = @LLVM_LIBS@ |
LLVM_VERSION = @LLVM_VERSION@ |
LN_S = @LN_S@ |
LTLIBOBJS = @LTLIBOBJS@ |
MAKE = @MAKE@ |
MAKEINFO = @MAKEINFO@ |
MANIFEST_TOOL = @MANIFEST_TOOL@ |
MESA_LLVM = @MESA_LLVM@ |
MKDIR_P = @MKDIR_P@ |
NM = @NM@ |
NMEDIT = @NMEDIT@ |
NOUVEAU_CFLAGS = @NOUVEAU_CFLAGS@ |
NOUVEAU_LIBS = @NOUVEAU_LIBS@ |
OBJDUMP = @OBJDUMP@ |
OBJEXT = @OBJEXT@ |
OPENCL_LIB_INSTALL_DIR = @OPENCL_LIB_INSTALL_DIR@ |
OSMESA_LIB = @OSMESA_LIB@ |
OSMESA_LIB_DEPS = @OSMESA_LIB_DEPS@ |
OSMESA_LIB_NAME = @OSMESA_LIB_NAME@ |
OSMESA_MESA_DEPS = @OSMESA_MESA_DEPS@ |
OSMESA_PC_LIB_PRIV = @OSMESA_PC_LIB_PRIV@ |
OSMESA_PC_REQ = @OSMESA_PC_REQ@ |
OSMESA_VERSION = @OSMESA_VERSION@ |
OTOOL = @OTOOL@ |
OTOOL64 = @OTOOL64@ |
PACKAGE = @PACKAGE@ |
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ |
PACKAGE_NAME = @PACKAGE_NAME@ |
PACKAGE_STRING = @PACKAGE_STRING@ |
PACKAGE_TARNAME = @PACKAGE_TARNAME@ |
PACKAGE_URL = @PACKAGE_URL@ |
PACKAGE_VERSION = @PACKAGE_VERSION@ |
PATH_SEPARATOR = @PATH_SEPARATOR@ |
PERL = @PERL@ |
PKG_CONFIG = @PKG_CONFIG@ |
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ |
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ |
POSIX_SHELL = @POSIX_SHELL@ |
PTHREAD_CC = @PTHREAD_CC@ |
PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ |
PTHREAD_LIBS = @PTHREAD_LIBS@ |
PYTHON2 = @PYTHON2@ |
RADEON_CFLAGS = @RADEON_CFLAGS@ |
RADEON_LIBS = @RADEON_LIBS@ |
RANLIB = @RANLIB@ |
SED = @SED@ |
SELINUX_LIBS = @SELINUX_LIBS@ |
SET_MAKE = @SET_MAKE@ |
SHELL = @SHELL@ |
STRIP = @STRIP@ |
VDPAU_CFLAGS = @VDPAU_CFLAGS@ |
VDPAU_LIBS = @VDPAU_LIBS@ |
VDPAU_LIB_INSTALL_DIR = @VDPAU_LIB_INSTALL_DIR@ |
VDPAU_MAJOR = @VDPAU_MAJOR@ |
VDPAU_MINOR = @VDPAU_MINOR@ |
VERSION = @VERSION@ |
VG_LIB_DEPS = @VG_LIB_DEPS@ |
VG_LIB_GLOB = @VG_LIB_GLOB@ |
VG_LIB_NAME = @VG_LIB_NAME@ |
VG_PC_LIB_PRIV = @VG_PC_LIB_PRIV@ |
VISIBILITY_CFLAGS = @VISIBILITY_CFLAGS@ |
VISIBILITY_CXXFLAGS = @VISIBILITY_CXXFLAGS@ |
WAYLAND_CFLAGS = @WAYLAND_CFLAGS@ |
WAYLAND_LIBS = @WAYLAND_LIBS@ |
WAYLAND_SCANNER = @WAYLAND_SCANNER@ |
X11_INCLUDES = @X11_INCLUDES@ |
XA_MAJOR = @XA_MAJOR@ |
XA_MINOR = @XA_MINOR@ |
XA_TINY = @XA_TINY@ |
XA_VERSION = @XA_VERSION@ |
XCB_DRI2_CFLAGS = @XCB_DRI2_CFLAGS@ |
XCB_DRI2_LIBS = @XCB_DRI2_LIBS@ |
XEXT_CFLAGS = @XEXT_CFLAGS@ |
XEXT_LIBS = @XEXT_LIBS@ |
XF86VIDMODE_CFLAGS = @XF86VIDMODE_CFLAGS@ |
XF86VIDMODE_LIBS = @XF86VIDMODE_LIBS@ |
XLIBGL_CFLAGS = @XLIBGL_CFLAGS@ |
XLIBGL_LIBS = @XLIBGL_LIBS@ |
XORG_CFLAGS = @XORG_CFLAGS@ |
XORG_DRIVER_INSTALL_DIR = @XORG_DRIVER_INSTALL_DIR@ |
XORG_LIBS = @XORG_LIBS@ |
XVMC_CFLAGS = @XVMC_CFLAGS@ |
XVMC_LIBS = @XVMC_LIBS@ |
XVMC_LIB_INSTALL_DIR = @XVMC_LIB_INSTALL_DIR@ |
XVMC_MAJOR = @XVMC_MAJOR@ |
XVMC_MINOR = @XVMC_MINOR@ |
YACC = @YACC@ |
YFLAGS = @YFLAGS@ |
abs_builddir = @abs_builddir@ |
abs_srcdir = @abs_srcdir@ |
abs_top_builddir = @abs_top_builddir@ |
abs_top_srcdir = @abs_top_srcdir@ |
ac_ct_AR = @ac_ct_AR@ |
ac_ct_CC = @ac_ct_CC@ |
ac_ct_CC_FOR_BUILD = @ac_ct_CC_FOR_BUILD@ |
ac_ct_CXX = @ac_ct_CXX@ |
ac_ct_CXX_FOR_BUILD = @ac_ct_CXX_FOR_BUILD@ |
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ |
am__include = @am__include@ |
am__leading_dot = @am__leading_dot@ |
am__quote = @am__quote@ |
am__tar = @am__tar@ |
am__untar = @am__untar@ |
ax_pthread_config = @ax_pthread_config@ |
bindir = @bindir@ |
build = @build@ |
build_alias = @build_alias@ |
build_cpu = @build_cpu@ |
build_os = @build_os@ |
build_vendor = @build_vendor@ |
builddir = @builddir@ |
datadir = @datadir@ |
datarootdir = @datarootdir@ |
docdir = @docdir@ |
dvidir = @dvidir@ |
exec_prefix = @exec_prefix@ |
host = @host@ |
host_alias = @host_alias@ |
host_cpu = @host_cpu@ |
host_os = @host_os@ |
host_vendor = @host_vendor@ |
htmldir = @htmldir@ |
includedir = @includedir@ |
infodir = @infodir@ |
install_sh = @install_sh@ |
libdir = @libdir@ |
libexecdir = @libexecdir@ |
localedir = @localedir@ |
localstatedir = @localstatedir@ |
mandir = @mandir@ |
mkdir_p = @mkdir_p@ |
oldincludedir = @oldincludedir@ |
pdfdir = @pdfdir@ |
prefix = @prefix@ |
program_transform_name = @program_transform_name@ |
psdir = @psdir@ |
sbindir = @sbindir@ |
sharedstatedir = @sharedstatedir@ |
srcdir = @srcdir@ |
sysconfdir = @sysconfdir@ |
target = @target@ |
target_alias = @target_alias@ |
target_cpu = @target_cpu@ |
target_os = @target_os@ |
target_vendor = @target_vendor@ |
top_build_prefix = @top_build_prefix@ |
top_builddir = @top_builddir@ |
top_srcdir = @top_srcdir@ |
SUBDIRS = xmlpool |
AM_CFLAGS = \ |
-I$(top_srcdir)/include \ |
-I$(top_srcdir)/src/ \ |
-I$(top_srcdir)/src/mapi \ |
-I$(top_srcdir)/src/mesa/ \ |
$(DEFINES) \ |
$(LIBDRM_CFLAGS) \ |
$(VISIBILITY_CFLAGS) |
noinst_LTLIBRARIES = \ |
libdricommon.la \ |
libdri_test_stubs.la |
libdricommon_la_SOURCES = \ |
utils.c \ |
dri_util.c \ |
xmlconfig.c |
libdri_test_stubs_la_SOURCES = \ |
dri_test.c |
libdri_test_stubs_la_CFLAGS = $(AM_CFLAGS) -DNO_MAIN |
sysconf_DATA = drirc |
all: all-recursive |
.SUFFIXES: |
.SUFFIXES: .c .lo .o .obj |
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) |
@for dep in $?; do \ |
case '$(am__configure_deps)' in \ |
*$$dep*) \ |
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ |
&& { if test -f $@; then exit 0; else break; fi; }; \ |
exit 1;; \ |
esac; \ |
done; \ |
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/mesa/drivers/dri/common/Makefile'; \ |
$(am__cd) $(top_srcdir) && \ |
$(AUTOMAKE) --foreign src/mesa/drivers/dri/common/Makefile |
.PRECIOUS: Makefile |
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status |
@case '$?' in \ |
*config.status*) \ |
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ |
*) \ |
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ |
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ |
esac; |
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) |
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh |
$(top_srcdir)/configure: $(am__configure_deps) |
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh |
$(ACLOCAL_M4): $(am__aclocal_m4_deps) |
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh |
$(am__aclocal_m4_deps): |
clean-noinstLTLIBRARIES: |
-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) |
@list='$(noinst_LTLIBRARIES)'; \ |
locs=`for p in $$list; do echo $$p; done | \ |
sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ |
sort -u`; \ |
test -z "$$locs" || { \ |
echo rm -f $${locs}; \ |
rm -f $${locs}; \ |
} |
libdri_test_stubs.la: $(libdri_test_stubs_la_OBJECTS) $(libdri_test_stubs_la_DEPENDENCIES) $(EXTRA_libdri_test_stubs_la_DEPENDENCIES) |
$(AM_V_CCLD)$(libdri_test_stubs_la_LINK) $(libdri_test_stubs_la_OBJECTS) $(libdri_test_stubs_la_LIBADD) $(LIBS) |
libdricommon.la: $(libdricommon_la_OBJECTS) $(libdricommon_la_DEPENDENCIES) $(EXTRA_libdricommon_la_DEPENDENCIES) |
$(AM_V_CCLD)$(LINK) $(libdricommon_la_OBJECTS) $(libdricommon_la_LIBADD) $(LIBS) |
mostlyclean-compile: |
-rm -f *.$(OBJEXT) |
distclean-compile: |
-rm -f *.tab.c |
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dri_util.Plo@am__quote@ |
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libdri_test_stubs_la-dri_test.Plo@am__quote@ |
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/utils.Plo@am__quote@ |
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmlconfig.Plo@am__quote@ |
.c.o: |
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< |
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po |
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ |
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ |
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< |
.c.obj: |
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` |
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po |
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ |
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ |
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` |
.c.lo: |
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< |
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo |
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ |
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ |
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< |
libdri_test_stubs_la-dri_test.lo: dri_test.c |
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdri_test_stubs_la_CFLAGS) $(CFLAGS) -MT libdri_test_stubs_la-dri_test.lo -MD -MP -MF $(DEPDIR)/libdri_test_stubs_la-dri_test.Tpo -c -o libdri_test_stubs_la-dri_test.lo `test -f 'dri_test.c' || echo '$(srcdir)/'`dri_test.c |
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libdri_test_stubs_la-dri_test.Tpo $(DEPDIR)/libdri_test_stubs_la-dri_test.Plo |
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dri_test.c' object='libdri_test_stubs_la-dri_test.lo' libtool=yes @AMDEPBACKSLASH@ |
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ |
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libdri_test_stubs_la_CFLAGS) $(CFLAGS) -c -o libdri_test_stubs_la-dri_test.lo `test -f 'dri_test.c' || echo '$(srcdir)/'`dri_test.c |
mostlyclean-libtool: |
-rm -f *.lo |
clean-libtool: |
-rm -rf .libs _libs |
install-sysconfDATA: $(sysconf_DATA) |
@$(NORMAL_INSTALL) |
@list='$(sysconf_DATA)'; test -n "$(sysconfdir)" || list=; \ |
if test -n "$$list"; then \ |
echo " $(MKDIR_P) '$(DESTDIR)$(sysconfdir)'"; \ |
$(MKDIR_P) "$(DESTDIR)$(sysconfdir)" || exit 1; \ |
fi; \ |
for p in $$list; do \ |
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ |
echo "$$d$$p"; \ |
done | $(am__base_list) | \ |
while read files; do \ |
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(sysconfdir)'"; \ |
$(INSTALL_DATA) $$files "$(DESTDIR)$(sysconfdir)" || exit $$?; \ |
done |
uninstall-sysconfDATA: |
@$(NORMAL_UNINSTALL) |
@list='$(sysconf_DATA)'; test -n "$(sysconfdir)" || list=; \ |
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ |
dir='$(DESTDIR)$(sysconfdir)'; $(am__uninstall_files_from_dir) |
# This directory's subdirectories are mostly independent; you can cd |
# into them and run 'make' without going through this Makefile. |
# To change the values of 'make' variables: instead of editing Makefiles, |
# (1) if the variable is set in 'config.status', edit 'config.status' |
# (which will cause the Makefiles to be regenerated when you run 'make'); |
# (2) otherwise, pass the desired values on the 'make' command line. |
$(am__recursive_targets): |
@fail=; \ |
if $(am__make_keepgoing); then \ |
failcom='fail=yes'; \ |
else \ |
failcom='exit 1'; \ |
fi; \ |
dot_seen=no; \ |
target=`echo $@ | sed s/-recursive//`; \ |
case "$@" in \ |
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ |
*) list='$(SUBDIRS)' ;; \ |
esac; \ |
for subdir in $$list; do \ |
echo "Making $$target in $$subdir"; \ |
if test "$$subdir" = "."; then \ |
dot_seen=yes; \ |
local_target="$$target-am"; \ |
else \ |
local_target="$$target"; \ |
fi; \ |
($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ |
|| eval $$failcom; \ |
done; \ |
if test "$$dot_seen" = "no"; then \ |
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ |
fi; test -z "$$fail" |
ID: $(am__tagged_files) |
$(am__define_uniq_tagged_files); mkid -fID $$unique |
tags: tags-recursive |
TAGS: tags |
tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) |
set x; \ |
here=`pwd`; \ |
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ |
include_option=--etags-include; \ |
empty_fix=.; \ |
else \ |
include_option=--include; \ |
empty_fix=; \ |
fi; \ |
list='$(SUBDIRS)'; for subdir in $$list; do \ |
if test "$$subdir" = .; then :; else \ |
test ! -f $$subdir/TAGS || \ |
set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ |
fi; \ |
done; \ |
$(am__define_uniq_tagged_files); \ |
shift; \ |
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ |
test -n "$$unique" || unique=$$empty_fix; \ |
if test $$# -gt 0; then \ |
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ |
"$$@" $$unique; \ |
else \ |
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ |
$$unique; \ |
fi; \ |
fi |
ctags: ctags-recursive |
CTAGS: ctags |
ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) |
$(am__define_uniq_tagged_files); \ |
test -z "$(CTAGS_ARGS)$$unique" \ |
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ |
$$unique |
GTAGS: |
here=`$(am__cd) $(top_builddir) && pwd` \ |
&& $(am__cd) $(top_srcdir) \ |
&& gtags -i $(GTAGS_ARGS) "$$here" |
cscopelist: cscopelist-recursive |
cscopelist-am: $(am__tagged_files) |
list='$(am__tagged_files)'; \ |
case "$(srcdir)" in \ |
[\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ |
*) sdir=$(subdir)/$(srcdir) ;; \ |
esac; \ |
for i in $$list; do \ |
if test -f "$$i"; then \ |
echo "$(subdir)/$$i"; \ |
else \ |
echo "$$sdir/$$i"; \ |
fi; \ |
done >> $(top_builddir)/cscope.files |
distclean-tags: |
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags |
distdir: $(DISTFILES) |
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ |
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ |
list='$(DISTFILES)'; \ |
dist_files=`for file in $$list; do echo $$file; done | \ |
sed -e "s|^$$srcdirstrip/||;t" \ |
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ |
case $$dist_files in \ |
*/*) $(MKDIR_P) `echo "$$dist_files" | \ |
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ |
sort -u` ;; \ |
esac; \ |
for file in $$dist_files; do \ |
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ |
if test -d $$d/$$file; then \ |
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ |
if test -d "$(distdir)/$$file"; then \ |
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ |
fi; \ |
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ |
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ |
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ |
fi; \ |
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ |
else \ |
test -f "$(distdir)/$$file" \ |
|| cp -p $$d/$$file "$(distdir)/$$file" \ |
|| exit 1; \ |
fi; \ |
done |
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ |
if test "$$subdir" = .; then :; else \ |
$(am__make_dryrun) \ |
|| test -d "$(distdir)/$$subdir" \ |
|| $(MKDIR_P) "$(distdir)/$$subdir" \ |
|| exit 1; \ |
dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ |
$(am__relativize); \ |
new_distdir=$$reldir; \ |
dir1=$$subdir; dir2="$(top_distdir)"; \ |
$(am__relativize); \ |
new_top_distdir=$$reldir; \ |
echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ |
echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ |
($(am__cd) $$subdir && \ |
$(MAKE) $(AM_MAKEFLAGS) \ |
top_distdir="$$new_top_distdir" \ |
distdir="$$new_distdir" \ |
am__remove_distdir=: \ |
am__skip_length_check=: \ |
am__skip_mode_fix=: \ |
distdir) \ |
|| exit 1; \ |
fi; \ |
done |
check-am: all-am |
check: check-recursive |
all-am: Makefile $(LTLIBRARIES) $(DATA) |
installdirs: installdirs-recursive |
installdirs-am: |
for dir in "$(DESTDIR)$(sysconfdir)"; do \ |
test -z "$$dir" || $(MKDIR_P) "$$dir"; \ |
done |
install: install-recursive |
install-exec: install-exec-recursive |
install-data: install-data-recursive |
uninstall: uninstall-recursive |
install-am: all-am |
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am |
installcheck: installcheck-recursive |
install-strip: |
if test -z '$(STRIP)'; then \ |
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ |
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ |
install; \ |
else \ |
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ |
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ |
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ |
fi |
mostlyclean-generic: |
clean-generic: |
distclean-generic: |
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) |
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) |
maintainer-clean-generic: |
@echo "This command is intended for maintainers to use" |
@echo "it deletes files that may require special tools to rebuild." |
clean: clean-recursive |
clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ |
mostlyclean-am |
distclean: distclean-recursive |
-rm -rf ./$(DEPDIR) |
-rm -f Makefile |
distclean-am: clean-am distclean-compile distclean-generic \ |
distclean-tags |
dvi: dvi-recursive |
dvi-am: |
html: html-recursive |
html-am: |
info: info-recursive |
info-am: |
install-data-am: |
install-dvi: install-dvi-recursive |
install-dvi-am: |
install-exec-am: install-sysconfDATA |
install-html: install-html-recursive |
install-html-am: |
install-info: install-info-recursive |
install-info-am: |
install-man: |
install-pdf: install-pdf-recursive |
install-pdf-am: |
install-ps: install-ps-recursive |
install-ps-am: |
installcheck-am: |
maintainer-clean: maintainer-clean-recursive |
-rm -rf ./$(DEPDIR) |
-rm -f Makefile |
maintainer-clean-am: distclean-am maintainer-clean-generic |
mostlyclean: mostlyclean-recursive |
mostlyclean-am: mostlyclean-compile mostlyclean-generic \ |
mostlyclean-libtool |
pdf: pdf-recursive |
pdf-am: |
ps: ps-recursive |
ps-am: |
uninstall-am: uninstall-sysconfDATA |
.MAKE: $(am__recursive_targets) install-am install-strip |
.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ |
check-am clean clean-generic clean-libtool \ |
clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ |
distclean-compile distclean-generic distclean-libtool \ |
distclean-tags distdir dvi dvi-am html html-am info info-am \ |
install install-am install-data install-data-am install-dvi \ |
install-dvi-am install-exec install-exec-am install-html \ |
install-html-am install-info install-info-am install-man \ |
install-pdf install-pdf-am install-ps install-ps-am \ |
install-strip install-sysconfDATA installcheck installcheck-am \ |
installdirs installdirs-am maintainer-clean \ |
maintainer-clean-generic mostlyclean mostlyclean-compile \ |
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ |
tags tags-am uninstall uninstall-am uninstall-sysconfDATA |
# Tell versions [3.59,3.63) of GNU make to not export all variables. |
# Otherwise a system limit (for SysV at least) may be exceeded. |
.NOEXPORT: |
/contrib/sdk/sources/Mesa/src/mesa/drivers/dri/common/Makefile.sources |
---|
0,0 → 1,16 |
mesa_dri_common_gallium_SOURCES := \ |
utils.c \ |
dri_util.c \ |
xmlconfig.c |
mesa_dri_common_SOURCES := \ |
$(mesa_dri_common_gallium_SOURCES) |
# Paths are relative to MESA_TOP. |
mesa_dri_common_INCLUDES := \ |
include \ |
src/egl/drivers/dri \ |
src/egl/main \ |
src/mapi \ |
src/mesa \ |
src/mesa/drivers/dri/common |
/contrib/sdk/sources/Mesa/src/mesa/drivers/dri/common/dri_test.c |
---|
0,0 → 1,91 |
#include "main/glheader.h" |
#include "main/compiler.h" |
#include "glapi/glapi.h" |
/* This is just supposed to make sure we get a reference to |
the driver entry symbol that the compiler doesn't optimize away */ |
extern char __driDriverExtensions[]; |
/* provide glapi symbols */ |
#if defined(GLX_USE_TLS) |
PUBLIC __thread struct _glapi_table * _glapi_tls_Dispatch |
__attribute__((tls_model("initial-exec"))); |
PUBLIC __thread void * _glapi_tls_Context |
__attribute__((tls_model("initial-exec"))); |
PUBLIC const struct _glapi_table *_glapi_Dispatch; |
PUBLIC const void *_glapi_Context; |
#else |
PUBLIC struct _glapi_table *_glapi_Dispatch; |
PUBLIC void *_glapi_Context; |
#endif |
PUBLIC void |
_glapi_check_multithread(void) |
{} |
PUBLIC void |
_glapi_set_context(void *context) |
{} |
PUBLIC void * |
_glapi_get_context(void) |
{ |
return 0; |
} |
PUBLIC void |
_glapi_set_dispatch(struct _glapi_table *dispatch) |
{} |
PUBLIC struct _glapi_table * |
_glapi_get_dispatch(void) |
{ |
return 0; |
} |
PUBLIC int |
_glapi_add_dispatch( const char * const * function_names, |
const char * parameter_signature ) |
{ |
return 0; |
} |
PUBLIC GLint |
_glapi_get_proc_offset(const char *funcName) |
{ |
return 0; |
} |
PUBLIC _glapi_proc |
_glapi_get_proc_address(const char *funcName) |
{ |
return 0; |
} |
PUBLIC GLuint |
_glapi_get_dispatch_table_size(void) |
{ |
return 0; |
} |
PUBLIC unsigned long |
_glthread_GetID(void) |
{ |
return 0; |
} |
#ifndef NO_MAIN |
int main(int argc, char** argv) |
{ |
void* p = __driDriverExtensions; |
return (int)(unsigned long)p; |
} |
#endif |
/contrib/sdk/sources/Mesa/src/mesa/drivers/dri/common/dri_util.c |
---|
0,0 → 1,629 |
/* |
* (C) Copyright IBM Corporation 2002, 2004 |
* All Rights Reserved. |
* |
* 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 |
* on the rights to use, copy, modify, merge, publish, distribute, sub |
* license, and/or sell copies of the Software, and to permit persons to whom |
* the Software is furnished to do so, subject to the following conditions: |
* |
* The above copyright notice and this permission notice (including the next |
* paragraph) shall be included in all copies or substantial portions of the |
* Software. |
* |
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL |
* THE AUTHORS AND/OR THEIR SUPPLIERS 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 dri_util.c |
* DRI utility functions. |
* |
* This module acts as glue between GLX and the actual hardware driver. A DRI |
* driver doesn't really \e have to use any of this - it's optional. But, some |
* useful stuff is done here that otherwise would have to be duplicated in most |
* drivers. |
* |
* Basically, these utility functions take care of some of the dirty details of |
* screen initialization, context creation, context binding, DRM setup, etc. |
* |
* These functions are compiled into each DRI driver so libGL.so knows nothing |
* about them. |
*/ |
#include <xf86drm.h> |
#include "dri_util.h" |
#include "utils.h" |
#include "xmlpool.h" |
#include "../glsl/glsl_parser_extras.h" |
PUBLIC const char __dri2ConfigOptions[] = |
DRI_CONF_BEGIN |
DRI_CONF_SECTION_PERFORMANCE |
DRI_CONF_VBLANK_MODE(DRI_CONF_VBLANK_DEF_INTERVAL_1) |
DRI_CONF_SECTION_END |
DRI_CONF_END; |
static const uint __dri2NConfigOptions = 1; |
/*****************************************************************/ |
/** \name Screen handling functions */ |
/*****************************************************************/ |
/*@{*/ |
static void |
setupLoaderExtensions(__DRIscreen *psp, |
const __DRIextension **extensions) |
{ |
int i; |
for (i = 0; extensions[i]; i++) { |
if (strcmp(extensions[i]->name, __DRI_DRI2_LOADER) == 0) |
psp->dri2.loader = (__DRIdri2LoaderExtension *) extensions[i]; |
if (strcmp(extensions[i]->name, __DRI_IMAGE_LOOKUP) == 0) |
psp->dri2.image = (__DRIimageLookupExtension *) extensions[i]; |
if (strcmp(extensions[i]->name, __DRI_USE_INVALIDATE) == 0) |
psp->dri2.useInvalidate = (__DRIuseInvalidateExtension *) extensions[i]; |
} |
} |
static __DRIscreen * |
dri2CreateNewScreen(int scrn, int fd, |
const __DRIextension **extensions, |
const __DRIconfig ***driver_configs, void *data) |
{ |
static const __DRIextension *emptyExtensionList[] = { NULL }; |
__DRIscreen *psp; |
drmVersionPtr version; |
psp = calloc(1, sizeof(*psp)); |
if (!psp) |
return NULL; |
setupLoaderExtensions(psp, extensions); |
version = drmGetVersion(fd); |
if (version) { |
psp->drm_version.major = version->version_major; |
psp->drm_version.minor = version->version_minor; |
psp->drm_version.patch = version->version_patchlevel; |
drmFreeVersion(version); |
} |
psp->loaderPrivate = data; |
psp->extensions = emptyExtensionList; |
psp->fd = fd; |
psp->myNum = scrn; |
psp->api_mask = (1 << __DRI_API_OPENGL); |
*driver_configs = driDriverAPI.InitScreen(psp); |
if (*driver_configs == NULL) { |
free(psp); |
return NULL; |
} |
driParseOptionInfo(&psp->optionInfo, __dri2ConfigOptions, __dri2NConfigOptions); |
driParseConfigFiles(&psp->optionCache, &psp->optionInfo, psp->myNum, "dri2"); |
return psp; |
} |
/** |
* Destroy the per-screen private information. |
* |
* \internal |
* This function calls __DriverAPIRec::DestroyScreen on \p screenPrivate, calls |
* drmClose(), and finally frees \p screenPrivate. |
*/ |
static void driDestroyScreen(__DRIscreen *psp) |
{ |
if (psp) { |
/* No interaction with the X-server is possible at this point. This |
* routine is called after XCloseDisplay, so there is no protocol |
* stream open to the X-server anymore. |
*/ |
_mesa_destroy_shader_compiler(); |
driDriverAPI.DestroyScreen(psp); |
driDestroyOptionCache(&psp->optionCache); |
driDestroyOptionInfo(&psp->optionInfo); |
free(psp); |
} |
} |
static const __DRIextension **driGetExtensions(__DRIscreen *psp) |
{ |
return psp->extensions; |
} |
/*@}*/ |
/*****************************************************************/ |
/** \name Context handling functions */ |
/*****************************************************************/ |
/*@{*/ |
static __DRIcontext * |
dri2CreateContextAttribs(__DRIscreen *screen, int api, |
const __DRIconfig *config, |
__DRIcontext *shared, |
unsigned num_attribs, |
const uint32_t *attribs, |
unsigned *error, |
void *data) |
{ |
__DRIcontext *context; |
const struct gl_config *modes = (config != NULL) ? &config->modes : NULL; |
void *shareCtx = (shared != NULL) ? shared->driverPrivate : NULL; |
gl_api mesa_api; |
unsigned major_version = 1; |
unsigned minor_version = 0; |
uint32_t flags = 0; |
assert((num_attribs == 0) || (attribs != NULL)); |
if (!(screen->api_mask & (1 << api))) { |
*error = __DRI_CTX_ERROR_BAD_API; |
return NULL; |
} |
switch (api) { |
case __DRI_API_OPENGL: |
mesa_api = API_OPENGL_COMPAT; |
break; |
case __DRI_API_GLES: |
mesa_api = API_OPENGLES; |
break; |
case __DRI_API_GLES2: |
case __DRI_API_GLES3: |
mesa_api = API_OPENGLES2; |
break; |
case __DRI_API_OPENGL_CORE: |
mesa_api = API_OPENGL_CORE; |
break; |
default: |
*error = __DRI_CTX_ERROR_BAD_API; |
return NULL; |
} |
for (unsigned i = 0; i < num_attribs; i++) { |
switch (attribs[i * 2]) { |
case __DRI_CTX_ATTRIB_MAJOR_VERSION: |
major_version = attribs[i * 2 + 1]; |
break; |
case __DRI_CTX_ATTRIB_MINOR_VERSION: |
minor_version = attribs[i * 2 + 1]; |
break; |
case __DRI_CTX_ATTRIB_FLAGS: |
flags = attribs[i * 2 + 1]; |
break; |
default: |
/* We can't create a context that satisfies the requirements of an |
* attribute that we don't understand. Return failure. |
*/ |
assert(!"Should not get here."); |
*error = __DRI_CTX_ERROR_UNKNOWN_ATTRIBUTE; |
return NULL; |
} |
} |
/* Mesa does not support the GL_ARB_compatibilty extension or the |
* compatibility profile. This means that we treat a API_OPENGL_COMPAT 3.1 as |
* API_OPENGL_CORE and reject API_OPENGL_COMPAT 3.2+. |
*/ |
if (mesa_api == API_OPENGL_COMPAT && major_version == 3 && minor_version == 1) |
mesa_api = API_OPENGL_CORE; |
if (mesa_api == API_OPENGL_COMPAT |
&& ((major_version > 3) |
|| (major_version == 3 && minor_version >= 2))) { |
*error = __DRI_CTX_ERROR_BAD_API; |
return NULL; |
} |
/* The EGL_KHR_create_context spec says: |
* |
* "Flags are only defined for OpenGL context creation, and specifying |
* a flags value other than zero for other types of contexts, |
* including OpenGL ES contexts, will generate an error." |
* |
* The GLX_EXT_create_context_es2_profile specification doesn't say |
* anything specific about this case. However, none of the known flags |
* have any meaning in an ES context, so this seems safe. |
*/ |
if (mesa_api != API_OPENGL_COMPAT |
&& mesa_api != API_OPENGL_CORE |
&& flags != 0) { |
*error = __DRI_CTX_ERROR_BAD_FLAG; |
return NULL; |
} |
/* There are no forward-compatible contexts before OpenGL 3.0. The |
* GLX_ARB_create_context spec says: |
* |
* "Forward-compatible contexts are defined only for OpenGL versions |
* 3.0 and later." |
* |
* Forward-looking contexts are supported by silently converting the |
* requested API to API_OPENGL_CORE. |
* |
* In Mesa, a debug context is the same as a regular context. |
*/ |
if ((flags & __DRI_CTX_FLAG_FORWARD_COMPATIBLE) != 0) { |
mesa_api = API_OPENGL_CORE; |
} |
if ((flags & ~(__DRI_CTX_FLAG_DEBUG | __DRI_CTX_FLAG_FORWARD_COMPATIBLE)) |
!= 0) { |
*error = __DRI_CTX_ERROR_UNKNOWN_FLAG; |
return NULL; |
} |
context = calloc(1, sizeof *context); |
if (!context) { |
*error = __DRI_CTX_ERROR_NO_MEMORY; |
return NULL; |
} |
context->loaderPrivate = data; |
context->driScreenPriv = screen; |
context->driDrawablePriv = NULL; |
context->driReadablePriv = NULL; |
if (!driDriverAPI.CreateContext(mesa_api, modes, context, |
major_version, minor_version, |
flags, error, shareCtx) ) { |
free(context); |
return NULL; |
} |
*error = __DRI_CTX_ERROR_SUCCESS; |
return context; |
} |
static __DRIcontext * |
dri2CreateNewContextForAPI(__DRIscreen *screen, int api, |
const __DRIconfig *config, |
__DRIcontext *shared, void *data) |
{ |
unsigned error; |
return dri2CreateContextAttribs(screen, api, config, shared, 0, NULL, |
&error, data); |
} |
static __DRIcontext * |
dri2CreateNewContext(__DRIscreen *screen, const __DRIconfig *config, |
__DRIcontext *shared, void *data) |
{ |
return dri2CreateNewContextForAPI(screen, __DRI_API_OPENGL, |
config, shared, data); |
} |
/** |
* Destroy the per-context private information. |
* |
* \internal |
* This function calls __DriverAPIRec::DestroyContext on \p contextPrivate, calls |
* drmDestroyContext(), and finally frees \p contextPrivate. |
*/ |
static void |
driDestroyContext(__DRIcontext *pcp) |
{ |
if (pcp) { |
driDriverAPI.DestroyContext(pcp); |
free(pcp); |
} |
} |
static int |
driCopyContext(__DRIcontext *dest, __DRIcontext *src, unsigned long mask) |
{ |
(void) dest; |
(void) src; |
(void) mask; |
return GL_FALSE; |
} |
/*@}*/ |
/*****************************************************************/ |
/** \name Context (un)binding functions */ |
/*****************************************************************/ |
/*@{*/ |
static void dri_get_drawable(__DRIdrawable *pdp); |
static void dri_put_drawable(__DRIdrawable *pdp); |
/** |
* This function takes both a read buffer and a draw buffer. This is needed |
* for \c glXMakeCurrentReadSGI or GLX 1.3's \c glXMakeContextCurrent |
* function. |
*/ |
static int driBindContext(__DRIcontext *pcp, |
__DRIdrawable *pdp, |
__DRIdrawable *prp) |
{ |
/* |
** Assume error checking is done properly in glXMakeCurrent before |
** calling driUnbindContext. |
*/ |
if (!pcp) |
return GL_FALSE; |
/* Bind the drawable to the context */ |
pcp->driDrawablePriv = pdp; |
pcp->driReadablePriv = prp; |
if (pdp) { |
pdp->driContextPriv = pcp; |
dri_get_drawable(pdp); |
} |
if (prp && pdp != prp) { |
dri_get_drawable(prp); |
} |
return driDriverAPI.MakeCurrent(pcp, pdp, prp); |
} |
/** |
* Unbind context. |
* |
* \param scrn the screen. |
* \param gc context. |
* |
* \return \c GL_TRUE on success, or \c GL_FALSE on failure. |
* |
* \internal |
* This function calls __DriverAPIRec::UnbindContext, and then decrements |
* __DRIdrawableRec::refcount which must be non-zero for a successful |
* return. |
* |
* While casting the opaque private pointers associated with the parameters |
* into their respective real types it also assures they are not \c NULL. |
*/ |
static int driUnbindContext(__DRIcontext *pcp) |
{ |
__DRIdrawable *pdp; |
__DRIdrawable *prp; |
/* |
** Assume error checking is done properly in glXMakeCurrent before |
** calling driUnbindContext. |
*/ |
if (pcp == NULL) |
return GL_FALSE; |
pdp = pcp->driDrawablePriv; |
prp = pcp->driReadablePriv; |
/* already unbound */ |
if (!pdp && !prp) |
return GL_TRUE; |
driDriverAPI.UnbindContext(pcp); |
assert(pdp); |
if (pdp->refcount == 0) { |
/* ERROR!!! */ |
return GL_FALSE; |
} |
dri_put_drawable(pdp); |
if (prp != pdp) { |
if (prp->refcount == 0) { |
/* ERROR!!! */ |
return GL_FALSE; |
} |
dri_put_drawable(prp); |
} |
/* XXX this is disabled so that if we call SwapBuffers on an unbound |
* window we can determine the last context bound to the window and |
* use that context's lock. (BrianP, 2-Dec-2000) |
*/ |
pcp->driDrawablePriv = NULL; |
pcp->driReadablePriv = NULL; |
return GL_TRUE; |
} |
/*@}*/ |
static void dri_get_drawable(__DRIdrawable *pdp) |
{ |
pdp->refcount++; |
} |
static void dri_put_drawable(__DRIdrawable *pdp) |
{ |
if (pdp) { |
pdp->refcount--; |
if (pdp->refcount) |
return; |
driDriverAPI.DestroyBuffer(pdp); |
free(pdp); |
} |
} |
static __DRIdrawable * |
dri2CreateNewDrawable(__DRIscreen *screen, |
const __DRIconfig *config, |
void *data) |
{ |
__DRIdrawable *pdraw; |
pdraw = malloc(sizeof *pdraw); |
if (!pdraw) |
return NULL; |
pdraw->loaderPrivate = data; |
pdraw->driScreenPriv = screen; |
pdraw->driContextPriv = NULL; |
pdraw->refcount = 0; |
pdraw->lastStamp = 0; |
pdraw->w = 0; |
pdraw->h = 0; |
dri_get_drawable(pdraw); |
if (!driDriverAPI.CreateBuffer(screen, pdraw, &config->modes, GL_FALSE)) { |
free(pdraw); |
return NULL; |
} |
pdraw->dri2.stamp = pdraw->lastStamp + 1; |
return pdraw; |
} |
static void |
driDestroyDrawable(__DRIdrawable *pdp) |
{ |
dri_put_drawable(pdp); |
} |
static __DRIbuffer * |
dri2AllocateBuffer(__DRIscreen *screen, |
unsigned int attachment, unsigned int format, |
int width, int height) |
{ |
return driDriverAPI.AllocateBuffer(screen, attachment, format, |
width, height); |
} |
static void |
dri2ReleaseBuffer(__DRIscreen *screen, __DRIbuffer *buffer) |
{ |
driDriverAPI.ReleaseBuffer(screen, buffer); |
} |
static int |
dri2ConfigQueryb(__DRIscreen *screen, const char *var, GLboolean *val) |
{ |
if (!driCheckOption(&screen->optionCache, var, DRI_BOOL)) |
return -1; |
*val = driQueryOptionb(&screen->optionCache, var); |
return 0; |
} |
static int |
dri2ConfigQueryi(__DRIscreen *screen, const char *var, GLint *val) |
{ |
if (!driCheckOption(&screen->optionCache, var, DRI_INT) && |
!driCheckOption(&screen->optionCache, var, DRI_ENUM)) |
return -1; |
*val = driQueryOptioni(&screen->optionCache, var); |
return 0; |
} |
static int |
dri2ConfigQueryf(__DRIscreen *screen, const char *var, GLfloat *val) |
{ |
if (!driCheckOption(&screen->optionCache, var, DRI_FLOAT)) |
return -1; |
*val = driQueryOptionf(&screen->optionCache, var); |
return 0; |
} |
static unsigned int |
dri2GetAPIMask(__DRIscreen *screen) |
{ |
return screen->api_mask; |
} |
/** Core interface */ |
const __DRIcoreExtension driCoreExtension = { |
.base = { __DRI_CORE, __DRI_CORE_VERSION }, |
.createNewScreen = NULL, |
.destroyScreen = driDestroyScreen, |
.getExtensions = driGetExtensions, |
.getConfigAttrib = driGetConfigAttrib, |
.indexConfigAttrib = driIndexConfigAttrib, |
.createNewDrawable = NULL, |
.destroyDrawable = driDestroyDrawable, |
.swapBuffers = NULL, |
.createNewContext = NULL, |
.copyContext = driCopyContext, |
.destroyContext = driDestroyContext, |
.bindContext = driBindContext, |
.unbindContext = driUnbindContext |
}; |
/** DRI2 interface */ |
const __DRIdri2Extension driDRI2Extension = { |
.base = { __DRI_DRI2, 3 }, |
.createNewScreen = dri2CreateNewScreen, |
.createNewDrawable = dri2CreateNewDrawable, |
.createNewContext = dri2CreateNewContext, |
.getAPIMask = dri2GetAPIMask, |
.createNewContextForAPI = dri2CreateNewContextForAPI, |
.allocateBuffer = dri2AllocateBuffer, |
.releaseBuffer = dri2ReleaseBuffer, |
.createContextAttribs = dri2CreateContextAttribs |
}; |
const __DRI2configQueryExtension dri2ConfigQueryExtension = { |
.base = { __DRI2_CONFIG_QUERY, __DRI2_CONFIG_QUERY_VERSION }, |
.configQueryb = dri2ConfigQueryb, |
.configQueryi = dri2ConfigQueryi, |
.configQueryf = dri2ConfigQueryf, |
}; |
void |
dri2InvalidateDrawable(__DRIdrawable *drawable) |
{ |
drawable->dri2.stamp++; |
} |
/** |
* Check that the gl_framebuffer associated with dPriv is the right size. |
* Resize the gl_framebuffer if needed. |
* It's expected that the dPriv->driverPrivate member points to a |
* gl_framebuffer object. |
*/ |
void |
driUpdateFramebufferSize(struct gl_context *ctx, const __DRIdrawable *dPriv) |
{ |
struct gl_framebuffer *fb = (struct gl_framebuffer *) dPriv->driverPrivate; |
if (fb && (dPriv->w != fb->Width || dPriv->h != fb->Height)) { |
ctx->Driver.ResizeBuffers(ctx, fb, dPriv->w, dPriv->h); |
/* if the driver needs the hw lock for ResizeBuffers, the drawable |
might have changed again by now */ |
assert(fb->Width == dPriv->w); |
assert(fb->Height == dPriv->h); |
} |
} |
/contrib/sdk/sources/Mesa/src/mesa/drivers/dri/common/dri_util.c.bak |
---|
0,0 → 1,632 |
/* |
* (C) Copyright IBM Corporation 2002, 2004 |
* All Rights Reserved. |
* |
* 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 |
* on the rights to use, copy, modify, merge, publish, distribute, sub |
* license, and/or sell copies of the Software, and to permit persons to whom |
* the Software is furnished to do so, subject to the following conditions: |
* |
* The above copyright notice and this permission notice (including the next |
* paragraph) shall be included in all copies or substantial portions of the |
* Software. |
* |
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL |
* THE AUTHORS AND/OR THEIR SUPPLIERS 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 dri_util.c |
* DRI utility functions. |
* |
* This module acts as glue between GLX and the actual hardware driver. A DRI |
* driver doesn't really \e have to use any of this - it's optional. But, some |
* useful stuff is done here that otherwise would have to be duplicated in most |
* drivers. |
* |
* Basically, these utility functions take care of some of the dirty details of |
* screen initialization, context creation, context binding, DRM setup, etc. |
* |
* These functions are compiled into each DRI driver so libGL.so knows nothing |
* about them. |
*/ |
#include <xf86drm.h> |
#include "dri_util.h" |
#include "utils.h" |
#include "xmlpool.h" |
#include "../glsl/glsl_parser_extras.h" |
PUBLIC const char __dri2ConfigOptions[] = |
DRI_CONF_BEGIN |
DRI_CONF_SECTION_PERFORMANCE |
DRI_CONF_VBLANK_MODE(DRI_CONF_VBLANK_DEF_INTERVAL_1) |
DRI_CONF_SECTION_END |
DRI_CONF_END; |
static const uint __dri2NConfigOptions = 1; |
/*****************************************************************/ |
/** \name Screen handling functions */ |
/*****************************************************************/ |
/*@{*/ |
static void |
setupLoaderExtensions(__DRIscreen *psp, |
const __DRIextension **extensions) |
{ |
int i; |
for (i = 0; extensions[i]; i++) { |
if (strcmp(extensions[i]->name, __DRI_DRI2_LOADER) == 0) |
psp->dri2.loader = (__DRIdri2LoaderExtension *) extensions[i]; |
if (strcmp(extensions[i]->name, __DRI_IMAGE_LOOKUP) == 0) |
psp->dri2.image = (__DRIimageLookupExtension *) extensions[i]; |
if (strcmp(extensions[i]->name, __DRI_USE_INVALIDATE) == 0) |
psp->dri2.useInvalidate = (__DRIuseInvalidateExtension *) extensions[i]; |
} |
} |
static __DRIscreen * |
dri2CreateNewScreen(int scrn, int fd, |
const __DRIextension **extensions, |
const __DRIconfig ***driver_configs, void *data) |
{ |
static const __DRIextension *emptyExtensionList[] = { NULL }; |
__DRIscreen *psp; |
drmVersionPtr version; |
psp = calloc(1, sizeof(*psp)); |
if (!psp) |
return NULL; |
setupLoaderExtensions(psp, extensions); |
version = drmGetVersion(fd); |
if (version) { |
psp->drm_version.major = version->version_major; |
psp->drm_version.minor = version->version_minor; |
psp->drm_version.patch = version->version_patchlevel; |
drmFreeVersion(version); |
} |
psp->loaderPrivate = data; |
psp->extensions = emptyExtensionList; |
psp->fd = fd; |
psp->myNum = scrn; |
psp->api_mask = (1 << __DRI_API_OPENGL); |
*driver_configs = driDriverAPI.InitScreen(psp); |
if (*driver_configs == NULL) { |
free(psp); |
return NULL; |
} |
driParseOptionInfo(&psp->optionInfo, __dri2ConfigOptions, __dri2NConfigOptions); |
driParseConfigFiles(&psp->optionCache, &psp->optionInfo, psp->myNum, "dri2"); |
return psp; |
} |
/** |
* Destroy the per-screen private information. |
* |
* \internal |
* This function calls __DriverAPIRec::DestroyScreen on \p screenPrivate, calls |
* drmClose(), and finally frees \p screenPrivate. |
*/ |
static void driDestroyScreen(__DRIscreen *psp) |
{ |
if (psp) { |
/* No interaction with the X-server is possible at this point. This |
* routine is called after XCloseDisplay, so there is no protocol |
* stream open to the X-server anymore. |
*/ |
_mesa_destroy_shader_compiler(); |
driDriverAPI.DestroyScreen(psp); |
driDestroyOptionCache(&psp->optionCache); |
driDestroyOptionInfo(&psp->optionInfo); |
free(psp); |
} |
} |
static const __DRIextension **driGetExtensions(__DRIscreen *psp) |
{ |
return psp->extensions; |
} |
/*@}*/ |
/*****************************************************************/ |
/** \name Context handling functions */ |
/*****************************************************************/ |
/*@{*/ |
static __DRIcontext * |
dri2CreateContextAttribs(__DRIscreen *screen, int api, |
const __DRIconfig *config, |
__DRIcontext *shared, |
unsigned num_attribs, |
const uint32_t *attribs, |
unsigned *error, |
void *data) |
{ |
__DRIcontext *context; |
const struct gl_config *modes = (config != NULL) ? &config->modes : NULL; |
void *shareCtx = (shared != NULL) ? shared->driverPrivate : NULL; |
gl_api mesa_api; |
unsigned major_version = 1; |
unsigned minor_version = 0; |
uint32_t flags = 0; |
assert((num_attribs == 0) || (attribs != NULL)); |
if (!(screen->api_mask & (1 << api))) { |
*error = __DRI_CTX_ERROR_BAD_API; |
return NULL; |
} |
switch (api) { |
case __DRI_API_OPENGL: |
mesa_api = API_OPENGL_COMPAT; |
break; |
case __DRI_API_GLES: |
mesa_api = API_OPENGLES; |
break; |
case __DRI_API_GLES2: |
case __DRI_API_GLES3: |
mesa_api = API_OPENGLES2; |
break; |
case __DRI_API_OPENGL_CORE: |
mesa_api = API_OPENGL_CORE; |
break; |
default: |
*error = __DRI_CTX_ERROR_BAD_API; |
return NULL; |
} |
for (unsigned i = 0; i < num_attribs; i++) { |
switch (attribs[i * 2]) { |
case __DRI_CTX_ATTRIB_MAJOR_VERSION: |
major_version = attribs[i * 2 + 1]; |
break; |
case __DRI_CTX_ATTRIB_MINOR_VERSION: |
minor_version = attribs[i * 2 + 1]; |
break; |
case __DRI_CTX_ATTRIB_FLAGS: |
flags = attribs[i * 2 + 1]; |
break; |
default: |
/* We can't create a context that satisfies the requirements of an |
* attribute that we don't understand. Return failure. |
*/ |
assert(!"Should not get here."); |
*error = __DRI_CTX_ERROR_UNKNOWN_ATTRIBUTE; |
return NULL; |
} |
} |
/* Mesa does not support the GL_ARB_compatibilty extension or the |
* compatibility profile. This means that we treat a API_OPENGL_COMPAT 3.1 as |
* API_OPENGL_CORE and reject API_OPENGL_COMPAT 3.2+. |
*/ |
if (mesa_api == API_OPENGL_COMPAT && major_version == 3 && minor_version == 1) |
mesa_api = API_OPENGL_CORE; |
if (mesa_api == API_OPENGL_COMPAT |
&& ((major_version > 3) |
|| (major_version == 3 && minor_version >= 2))) { |
*error = __DRI_CTX_ERROR_BAD_API; |
return NULL; |
} |
/* The EGL_KHR_create_context spec says: |
* |
* "Flags are only defined for OpenGL context creation, and specifying |
* a flags value other than zero for other types of contexts, |
* including OpenGL ES contexts, will generate an error." |
* |
* The GLX_EXT_create_context_es2_profile specification doesn't say |
* anything specific about this case. However, none of the known flags |
* have any meaning in an ES context, so this seems safe. |
*/ |
if (mesa_api != API_OPENGL_COMPAT |
&& mesa_api != API_OPENGL_CORE |
&& flags != 0) { |
*error = __DRI_CTX_ERROR_BAD_FLAG; |
return NULL; |
} |
/* There are no forward-compatible contexts before OpenGL 3.0. The |
* GLX_ARB_create_context spec says: |
* |
* "Forward-compatible contexts are defined only for OpenGL versions |
* 3.0 and later." |
* |
* Forward-looking contexts are supported by silently converting the |
* requested API to API_OPENGL_CORE. |
* |
* In Mesa, a debug context is the same as a regular context. |
*/ |
if ((flags & __DRI_CTX_FLAG_FORWARD_COMPATIBLE) != 0) { |
mesa_api = API_OPENGL_CORE; |
} |
if ((flags & ~(__DRI_CTX_FLAG_DEBUG | __DRI_CTX_FLAG_FORWARD_COMPATIBLE)) |
!= 0) { |
*error = __DRI_CTX_ERROR_UNKNOWN_FLAG; |
return NULL; |
} |
context = calloc(1, sizeof *context); |
if (!context) { |
*error = __DRI_CTX_ERROR_NO_MEMORY; |
return NULL; |
} |
context->loaderPrivate = data; |
context->driScreenPriv = screen; |
context->driDrawablePriv = NULL; |
context->driReadablePriv = NULL; |
if (!driDriverAPI.CreateContext(mesa_api, modes, context, |
major_version, minor_version, |
flags, error, shareCtx) ) { |
free(context); |
return NULL; |
} |
*error = __DRI_CTX_ERROR_SUCCESS; |
return context; |
} |
static __DRIcontext * |
dri2CreateNewContextForAPI(__DRIscreen *screen, int api, |
const __DRIconfig *config, |
__DRIcontext *shared, void *data) |
{ |
unsigned error; |
return dri2CreateContextAttribs(screen, api, config, shared, 0, NULL, |
&error, data); |
} |
static __DRIcontext * |
dri2CreateNewContext(__DRIscreen *screen, const __DRIconfig *config, |
__DRIcontext *shared, void *data) |
{ |
return dri2CreateNewContextForAPI(screen, __DRI_API_OPENGL, |
config, shared, data); |
} |
/** |
* Destroy the per-context private information. |
* |
* \internal |
* This function calls __DriverAPIRec::DestroyContext on \p contextPrivate, calls |
* drmDestroyContext(), and finally frees \p contextPrivate. |
*/ |
static void |
driDestroyContext(__DRIcontext *pcp) |
{ |
if (pcp) { |
driDriverAPI.DestroyContext(pcp); |
free(pcp); |
} |
} |
static int |
driCopyContext(__DRIcontext *dest, __DRIcontext *src, unsigned long mask) |
{ |
(void) dest; |
(void) src; |
(void) mask; |
return GL_FALSE; |
} |
/*@}*/ |
/*****************************************************************/ |
/** \name Context (un)binding functions */ |
/*****************************************************************/ |
/*@{*/ |
static void dri_get_drawable(__DRIdrawable *pdp); |
static void dri_put_drawable(__DRIdrawable *pdp); |
/** |
* This function takes both a read buffer and a draw buffer. This is needed |
* for \c glXMakeCurrentReadSGI or GLX 1.3's \c glXMakeContextCurrent |
* function. |
*/ |
static int driBindContext(__DRIcontext *pcp, |
__DRIdrawable *pdp, |
__DRIdrawable *prp) |
{ |
/* |
** Assume error checking is done properly in glXMakeCurrent before |
** calling driUnbindContext. |
*/ |
if (!pcp) |
return GL_FALSE; |
/* Bind the drawable to the context */ |
pcp->driDrawablePriv = pdp; |
pcp->driReadablePriv = prp; |
if (pdp) { |
pdp->driContextPriv = pcp; |
dri_get_drawable(pdp); |
} |
if (prp && pdp != prp) { |
dri_get_drawable(prp); |
} |
return driDriverAPI.MakeCurrent(pcp, pdp, prp); |
} |
/** |
* Unbind context. |
* |
* \param scrn the screen. |
* \param gc context. |
* |
* \return \c GL_TRUE on success, or \c GL_FALSE on failure. |
* |
* \internal |
* This function calls __DriverAPIRec::UnbindContext, and then decrements |
* __DRIdrawableRec::refcount which must be non-zero for a successful |
* return. |
* |
* While casting the opaque private pointers associated with the parameters |
* into their respective real types it also assures they are not \c NULL. |
*/ |
static int driUnbindContext(__DRIcontext *pcp) |
{ |
__DRIdrawable *pdp; |
__DRIdrawable *prp; |
/* |
** Assume error checking is done properly in glXMakeCurrent before |
** calling driUnbindContext. |
*/ |
if (pcp == NULL) |
return GL_FALSE; |
pdp = pcp->driDrawablePriv; |
prp = pcp->driReadablePriv; |
/* already unbound */ |
if (!pdp && !prp) |
return GL_TRUE; |
driDriverAPI.UnbindContext(pcp); |
assert(pdp); |
if (pdp->refcount == 0) { |
/* ERROR!!! */ |
return GL_FALSE; |
} |
dri_put_drawable(pdp); |
if (prp != pdp) { |
if (prp->refcount == 0) { |
/* ERROR!!! */ |
return GL_FALSE; |
} |
dri_put_drawable(prp); |
} |
/* XXX this is disabled so that if we call SwapBuffers on an unbound |
* window we can determine the last context bound to the window and |
* use that context's lock. (BrianP, 2-Dec-2000) |
*/ |
pcp->driDrawablePriv = NULL; |
pcp->driReadablePriv = NULL; |
return GL_TRUE; |
} |
/*@}*/ |
static void dri_get_drawable(__DRIdrawable *pdp) |
{ |
pdp->refcount++; |
} |
static void dri_put_drawable(__DRIdrawable *pdp) |
{ |
if (pdp) { |
pdp->refcount--; |
if (pdp->refcount) |
return; |
driDriverAPI.DestroyBuffer(pdp); |
free(pdp); |
} |
} |
static __DRIdrawable * |
dri2CreateNewDrawable(__DRIscreen *screen, |
const __DRIconfig *config, |
void *data) |
{ |
__DRIdrawable *pdraw; |
printf("%s: screen %p config %p, data %p\n", |
__FUNCTION__, screen, config, data); |
pdraw = malloc(sizeof *pdraw); |
if (!pdraw) |
return NULL; |
pdraw->loaderPrivate = data; |
pdraw->driScreenPriv = screen; |
pdraw->driContextPriv = NULL; |
pdraw->refcount = 0; |
pdraw->lastStamp = 0; |
pdraw->w = 0; |
pdraw->h = 0; |
dri_get_drawable(pdraw); |
if (!driDriverAPI.CreateBuffer(screen, pdraw, &config->modes, GL_FALSE)) { |
free(pdraw); |
return NULL; |
} |
pdraw->dri2.stamp = pdraw->lastStamp + 1; |
return pdraw; |
} |
static void |
driDestroyDrawable(__DRIdrawable *pdp) |
{ |
dri_put_drawable(pdp); |
} |
static __DRIbuffer * |
dri2AllocateBuffer(__DRIscreen *screen, |
unsigned int attachment, unsigned int format, |
int width, int height) |
{ |
return driDriverAPI.AllocateBuffer(screen, attachment, format, |
width, height); |
} |
static void |
dri2ReleaseBuffer(__DRIscreen *screen, __DRIbuffer *buffer) |
{ |
driDriverAPI.ReleaseBuffer(screen, buffer); |
} |
static int |
dri2ConfigQueryb(__DRIscreen *screen, const char *var, GLboolean *val) |
{ |
if (!driCheckOption(&screen->optionCache, var, DRI_BOOL)) |
return -1; |
*val = driQueryOptionb(&screen->optionCache, var); |
return 0; |
} |
static int |
dri2ConfigQueryi(__DRIscreen *screen, const char *var, GLint *val) |
{ |
if (!driCheckOption(&screen->optionCache, var, DRI_INT) && |
!driCheckOption(&screen->optionCache, var, DRI_ENUM)) |
return -1; |
*val = driQueryOptioni(&screen->optionCache, var); |
return 0; |
} |
static int |
dri2ConfigQueryf(__DRIscreen *screen, const char *var, GLfloat *val) |
{ |
if (!driCheckOption(&screen->optionCache, var, DRI_FLOAT)) |
return -1; |
*val = driQueryOptionf(&screen->optionCache, var); |
return 0; |
} |
static unsigned int |
dri2GetAPIMask(__DRIscreen *screen) |
{ |
return screen->api_mask; |
} |
/** Core interface */ |
const __DRIcoreExtension driCoreExtension = { |
.base = { __DRI_CORE, __DRI_CORE_VERSION }, |
.createNewScreen = NULL, |
.destroyScreen = driDestroyScreen, |
.getExtensions = driGetExtensions, |
.getConfigAttrib = driGetConfigAttrib, |
.indexConfigAttrib = driIndexConfigAttrib, |
.createNewDrawable = NULL, |
.destroyDrawable = driDestroyDrawable, |
.swapBuffers = NULL, |
.createNewContext = NULL, |
.copyContext = driCopyContext, |
.destroyContext = driDestroyContext, |
.bindContext = driBindContext, |
.unbindContext = driUnbindContext |
}; |
/** DRI2 interface */ |
const __DRIdri2Extension driDRI2Extension = { |
.base = { __DRI_DRI2, 3 }, |
.createNewScreen = dri2CreateNewScreen, |
.createNewDrawable = dri2CreateNewDrawable, |
.createNewContext = dri2CreateNewContext, |
.getAPIMask = dri2GetAPIMask, |
.createNewContextForAPI = dri2CreateNewContextForAPI, |
.allocateBuffer = dri2AllocateBuffer, |
.releaseBuffer = dri2ReleaseBuffer, |
.createContextAttribs = dri2CreateContextAttribs |
}; |
const __DRI2configQueryExtension dri2ConfigQueryExtension = { |
.base = { __DRI2_CONFIG_QUERY, __DRI2_CONFIG_QUERY_VERSION }, |
.configQueryb = dri2ConfigQueryb, |
.configQueryi = dri2ConfigQueryi, |
.configQueryf = dri2ConfigQueryf, |
}; |
void |
dri2InvalidateDrawable(__DRIdrawable *drawable) |
{ |
drawable->dri2.stamp++; |
} |
/** |
* Check that the gl_framebuffer associated with dPriv is the right size. |
* Resize the gl_framebuffer if needed. |
* It's expected that the dPriv->driverPrivate member points to a |
* gl_framebuffer object. |
*/ |
void |
driUpdateFramebufferSize(struct gl_context *ctx, const __DRIdrawable *dPriv) |
{ |
struct gl_framebuffer *fb = (struct gl_framebuffer *) dPriv->driverPrivate; |
if (fb && (dPriv->w != fb->Width || dPriv->h != fb->Height)) { |
ctx->Driver.ResizeBuffers(ctx, fb, dPriv->w, dPriv->h); |
/* if the driver needs the hw lock for ResizeBuffers, the drawable |
might have changed again by now */ |
assert(fb->Width == dPriv->w); |
assert(fb->Height == dPriv->h); |
} |
} |
/contrib/sdk/sources/Mesa/src/mesa/drivers/dri/common/dri_util.h |
---|
0,0 → 1,269 |
/* |
* Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. |
* All Rights Reserved. |
* |
* 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, sub license, and/or sell copies of the Software, and to |
* permit persons to whom the Software is furnished to do so, subject to |
* the following conditions: |
* |
* The above copyright notice and this permission notice (including the |
* next paragraph) shall be included in all copies or substantial portions |
* of the Software. |
* |
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS |
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF |
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. |
* IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS 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 dri_util.h |
* DRI utility functions definitions. |
* |
* This module acts as glue between GLX and the actual hardware driver. A DRI |
* driver doesn't really \e have to use any of this - it's optional. But, some |
* useful stuff is done here that otherwise would have to be duplicated in most |
* drivers. |
* |
* Basically, these utility functions take care of some of the dirty details of |
* screen initialization, context creation, context binding, DRM setup, etc. |
* |
* These functions are compiled into each DRI driver so libGL.so knows nothing |
* about them. |
* |
* \sa dri_util.c. |
* |
* \author Kevin E. Martin <kevin@precisioninsight.com> |
* \author Brian Paul <brian@precisioninsight.com> |
*/ |
/** |
* The following structs are shared between DRISW and DRI2, the DRISW structs |
* are essentially base classes of the DRI2 structs. DRISW needs to compile on |
* platforms without DRM, so keep the structs opaque to DRM. |
*/ |
#ifndef _DRI_UTIL_H_ |
#define _DRI_UTIL_H_ |
#include <GL/gl.h> |
#include <GL/internal/dri_interface.h> |
#include "main/mtypes.h" |
#include "xmlconfig.h" |
/** |
* Extensions. |
*/ |
extern const __DRIcoreExtension driCoreExtension; |
extern const __DRIswrastExtension driSWRastExtension; |
extern const __DRIdri2Extension driDRI2Extension; |
extern const __DRI2configQueryExtension dri2ConfigQueryExtension; |
/** |
* Driver callback functions. |
* |
* Each DRI driver must have one of these structures with all the pointers set |
* to appropriate functions within the driver. |
* |
* When glXCreateContext() is called, for example, it'll call a helper function |
* dri_util.c which in turn will jump through the \a CreateContext pointer in |
* this structure. |
*/ |
struct __DriverAPIRec { |
const __DRIconfig **(*InitScreen) (__DRIscreen * priv); |
void (*DestroyScreen)(__DRIscreen *driScrnPriv); |
GLboolean (*CreateContext)(gl_api api, |
const struct gl_config *glVis, |
__DRIcontext *driContextPriv, |
unsigned major_version, |
unsigned minor_version, |
uint32_t flags, |
unsigned *error, |
void *sharedContextPrivate); |
void (*DestroyContext)(__DRIcontext *driContextPriv); |
GLboolean (*CreateBuffer)(__DRIscreen *driScrnPriv, |
__DRIdrawable *driDrawPriv, |
const struct gl_config *glVis, |
GLboolean pixmapBuffer); |
void (*DestroyBuffer)(__DRIdrawable *driDrawPriv); |
void (*SwapBuffers)(__DRIdrawable *driDrawPriv); |
GLboolean (*MakeCurrent)(__DRIcontext *driContextPriv, |
__DRIdrawable *driDrawPriv, |
__DRIdrawable *driReadPriv); |
GLboolean (*UnbindContext)(__DRIcontext *driContextPriv); |
__DRIbuffer *(*AllocateBuffer) (__DRIscreen *screenPrivate, |
unsigned int attachment, |
unsigned int format, |
int width, int height); |
void (*ReleaseBuffer) (__DRIscreen *screenPrivate, __DRIbuffer *buffer); |
}; |
extern const struct __DriverAPIRec driDriverAPI; |
/** |
* Per-screen private driver information. |
*/ |
struct __DRIscreenRec { |
/** |
* Current screen's number |
*/ |
int myNum; |
/** |
* File descriptor returned when the kernel device driver is opened. |
* |
* Used to: |
* - authenticate client to kernel |
* - map the frame buffer, SAREA, etc. |
* - close the kernel device driver |
*/ |
int fd; |
/** |
* DRM (kernel module) version information. |
*/ |
__DRIversion drm_version; |
/** |
* Device-dependent private information (not stored in the SAREA). |
* |
* This pointer is never touched by the DRI layer. |
*/ |
void *driverPrivate; |
void *loaderPrivate; |
const __DRIextension **extensions; |
const __DRIswrastLoaderExtension *swrast_loader; |
struct { |
/* Flag to indicate that this is a DRI2 screen. Many of the above |
* fields will not be valid or initializaed in that case. */ |
__DRIdri2LoaderExtension *loader; |
__DRIimageLookupExtension *image; |
__DRIuseInvalidateExtension *useInvalidate; |
} dri2; |
driOptionCache optionInfo; |
driOptionCache optionCache; |
unsigned int api_mask; |
}; |
/** |
* Per-context private driver information. |
*/ |
struct __DRIcontextRec { |
/** |
* Device driver's private context data. This structure is opaque. |
*/ |
void *driverPrivate; |
/** |
* The loaders's private context data. This structure is opaque. |
*/ |
void *loaderPrivate; |
/** |
* Pointer to drawable currently bound to this context for drawing. |
*/ |
__DRIdrawable *driDrawablePriv; |
/** |
* Pointer to drawable currently bound to this context for reading. |
*/ |
__DRIdrawable *driReadablePriv; |
/** |
* Pointer to screen on which this context was created. |
*/ |
__DRIscreen *driScreenPriv; |
struct { |
int draw_stamp; |
int read_stamp; |
} dri2; |
}; |
/** |
* Per-drawable private DRI driver information. |
*/ |
struct __DRIdrawableRec { |
/** |
* Driver's private drawable information. |
* |
* This structure is opaque. |
*/ |
void *driverPrivate; |
/** |
* Private data from the loader. We just hold on to it and pass |
* it back when calling into loader provided functions. |
*/ |
void *loaderPrivate; |
/** |
* Pointer to context to which this drawable is currently bound. |
*/ |
__DRIcontext *driContextPriv; |
/** |
* Pointer to screen on which this drawable was created. |
*/ |
__DRIscreen *driScreenPriv; |
/** |
* Reference count for number of context's currently bound to this |
* drawable. |
* |
* Once it reaches zero, the drawable can be destroyed. |
* |
* \note This behavior will change with GLX 1.3. |
*/ |
int refcount; |
/** |
* Last value of the stamp. |
* |
* If this differs from the value stored at __DRIdrawable::dri2.stamp, |
* then the drawable information has been modified by the X server, and the |
* drawable information (below) should be retrieved from the X server. |
*/ |
unsigned int lastStamp; |
int w, h; |
/** |
* Drawable timestamp. Increased when the loader calls invalidate. |
*/ |
struct { |
unsigned int stamp; |
} dri2; |
}; |
extern void |
dri2InvalidateDrawable(__DRIdrawable *drawable); |
extern void |
driUpdateFramebufferSize(struct gl_context *ctx, const __DRIdrawable *dPriv); |
#endif /* _DRI_UTIL_H_ */ |
/contrib/sdk/sources/Mesa/src/mesa/drivers/dri/common/drirc |
---|
0,0 → 1,77 |
<!-- |
============================================ |
Application bugs worked around in this file: |
============================================ |
* Various Unigine products don't use the #version and #extension GLSL |
directives, meaning they only get GLSL 1.10 and no extensions for their |
shaders. |
Enabling all extensions for Unigine fixes most issues, but the GLSL version |
is still 1.10. |
* Unigine Heaven 3.0 with ARB_texture_multisample uses a "ivec4 * vec4" |
expression, which fails to compile with GLSL 1.10. |
Adding "#version 130" fixes this. |
* Unigine Heaven 3.0 with ARB_shader_bit_encoding uses the uint keyword, which |
fails to compile with GLSL 1.10. |
Adding "#version 130" fixes this. |
* Unigine Heaven 3.0 with ARB_shader_bit_encoding uses a "uint & int" |
expression, which fails (and should fail) to compile with any GLSL version. |
Disabling ARB_shader_bit_encoding fixes this. |
TODO: document the other workarounds. |
--> |
<driconf> |
<!-- Please always enable app-specific workarounds for all drivers and |
screens. --> |
<device> |
<application name="Unigine Sanctuary" executable="Sanctuary"> |
<option name="force_glsl_extensions_warn" value="true" /> |
<option name="disable_blend_func_extended" value="true" /> |
</application> |
<application name="Unigine Tropics" executable="Tropics"> |
<option name="force_glsl_extensions_warn" value="true" /> |
<option name="disable_blend_func_extended" value="true" /> |
</application> |
<application name="Unigine Heaven (32-bit)" executable="heaven_x86"> |
<option name="force_glsl_extensions_warn" value="true" /> |
<option name="disable_blend_func_extended" value="true" /> |
<option name="force_glsl_version" value="130" /> |
<option name="disable_shader_bit_encoding" value="true" /> |
</application> |
<application name="Unigine Heaven (64-bit)" executable="heaven_x64"> |
<option name="force_glsl_extensions_warn" value="true" /> |
<option name="disable_blend_func_extended" value="true" /> |
<option name="force_glsl_version" value="130" /> |
<option name="disable_shader_bit_encoding" value="true" /> |
</application> |
<application name="Unigine OilRush (32-bit)" executable="OilRush_x86"> |
<option name="disable_blend_func_extended" value="true" /> |
</application> |
<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> |
<application name="Topogun (32-bit)" executable="topogun32"> |
<option name="always_have_depth_buffer" value="true" /> |
</application> |
<application name="Topogun (64-bit)" executable="topogun64"> |
<option name="always_have_depth_buffer" value="true" /> |
</application> |
</device> |
</driconf> |
/contrib/sdk/sources/Mesa/src/mesa/drivers/dri/common/drisw_util.c |
---|
0,0 → 1,375 |
/* |
* Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. |
* All Rights Reserved. |
* Copyright 2010 George Sapountzis <gsapountzis@gmail.com> |
* |
* Permission is hereby granted, free of charge, to any person obtaining a |
* copy of this software and associated documentation files (the "Software"), |
* to deal in the Software without restriction, including without limitation |
* the rights to use, copy, modify, merge, publish, distribute, sublicense, |
* and/or sell copies of the Software, and to permit persons to whom the |
* Software is furnished to do so, subject to the following conditions: |
* |
* The above copyright notice and this permission notice shall be included |
* in all copies or substantial portions of the Software. |
* |
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS |
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL |
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR |
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, |
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR |
* OTHER DEALINGS IN THE SOFTWARE. |
*/ |
/** |
* \file drisw_util.c |
* |
* DRISW utility functions, i.e. dri_util.c stripped from drm-specific bits. |
*/ |
#include "dri_util.h" |
#include "utils.h" |
/** |
* Screen functions |
*/ |
static void |
setupLoaderExtensions(__DRIscreen *psp, |
const __DRIextension **extensions) |
{ |
int i; |
for (i = 0; extensions[i]; i++) { |
if (strcmp(extensions[i]->name, __DRI_SWRAST_LOADER) == 0) |
psp->swrast_loader = (__DRIswrastLoaderExtension *) extensions[i]; |
} |
} |
static __DRIscreen * |
driCreateNewScreen(int scrn, const __DRIextension **extensions, |
const __DRIconfig ***driver_configs, void *data) |
{ |
static const __DRIextension *emptyExtensionList[] = { NULL }; |
__DRIscreen *psp; |
psp = CALLOC_STRUCT(__DRIscreenRec); |
if (!psp) |
return NULL; |
setupLoaderExtensions(psp, extensions); |
psp->loaderPrivate = data; |
psp->extensions = emptyExtensionList; |
psp->fd = -1; |
psp->myNum = scrn; |
*driver_configs = driDriverAPI.InitScreen(psp); |
if (*driver_configs == NULL) { |
free(psp); |
return NULL; |
} |
return psp; |
} |
static void driDestroyScreen(__DRIscreen *psp) |
{ |
if (psp) { |
driDriverAPI.DestroyScreen(psp); |
free(psp); |
} |
} |
static const __DRIextension **driGetExtensions(__DRIscreen *psp) |
{ |
return psp->extensions; |
} |
/** |
* Context functions |
*/ |
static __DRIcontext * |
driCreateContextAttribs(__DRIscreen *screen, int api, |
const __DRIconfig *config, |
__DRIcontext *shared, |
unsigned num_attribs, |
const uint32_t *attribs, |
unsigned *error, |
void *data) |
{ |
__DRIcontext *pcp; |
const struct gl_config *modes = (config != NULL) ? &config->modes : NULL; |
void * const shareCtx = (shared != NULL) ? shared->driverPrivate : NULL; |
gl_api mesa_api; |
unsigned major_version = 1; |
unsigned minor_version = 0; |
uint32_t flags = 0; |
/* Either num_attribs is zero and attribs is NULL, or num_attribs is not |
* zero and attribs is not NULL. |
*/ |
assert((num_attribs == 0) == (attribs == NULL)); |
switch (api) { |
case __DRI_API_OPENGL: |
mesa_api = API_OPENGL_COMPAT; |
break; |
case __DRI_API_GLES: |
mesa_api = API_OPENGLES; |
break; |
case __DRI_API_GLES2: |
case __DRI_API_GLES3: |
mesa_api = API_OPENGLES2; |
break; |
case __DRI_API_OPENGL_CORE: |
mesa_api = API_OPENGL_CORE; |
break; |
default: |
*error = __DRI_CTX_ERROR_BAD_API; |
return NULL; |
} |
for (unsigned i = 0; i < num_attribs; i++) { |
switch (attribs[i * 2]) { |
case __DRI_CTX_ATTRIB_MAJOR_VERSION: |
major_version = attribs[i * 2 + 1]; |
break; |
case __DRI_CTX_ATTRIB_MINOR_VERSION: |
minor_version = attribs[i * 2 + 1]; |
break; |
case __DRI_CTX_ATTRIB_FLAGS: |
flags = attribs[i * 2 + 1]; |
break; |
default: |
/* We can't create a context that satisfies the requirements of an |
* attribute that we don't understand. Return failure. |
*/ |
return NULL; |
} |
} |
/* Mesa does not support the GL_ARB_compatibilty extension or the |
* compatibility profile. This means that we treat a API_OPENGL_COMPAT 3.1 as |
* API_OPENGL_CORE and reject API_OPENGL_COMPAT 3.2+. |
*/ |
if (mesa_api == API_OPENGL_COMPAT && major_version == 3 && minor_version == 1) |
mesa_api = API_OPENGL_CORE; |
if (mesa_api == API_OPENGL_COMPAT |
&& ((major_version > 3) |
|| (major_version == 3 && minor_version >= 2))) { |
*error = __DRI_CTX_ERROR_BAD_API; |
return NULL; |
} |
/* There are no forward-compatible contexts before OpenGL 3.0. The |
* GLX_ARB_create_context spec says: |
* |
* "Forward-compatible contexts are defined only for OpenGL versions |
* 3.0 and later." |
* |
* Moreover, Mesa can't fulfill the requirements of a forward-looking |
* context. Return failure if a forward-looking context is requested. |
* |
* In Mesa, a debug context is the same as a regular context. |
*/ |
if (major_version >= 3) { |
if ((flags & ~__DRI_CTX_FLAG_DEBUG) != 0) |
return NULL; |
} |
pcp = CALLOC_STRUCT(__DRIcontextRec); |
if (!pcp) |
return NULL; |
pcp->loaderPrivate = data; |
pcp->driScreenPriv = screen; |
pcp->driDrawablePriv = NULL; |
pcp->driReadablePriv = NULL; |
if (!driDriverAPI.CreateContext(mesa_api, modes, pcp, |
major_version, minor_version, |
flags, error, shareCtx)) { |
free(pcp); |
return NULL; |
} |
return pcp; |
} |
static __DRIcontext * |
driCreateNewContextForAPI(__DRIscreen *psp, int api, |
const __DRIconfig *config, |
__DRIcontext *shared, void *data) |
{ |
unsigned error; |
return driCreateContextAttribs(psp, api, config, shared, 0, NULL, |
&error, data); |
} |
static __DRIcontext * |
driCreateNewContext(__DRIscreen *psp, const __DRIconfig *config, |
__DRIcontext *shared, void *data) |
{ |
return driCreateNewContextForAPI(psp, __DRI_API_OPENGL, |
config, shared, data); |
} |
static void |
driDestroyContext(__DRIcontext *pcp) |
{ |
if (pcp) { |
driDriverAPI.DestroyContext(pcp); |
free(pcp); |
} |
} |
static int |
driCopyContext(__DRIcontext *dst, __DRIcontext *src, unsigned long mask) |
{ |
return GL_FALSE; |
} |
static void dri_get_drawable(__DRIdrawable *pdp); |
static void dri_put_drawable(__DRIdrawable *pdp); |
static int driBindContext(__DRIcontext *pcp, |
__DRIdrawable *pdp, |
__DRIdrawable *prp) |
{ |
/* Bind the drawable to the context */ |
if (pcp) { |
pcp->driDrawablePriv = pdp; |
pcp->driReadablePriv = prp; |
if (pdp) { |
pdp->driContextPriv = pcp; |
dri_get_drawable(pdp); |
} |
if (prp && pdp != prp) { |
dri_get_drawable(prp); |
} |
} |
return driDriverAPI.MakeCurrent(pcp, pdp, prp); |
} |
static int driUnbindContext(__DRIcontext *pcp) |
{ |
__DRIdrawable *pdp; |
__DRIdrawable *prp; |
if (pcp == NULL) |
return GL_FALSE; |
pdp = pcp->driDrawablePriv; |
prp = pcp->driReadablePriv; |
/* already unbound */ |
if (!pdp && !prp) |
return GL_TRUE; |
driDriverAPI.UnbindContext(pcp); |
dri_put_drawable(pdp); |
if (prp != pdp) { |
dri_put_drawable(prp); |
} |
pcp->driDrawablePriv = NULL; |
pcp->driReadablePriv = NULL; |
return GL_TRUE; |
} |
/** |
* Drawable functions |
*/ |
static void dri_get_drawable(__DRIdrawable *pdp) |
{ |
pdp->refcount++; |
} |
static void dri_put_drawable(__DRIdrawable *pdp) |
{ |
if (pdp) { |
pdp->refcount--; |
if (pdp->refcount) |
return; |
driDriverAPI.DestroyBuffer(pdp); |
free(pdp); |
} |
} |
static __DRIdrawable * |
driCreateNewDrawable(__DRIscreen *psp, |
const __DRIconfig *config, void *data) |
{ |
__DRIdrawable *pdp; |
pdp = CALLOC_STRUCT(__DRIdrawableRec); |
if (!pdp) |
return NULL; |
pdp->loaderPrivate = data; |
pdp->driScreenPriv = psp; |
pdp->driContextPriv = NULL; |
dri_get_drawable(pdp); |
if (!driDriverAPI.CreateBuffer(psp, pdp, &config->modes, GL_FALSE)) { |
free(pdp); |
return NULL; |
} |
pdp->lastStamp = 1; /* const */ |
return pdp; |
} |
static void |
driDestroyDrawable(__DRIdrawable *pdp) |
{ |
dri_put_drawable(pdp); |
} |
static void driSwapBuffers(__DRIdrawable *pdp) |
{ |
driDriverAPI.SwapBuffers(pdp); |
} |
const __DRIcoreExtension driCoreExtension = { |
{ __DRI_CORE, __DRI_CORE_VERSION }, |
NULL, /* driCreateNewScreen */ |
driDestroyScreen, |
driGetExtensions, |
driGetConfigAttrib, |
driIndexConfigAttrib, |
NULL, /* driCreateNewDrawable */ |
driDestroyDrawable, |
driSwapBuffers, |
driCreateNewContext, |
driCopyContext, |
driDestroyContext, |
driBindContext, |
driUnbindContext |
}; |
const __DRIswrastExtension driSWRastExtension = { |
{ __DRI_SWRAST, __DRI_SWRAST_VERSION }, |
driCreateNewScreen, |
driCreateNewDrawable, |
driCreateNewContextForAPI, |
driCreateContextAttribs |
}; |
/contrib/sdk/sources/Mesa/src/mesa/drivers/dri/common/mmio.h |
---|
0,0 → 1,62 |
/* |
* (C) Copyright IBM Corporation 2004 |
* All Rights Reserved. |
* |
* 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 |
* on the rights to use, copy, modify, merge, publish, distribute, sub |
* license, and/or sell copies of the Software, and to permit persons to whom |
* the Software is furnished to do so, subject to the following conditions: |
* |
* The above copyright notice and this permission notice (including the next |
* paragraph) shall be included in all copies or substantial portions of the |
* Software. |
* |
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL |
* IBM AND/OR THEIR SUPPLIERS 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 mmio.h |
* Functions for properly handling memory mapped IO on various platforms. |
* |
* \author Ian Romanick <idr@us.ibm.com> |
*/ |
#ifndef MMIO_H |
#define MMIO_H |
#include "main/glheader.h" |
#if defined( __powerpc__ ) |
static INLINE uint32_t |
read_MMIO_LE32( volatile void * base, unsigned long offset ) |
{ |
uint32_t val; |
__asm__ __volatile__( "lwbrx %0, %1, %2 ; eieio" |
: "=r" (val) |
: "b" (base), "r" (offset) ); |
return val; |
} |
#else |
static INLINE uint32_t |
read_MMIO_LE32( volatile void * base, unsigned long offset ) |
{ |
volatile uint32_t * p = (volatile uint32_t *) (((volatile char *) base) + offset); |
return LE32_TO_CPU( p[0] ); |
} |
#endif |
#endif /* MMIO_H */ |
/contrib/sdk/sources/Mesa/src/mesa/drivers/dri/common/utils.c |
---|
0,0 → 1,469 |
/* |
* (C) Copyright IBM Corporation 2002, 2004 |
* All Rights Reserved. |
* |
* 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 |
* on the rights to use, copy, modify, merge, publish, distribute, sub |
* license, and/or sell copies of the Software, and to permit persons to whom |
* the Software is furnished to do so, subject to the following conditions: |
* |
* The above copyright notice and this permission notice (including the next |
* paragraph) shall be included in all copies or substantial portions of the |
* Software. |
* |
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL |
* VA LINUX SYSTEM, IBM AND/OR THEIR SUPPLIERS 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 utils.c |
* Utility functions for DRI drivers. |
* |
* \author Ian Romanick <idr@us.ibm.com> |
*/ |
#include <string.h> |
#include <stdlib.h> |
#include <stdbool.h> |
#include "main/macros.h" |
#include "main/mtypes.h" |
#include "main/cpuinfo.h" |
#include "main/extensions.h" |
#include "utils.h" |
unsigned |
driParseDebugString( const char * debug, |
const struct dri_debug_control * control ) |
{ |
unsigned flag; |
flag = 0; |
if ( debug != NULL ) { |
while( control->string != NULL ) { |
if ( !strcmp( debug, "all" ) || |
strstr( debug, control->string ) != NULL ) { |
flag |= control->flag; |
} |
control++; |
} |
} |
return flag; |
} |
/** |
* Create the \c GL_RENDERER string for DRI drivers. |
* |
* Almost all DRI drivers use a \c GL_RENDERER string of the form: |
* |
* "Mesa DRI <chip> <driver date> <AGP speed) <CPU information>" |
* |
* Using the supplied chip name, driver data, and AGP speed, this function |
* creates the string. |
* |
* \param buffer Buffer to hold the \c GL_RENDERER string. |
* \param hardware_name Name of the hardware. |
* \param agp_mode AGP mode (speed). |
* |
* \returns |
* The length of the string stored in \c buffer. This does \b not include |
* the terminating \c NUL character. |
*/ |
unsigned |
driGetRendererString( char * buffer, const char * hardware_name, |
GLuint agp_mode ) |
{ |
unsigned offset; |
char *cpu; |
offset = sprintf( buffer, "Mesa DRI %s", hardware_name ); |
/* Append any AGP-specific information. |
*/ |
switch ( agp_mode ) { |
case 1: |
case 2: |
case 4: |
case 8: |
offset += sprintf( & buffer[ offset ], " AGP %ux", agp_mode ); |
break; |
default: |
break; |
} |
/* Append any CPU-specific information. |
*/ |
cpu = _mesa_get_cpu_string(); |
if (cpu) { |
offset += sprintf(buffer + offset, " %s", cpu); |
free(cpu); |
} |
return offset; |
} |
/** |
* Creates a set of \c struct gl_config that a driver will expose. |
* |
* A set of \c struct gl_config will be created based on the supplied |
* parameters. The number of modes processed will be 2 * |
* \c num_depth_stencil_bits * \c num_db_modes. |
* |
* For the most part, data is just copied from \c depth_bits, \c stencil_bits, |
* \c db_modes, and \c visType into each \c struct gl_config element. |
* However, the meanings of \c fb_format and \c fb_type require further |
* explanation. The \c fb_format specifies which color components are in |
* each pixel and what the default order is. For example, \c GL_RGB specifies |
* that red, green, blue are available and red is in the "most significant" |
* position and blue is in the "least significant". The \c fb_type specifies |
* the bit sizes of each component and the actual ordering. For example, if |
* \c GL_UNSIGNED_SHORT_5_6_5_REV is specified with \c GL_RGB, bits [15:11] |
* are the blue value, bits [10:5] are the green value, and bits [4:0] are |
* the red value. |
* |
* One sublte issue is the combination of \c GL_RGB or \c GL_BGR and either |
* of the \c GL_UNSIGNED_INT_8_8_8_8 modes. The resulting mask values in the |
* \c struct gl_config structure is \b identical to the \c GL_RGBA or |
* \c GL_BGRA case, except the \c alphaMask is zero. This means that, as |
* far as this routine is concerned, \c GL_RGB with \c GL_UNSIGNED_INT_8_8_8_8 |
* still uses 32-bits. |
* |
* If in doubt, look at the tables used in the function. |
* |
* \param ptr_to_modes Pointer to a pointer to a linked list of |
* \c struct gl_config. Upon completion, a pointer to |
* the next element to be process will be stored here. |
* If the function fails and returns \c GL_FALSE, this |
* value will be unmodified, but some elements in the |
* linked list may be modified. |
* \param format Mesa gl_format enum describing the pixel format |
* \param depth_bits Array of depth buffer sizes to be exposed. |
* \param stencil_bits Array of stencil buffer sizes to be exposed. |
* \param num_depth_stencil_bits Number of entries in both \c depth_bits and |
* \c stencil_bits. |
* \param db_modes Array of buffer swap modes. If an element has a |
* value of \c GLX_NONE, then it represents a |
* single-buffered mode. Other valid values are |
* \c GLX_SWAP_EXCHANGE_OML, \c GLX_SWAP_COPY_OML, and |
* \c GLX_SWAP_UNDEFINED_OML. See the |
* GLX_OML_swap_method extension spec for more details. |
* \param num_db_modes Number of entries in \c db_modes. |
* \param msaa_samples Array of msaa sample count. 0 represents a visual |
* without a multisample buffer. |
* \param num_msaa_modes Number of entries in \c msaa_samples. |
* \param visType GLX visual type. Usually either \c GLX_TRUE_COLOR or |
* \c GLX_DIRECT_COLOR. |
* |
* \returns |
* Pointer to any array of pointers to the \c __DRIconfig structures created |
* for the specified formats. If there is an error, \c NULL is returned. |
* Currently the only cause of failure is a bad parameter (i.e., unsupported |
* \c format). |
*/ |
__DRIconfig ** |
driCreateConfigs(gl_format format, |
const uint8_t * depth_bits, const uint8_t * stencil_bits, |
unsigned num_depth_stencil_bits, |
const GLenum * db_modes, unsigned num_db_modes, |
const uint8_t * msaa_samples, unsigned num_msaa_modes, |
GLboolean enable_accum) |
{ |
static const uint32_t masks_table[][4] = { |
/* MESA_FORMAT_RGB565 */ |
{ 0x0000F800, 0x000007E0, 0x0000001F, 0x00000000 }, |
/* MESA_FORMAT_XRGB8888 */ |
{ 0x00FF0000, 0x0000FF00, 0x000000FF, 0x00000000 }, |
/* MESA_FORMAT_ARGB8888 */ |
{ 0x00FF0000, 0x0000FF00, 0x000000FF, 0xFF000000 }, |
}; |
const uint32_t * masks; |
__DRIconfig **configs, **c; |
struct gl_config *modes; |
unsigned i, j, k, h; |
unsigned num_modes; |
unsigned num_accum_bits = (enable_accum) ? 2 : 1; |
int red_bits; |
int green_bits; |
int blue_bits; |
int alpha_bits; |
bool is_srgb; |
switch (format) { |
case MESA_FORMAT_RGB565: |
masks = masks_table[0]; |
break; |
case MESA_FORMAT_XRGB8888: |
masks = masks_table[1]; |
break; |
case MESA_FORMAT_ARGB8888: |
case MESA_FORMAT_SARGB8: |
masks = masks_table[2]; |
break; |
default: |
fprintf(stderr, "[%s:%u] Unknown framebuffer type %s (%d).\n", |
__FUNCTION__, __LINE__, |
_mesa_get_format_name(format), format); |
return NULL; |
} |
red_bits = _mesa_get_format_bits(format, GL_RED_BITS); |
green_bits = _mesa_get_format_bits(format, GL_GREEN_BITS); |
blue_bits = _mesa_get_format_bits(format, GL_BLUE_BITS); |
alpha_bits = _mesa_get_format_bits(format, GL_ALPHA_BITS); |
is_srgb = _mesa_get_format_color_encoding(format) == GL_SRGB; |
num_modes = num_depth_stencil_bits * num_db_modes * num_accum_bits * num_msaa_modes; |
configs = calloc(1, (num_modes + 1) * sizeof *configs); |
if (configs == NULL) |
return NULL; |
c = configs; |
for ( k = 0 ; k < num_depth_stencil_bits ; k++ ) { |
for ( i = 0 ; i < num_db_modes ; i++ ) { |
for ( h = 0 ; h < num_msaa_modes; h++ ) { |
for ( j = 0 ; j < num_accum_bits ; j++ ) { |
*c = malloc (sizeof **c); |
modes = &(*c)->modes; |
c++; |
memset(modes, 0, sizeof *modes); |
modes->redBits = red_bits; |
modes->greenBits = green_bits; |
modes->blueBits = blue_bits; |
modes->alphaBits = alpha_bits; |
modes->redMask = masks[0]; |
modes->greenMask = masks[1]; |
modes->blueMask = masks[2]; |
modes->alphaMask = masks[3]; |
modes->rgbBits = modes->redBits + modes->greenBits |
+ modes->blueBits + modes->alphaBits; |
modes->accumRedBits = 16 * j; |
modes->accumGreenBits = 16 * j; |
modes->accumBlueBits = 16 * j; |
modes->accumAlphaBits = (masks[3] != 0) ? 16 * j : 0; |
modes->visualRating = (j == 0) ? GLX_NONE : GLX_SLOW_CONFIG; |
modes->stencilBits = stencil_bits[k]; |
modes->depthBits = depth_bits[k]; |
modes->transparentPixel = GLX_NONE; |
modes->transparentRed = GLX_DONT_CARE; |
modes->transparentGreen = GLX_DONT_CARE; |
modes->transparentBlue = GLX_DONT_CARE; |
modes->transparentAlpha = GLX_DONT_CARE; |
modes->transparentIndex = GLX_DONT_CARE; |
modes->rgbMode = GL_TRUE; |
if ( db_modes[i] == GLX_NONE ) { |
modes->doubleBufferMode = GL_FALSE; |
} |
else { |
modes->doubleBufferMode = GL_TRUE; |
modes->swapMethod = db_modes[i]; |
} |
modes->samples = msaa_samples[h]; |
modes->sampleBuffers = modes->samples ? 1 : 0; |
modes->haveAccumBuffer = ((modes->accumRedBits + |
modes->accumGreenBits + |
modes->accumBlueBits + |
modes->accumAlphaBits) > 0); |
modes->haveDepthBuffer = (modes->depthBits > 0); |
modes->haveStencilBuffer = (modes->stencilBits > 0); |
modes->bindToTextureRgb = GL_TRUE; |
modes->bindToTextureRgba = GL_TRUE; |
modes->bindToMipmapTexture = GL_FALSE; |
modes->bindToTextureTargets = |
__DRI_ATTRIB_TEXTURE_1D_BIT | |
__DRI_ATTRIB_TEXTURE_2D_BIT | |
__DRI_ATTRIB_TEXTURE_RECTANGLE_BIT; |
modes->sRGBCapable = is_srgb; |
} |
} |
} |
} |
*c = NULL; |
return configs; |
} |
__DRIconfig **driConcatConfigs(__DRIconfig **a, |
__DRIconfig **b) |
{ |
__DRIconfig **all; |
int i, j, index; |
if (a == NULL || a[0] == NULL) |
return b; |
else if (b == NULL || b[0] == NULL) |
return a; |
i = 0; |
while (a[i] != NULL) |
i++; |
j = 0; |
while (b[j] != NULL) |
j++; |
all = malloc((i + j + 1) * sizeof *all); |
index = 0; |
for (i = 0; a[i] != NULL; i++) |
all[index++] = a[i]; |
for (j = 0; b[j] != NULL; j++) |
all[index++] = b[j]; |
all[index++] = NULL; |
free(a); |
free(b); |
return all; |
} |
#define __ATTRIB(attrib, field) \ |
{ attrib, offsetof(struct gl_config, field) } |
static const struct { unsigned int attrib, offset; } attribMap[] = { |
__ATTRIB(__DRI_ATTRIB_BUFFER_SIZE, rgbBits), |
__ATTRIB(__DRI_ATTRIB_LEVEL, level), |
__ATTRIB(__DRI_ATTRIB_RED_SIZE, redBits), |
__ATTRIB(__DRI_ATTRIB_GREEN_SIZE, greenBits), |
__ATTRIB(__DRI_ATTRIB_BLUE_SIZE, blueBits), |
__ATTRIB(__DRI_ATTRIB_ALPHA_SIZE, alphaBits), |
__ATTRIB(__DRI_ATTRIB_DEPTH_SIZE, depthBits), |
__ATTRIB(__DRI_ATTRIB_STENCIL_SIZE, stencilBits), |
__ATTRIB(__DRI_ATTRIB_ACCUM_RED_SIZE, accumRedBits), |
__ATTRIB(__DRI_ATTRIB_ACCUM_GREEN_SIZE, accumGreenBits), |
__ATTRIB(__DRI_ATTRIB_ACCUM_BLUE_SIZE, accumBlueBits), |
__ATTRIB(__DRI_ATTRIB_ACCUM_ALPHA_SIZE, accumAlphaBits), |
__ATTRIB(__DRI_ATTRIB_SAMPLE_BUFFERS, sampleBuffers), |
__ATTRIB(__DRI_ATTRIB_SAMPLES, samples), |
__ATTRIB(__DRI_ATTRIB_DOUBLE_BUFFER, doubleBufferMode), |
__ATTRIB(__DRI_ATTRIB_STEREO, stereoMode), |
__ATTRIB(__DRI_ATTRIB_AUX_BUFFERS, numAuxBuffers), |
__ATTRIB(__DRI_ATTRIB_TRANSPARENT_TYPE, transparentPixel), |
__ATTRIB(__DRI_ATTRIB_TRANSPARENT_INDEX_VALUE, transparentPixel), |
__ATTRIB(__DRI_ATTRIB_TRANSPARENT_RED_VALUE, transparentRed), |
__ATTRIB(__DRI_ATTRIB_TRANSPARENT_GREEN_VALUE, transparentGreen), |
__ATTRIB(__DRI_ATTRIB_TRANSPARENT_BLUE_VALUE, transparentBlue), |
__ATTRIB(__DRI_ATTRIB_TRANSPARENT_ALPHA_VALUE, transparentAlpha), |
__ATTRIB(__DRI_ATTRIB_RED_MASK, redMask), |
__ATTRIB(__DRI_ATTRIB_GREEN_MASK, greenMask), |
__ATTRIB(__DRI_ATTRIB_BLUE_MASK, blueMask), |
__ATTRIB(__DRI_ATTRIB_ALPHA_MASK, alphaMask), |
__ATTRIB(__DRI_ATTRIB_MAX_PBUFFER_WIDTH, maxPbufferWidth), |
__ATTRIB(__DRI_ATTRIB_MAX_PBUFFER_HEIGHT, maxPbufferHeight), |
__ATTRIB(__DRI_ATTRIB_MAX_PBUFFER_PIXELS, maxPbufferPixels), |
__ATTRIB(__DRI_ATTRIB_OPTIMAL_PBUFFER_WIDTH, optimalPbufferWidth), |
__ATTRIB(__DRI_ATTRIB_OPTIMAL_PBUFFER_HEIGHT, optimalPbufferHeight), |
__ATTRIB(__DRI_ATTRIB_SWAP_METHOD, swapMethod), |
__ATTRIB(__DRI_ATTRIB_BIND_TO_TEXTURE_RGB, bindToTextureRgb), |
__ATTRIB(__DRI_ATTRIB_BIND_TO_TEXTURE_RGBA, bindToTextureRgba), |
__ATTRIB(__DRI_ATTRIB_BIND_TO_MIPMAP_TEXTURE, bindToMipmapTexture), |
__ATTRIB(__DRI_ATTRIB_BIND_TO_TEXTURE_TARGETS, bindToTextureTargets), |
__ATTRIB(__DRI_ATTRIB_YINVERTED, yInverted), |
__ATTRIB(__DRI_ATTRIB_FRAMEBUFFER_SRGB_CAPABLE, sRGBCapable), |
/* The struct field doesn't matter here, these are handled by the |
* switch in driGetConfigAttribIndex. We need them in the array |
* so the iterator includes them though.*/ |
__ATTRIB(__DRI_ATTRIB_RENDER_TYPE, level), |
__ATTRIB(__DRI_ATTRIB_CONFIG_CAVEAT, level), |
__ATTRIB(__DRI_ATTRIB_SWAP_METHOD, level) |
}; |
/** |
* Return the value of a configuration attribute. The attribute is |
* indicated by the index. |
*/ |
static int |
driGetConfigAttribIndex(const __DRIconfig *config, |
unsigned int index, unsigned int *value) |
{ |
switch (attribMap[index].attrib) { |
case __DRI_ATTRIB_RENDER_TYPE: |
/* no support for color index mode */ |
*value = __DRI_ATTRIB_RGBA_BIT; |
break; |
case __DRI_ATTRIB_CONFIG_CAVEAT: |
if (config->modes.visualRating == GLX_NON_CONFORMANT_CONFIG) |
*value = __DRI_ATTRIB_NON_CONFORMANT_CONFIG; |
else if (config->modes.visualRating == GLX_SLOW_CONFIG) |
*value = __DRI_ATTRIB_SLOW_BIT; |
else |
*value = 0; |
break; |
case __DRI_ATTRIB_SWAP_METHOD: |
/* XXX no return value??? */ |
break; |
default: |
/* any other int-sized field */ |
*value = *(unsigned int *) |
((char *) &config->modes + attribMap[index].offset); |
break; |
} |
return GL_TRUE; |
} |
/** |
* Get the value of a configuration attribute. |
* \param attrib the attribute (one of the _DRI_ATTRIB_x tokens) |
* \param value returns the attribute's value |
* \return 1 for success, 0 for failure |
*/ |
int |
driGetConfigAttrib(const __DRIconfig *config, |
unsigned int attrib, unsigned int *value) |
{ |
int i; |
for (i = 0; i < ARRAY_SIZE(attribMap); i++) |
if (attribMap[i].attrib == attrib) |
return driGetConfigAttribIndex(config, i, value); |
return GL_FALSE; |
} |
/** |
* Get a configuration attribute name and value, given an index. |
* \param index which field of the __DRIconfig to query |
* \param attrib returns the attribute name (one of the _DRI_ATTRIB_x tokens) |
* \param value returns the attribute's value |
* \return 1 for success, 0 for failure |
*/ |
int |
driIndexConfigAttrib(const __DRIconfig *config, int index, |
unsigned int *attrib, unsigned int *value) |
{ |
if (index >= 0 && index < ARRAY_SIZE(attribMap)) { |
*attrib = attribMap[index].attrib; |
return driGetConfigAttribIndex(config, index, value); |
} |
return GL_FALSE; |
} |
/contrib/sdk/sources/Mesa/src/mesa/drivers/dri/common/utils.h |
---|
0,0 → 1,68 |
/* |
* (C) Copyright IBM Corporation 2002, 2004 |
* All Rights Reserved. |
* |
* 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 |
* on the rights to use, copy, modify, merge, publish, distribute, sub |
* license, and/or sell copies of the Software, and to permit persons to whom |
* the Software is furnished to do so, subject to the following conditions: |
* |
* The above copyright notice and this permission notice (including the next |
* paragraph) shall be included in all copies or substantial portions of the |
* Software. |
* |
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
* FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL |
* VA LINUX SYSTEM, IBM AND/OR THEIR SUPPLIERS 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. |
* |
* Authors: |
* Ian Romanick <idr@us.ibm.com> |
*/ |
#ifndef DRI_DEBUG_H |
#define DRI_DEBUG_H |
#include <GL/gl.h> |
#include <GL/internal/dri_interface.h> |
#include "main/context.h" |
struct dri_debug_control { |
const char * string; |
unsigned flag; |
}; |
extern unsigned driParseDebugString( const char * debug, |
const struct dri_debug_control * control ); |
extern unsigned driGetRendererString( char * buffer, |
const char * hardware_name, GLuint agp_mode ); |
struct __DRIconfigRec { |
struct gl_config modes; |
}; |
extern __DRIconfig ** |
driCreateConfigs(gl_format format, |
const uint8_t * depth_bits, const uint8_t * stencil_bits, |
unsigned num_depth_stencil_bits, |
const GLenum * db_modes, unsigned num_db_modes, |
const uint8_t * msaa_samples, unsigned num_msaa_modes, |
GLboolean enable_accum); |
__DRIconfig **driConcatConfigs(__DRIconfig **a, |
__DRIconfig **b); |
int |
driGetConfigAttrib(const __DRIconfig *config, |
unsigned int attrib, unsigned int *value); |
int |
driIndexConfigAttrib(const __DRIconfig *config, int index, |
unsigned int *attrib, unsigned int *value); |
#endif /* DRI_DEBUG_H */ |
/contrib/sdk/sources/Mesa/src/mesa/drivers/dri/common/xmlconfig.c |
---|
0,0 → 1,1043 |
/* |
* XML DRI client-side driver configuration |
* Copyright (C) 2003 Felix Kuehling |
* |
* Permission is hereby granted, free of charge, to any person obtaining a |
* copy of this software and associated documentation files (the "Software"), |
* to deal in the Software without restriction, including without limitation |
* the rights to use, copy, modify, merge, publish, distribute, sublicense, |
* and/or sell copies of the Software, and to permit persons to whom the |
* Software is furnished to do so, subject to the following conditions: |
* |
* The above copyright notice and this permission notice shall be included |
* in all copies or substantial portions of the Software. |
* |
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS |
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL |
* FELIX KUEHLING, OR ANY OTHER CONTRIBUTORS BE LIABLE FOR ANY CLAIM, |
* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR |
* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE |
* OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
* |
*/ |
/** |
* \file xmlconfig.c |
* \brief Driver-independent client-side part of the XML configuration |
* \author Felix Kuehling |
*/ |
#include "main/glheader.h" |
#include <string.h> |
#include <assert.h> |
#include <expat.h> |
#include <fcntl.h> |
#include <unistd.h> |
#include <errno.h> |
#include "main/imports.h" |
#include "utils.h" |
#include "xmlconfig.h" |
#undef GET_PROGRAM_NAME |
#if (defined(__GNU_LIBRARY__) || defined(__GLIBC__)) && !defined(__UCLIBC__) |
# if !defined(__GLIBC__) || (__GLIBC__ < 2) |
/* These aren't declared in any libc5 header */ |
extern char *program_invocation_name, *program_invocation_short_name; |
# endif |
# define GET_PROGRAM_NAME() program_invocation_short_name |
#elif defined(__FreeBSD__) && (__FreeBSD__ >= 2) |
# include <osreldate.h> |
# if (__FreeBSD_version >= 440000) |
# include <stdlib.h> |
# define GET_PROGRAM_NAME() getprogname() |
# endif |
#elif defined(__NetBSD__) && defined(__NetBSD_Version) && (__NetBSD_Version >= 106000100) |
# include <stdlib.h> |
# define GET_PROGRAM_NAME() getprogname() |
#elif defined(__APPLE__) |
# include <stdlib.h> |
# define GET_PROGRAM_NAME() getprogname() |
#elif defined(__sun) |
/* Solaris has getexecname() which returns the full path - return just |
the basename to match BSD getprogname() */ |
# include <stdlib.h> |
# include <libgen.h> |
static const char *__getProgramName () { |
static const char *progname; |
if (progname == NULL) { |
const char *e = getexecname(); |
if (e != NULL) { |
/* Have to make a copy since getexecname can return a readonly |
string, but basename expects to be able to modify its arg. */ |
char *n = strdup(e); |
if (n != NULL) { |
progname = basename(n); |
} |
} |
} |
return progname; |
} |
# define GET_PROGRAM_NAME() __getProgramName() |
#endif |
#if !defined(GET_PROGRAM_NAME) |
# if defined(__OpenBSD__) || defined(NetBSD) || defined(__UCLIBC__) || defined(ANDROID) |
/* This is a hack. It's said to work on OpenBSD, NetBSD and GNU. |
* Rogelio M.Serrano Jr. reported it's also working with UCLIBC. It's |
* used as a last resort, if there is no documented facility available. */ |
static const char *__getProgramName () { |
extern const char *__progname; |
char * arg = strrchr(__progname, '/'); |
if (arg) |
return arg+1; |
else |
return __progname; |
} |
# define GET_PROGRAM_NAME() __getProgramName() |
# else |
# define GET_PROGRAM_NAME() "" |
# warning "Per application configuration won't work with your OS version." |
# endif |
#endif |
/** \brief Find an option in an option cache with the name as key */ |
static GLuint findOption (const driOptionCache *cache, const char *name) { |
GLuint len = strlen (name); |
GLuint size = 1 << cache->tableSize, mask = size - 1; |
GLuint hash = 0; |
GLuint i, shift; |
/* compute a hash from the variable length name */ |
for (i = 0, shift = 0; i < len; ++i, shift = (shift+8) & 31) |
hash += (GLuint)name[i] << shift; |
hash *= hash; |
hash = (hash >> (16-cache->tableSize/2)) & mask; |
/* this is just the starting point of the linear search for the option */ |
for (i = 0; i < size; ++i, hash = (hash+1) & mask) { |
/* if we hit an empty entry then the option is not defined (yet) */ |
if (cache->info[hash].name == 0) |
break; |
else if (!strcmp (name, cache->info[hash].name)) |
break; |
} |
/* this assertion fails if the hash table is full */ |
assert (i < size); |
return hash; |
} |
/** \brief Count the real number of options in an option cache */ |
static GLuint countOptions (const driOptionCache *cache) { |
GLuint size = 1 << cache->tableSize; |
GLuint i, count = 0; |
for (i = 0; i < size; ++i) |
if (cache->info[i].name) |
count++; |
return count; |
} |
/** \brief Like strdup but using malloc and with error checking. */ |
#define XSTRDUP(dest,source) do { \ |
GLuint len = strlen (source); \ |
if (!(dest = malloc(len+1))) { \ |
fprintf (stderr, "%s: %d: out of memory.\n", __FILE__, __LINE__); \ |
abort(); \ |
} \ |
memcpy (dest, source, len+1); \ |
} while (0) |
static int compare (const void *a, const void *b) { |
return strcmp (*(char *const*)a, *(char *const*)b); |
} |
/** \brief Binary search in a string array. */ |
static GLuint bsearchStr (const XML_Char *name, |
const XML_Char *elems[], GLuint count) { |
const XML_Char **found; |
found = bsearch (&name, elems, count, sizeof (XML_Char *), compare); |
if (found) |
return found - elems; |
else |
return count; |
} |
/** \brief Locale-independent integer parser. |
* |
* Works similar to strtol. Leading space is NOT skipped. The input |
* number may have an optional sign. Radix is specified by base. If |
* base is 0 then decimal is assumed unless the input number is |
* prefixed by 0x or 0X for hexadecimal or 0 for octal. After |
* returning tail points to the first character that is not part of |
* the integer number. If no number was found then tail points to the |
* start of the input string. */ |
static GLint strToI (const XML_Char *string, const XML_Char **tail, int base) { |
GLint radix = base == 0 ? 10 : base; |
GLint result = 0; |
GLint sign = 1; |
GLboolean numberFound = GL_FALSE; |
const XML_Char *start = string; |
assert (radix >= 2 && radix <= 36); |
if (*string == '-') { |
sign = -1; |
string++; |
} else if (*string == '+') |
string++; |
if (base == 0 && *string == '0') { |
numberFound = GL_TRUE; |
if (*(string+1) == 'x' || *(string+1) == 'X') { |
radix = 16; |
string += 2; |
} else { |
radix = 8; |
string++; |
} |
} |
do { |
GLint digit = -1; |
if (radix <= 10) { |
if (*string >= '0' && *string < '0' + radix) |
digit = *string - '0'; |
} else { |
if (*string >= '0' && *string <= '9') |
digit = *string - '0'; |
else if (*string >= 'a' && *string < 'a' + radix - 10) |
digit = *string - 'a' + 10; |
else if (*string >= 'A' && *string < 'A' + radix - 10) |
digit = *string - 'A' + 10; |
} |
if (digit != -1) { |
numberFound = GL_TRUE; |
result = radix*result + digit; |
string++; |
} else |
break; |
} while (GL_TRUE); |
*tail = numberFound ? string : start; |
return sign * result; |
} |
/** \brief Locale-independent floating-point parser. |
* |
* Works similar to strtod. Leading space is NOT skipped. The input |
* number may have an optional sign. '.' is interpreted as decimal |
* point and may occur at most once. Optionally the number may end in |
* [eE]<exponent>, where <exponent> is an integer as recognized by |
* strToI. In that case the result is number * 10^exponent. After |
* returning tail points to the first character that is not part of |
* the floating point number. If no number was found then tail points |
* to the start of the input string. |
* |
* Uses two passes for maximum accuracy. */ |
static GLfloat strToF (const XML_Char *string, const XML_Char **tail) { |
GLint nDigits = 0, pointPos, exponent; |
GLfloat sign = 1.0f, result = 0.0f, scale; |
const XML_Char *start = string, *numStart; |
/* sign */ |
if (*string == '-') { |
sign = -1.0f; |
string++; |
} else if (*string == '+') |
string++; |
/* first pass: determine position of decimal point, number of |
* digits, exponent and the end of the number. */ |
numStart = string; |
while (*string >= '0' && *string <= '9') { |
string++; |
nDigits++; |
} |
pointPos = nDigits; |
if (*string == '.') { |
string++; |
while (*string >= '0' && *string <= '9') { |
string++; |
nDigits++; |
} |
} |
if (nDigits == 0) { |
/* no digits, no number */ |
*tail = start; |
return 0.0f; |
} |
*tail = string; |
if (*string == 'e' || *string == 'E') { |
const XML_Char *expTail; |
exponent = strToI (string+1, &expTail, 10); |
if (expTail == string+1) |
exponent = 0; |
else |
*tail = expTail; |
} else |
exponent = 0; |
string = numStart; |
/* scale of the first digit */ |
scale = sign * (GLfloat)pow (10.0, (GLdouble)(pointPos-1 + exponent)); |
/* second pass: parse digits */ |
do { |
if (*string != '.') { |
assert (*string >= '0' && *string <= '9'); |
result += scale * (GLfloat)(*string - '0'); |
scale *= 0.1f; |
nDigits--; |
} |
string++; |
} while (nDigits > 0); |
return result; |
} |
/** \brief Parse a value of a given type. */ |
static GLboolean parseValue (driOptionValue *v, driOptionType type, |
const XML_Char *string) { |
const XML_Char *tail = NULL; |
/* skip leading white-space */ |
string += strspn (string, " \f\n\r\t\v"); |
switch (type) { |
case DRI_BOOL: |
if (!strcmp (string, "false")) { |
v->_bool = GL_FALSE; |
tail = string + 5; |
} else if (!strcmp (string, "true")) { |
v->_bool = GL_TRUE; |
tail = string + 4; |
} |
else |
return GL_FALSE; |
break; |
case DRI_ENUM: /* enum is just a special integer */ |
case DRI_INT: |
v->_int = strToI (string, &tail, 0); |
break; |
case DRI_FLOAT: |
v->_float = strToF (string, &tail); |
break; |
} |
if (tail == string) |
return GL_FALSE; /* empty string (or containing only white-space) */ |
/* skip trailing white space */ |
if (*tail) |
tail += strspn (tail, " \f\n\r\t\v"); |
if (*tail) |
return GL_FALSE; /* something left over that is not part of value */ |
return GL_TRUE; |
} |
/** \brief Parse a list of ranges of type info->type. */ |
static GLboolean parseRanges (driOptionInfo *info, const XML_Char *string) { |
XML_Char *cp, *range; |
GLuint nRanges, i; |
driOptionRange *ranges; |
XSTRDUP (cp, string); |
/* pass 1: determine the number of ranges (number of commas + 1) */ |
range = cp; |
for (nRanges = 1; *range; ++range) |
if (*range == ',') |
++nRanges; |
if ((ranges = malloc(nRanges*sizeof(driOptionRange))) == NULL) { |
fprintf (stderr, "%s: %d: out of memory.\n", __FILE__, __LINE__); |
abort(); |
} |
/* pass 2: parse all ranges into preallocated array */ |
range = cp; |
for (i = 0; i < nRanges; ++i) { |
XML_Char *end, *sep; |
assert (range); |
end = strchr (range, ','); |
if (end) |
*end = '\0'; |
sep = strchr (range, ':'); |
if (sep) { /* non-empty interval */ |
*sep = '\0'; |
if (!parseValue (&ranges[i].start, info->type, range) || |
!parseValue (&ranges[i].end, info->type, sep+1)) |
break; |
if (info->type == DRI_INT && |
ranges[i].start._int > ranges[i].end._int) |
break; |
if (info->type == DRI_FLOAT && |
ranges[i].start._float > ranges[i].end._float) |
break; |
} else { /* empty interval */ |
if (!parseValue (&ranges[i].start, info->type, range)) |
break; |
ranges[i].end = ranges[i].start; |
} |
if (end) |
range = end+1; |
else |
range = NULL; |
} |
free(cp); |
if (i < nRanges) { |
free(ranges); |
return GL_FALSE; |
} else |
assert (range == NULL); |
info->nRanges = nRanges; |
info->ranges = ranges; |
return GL_TRUE; |
} |
/** \brief Check if a value is in one of info->ranges. */ |
static GLboolean checkValue (const driOptionValue *v, const driOptionInfo *info) { |
GLuint i; |
assert (info->type != DRI_BOOL); /* should be caught by the parser */ |
if (info->nRanges == 0) |
return GL_TRUE; |
switch (info->type) { |
case DRI_ENUM: /* enum is just a special integer */ |
case DRI_INT: |
for (i = 0; i < info->nRanges; ++i) |
if (v->_int >= info->ranges[i].start._int && |
v->_int <= info->ranges[i].end._int) |
return GL_TRUE; |
break; |
case DRI_FLOAT: |
for (i = 0; i < info->nRanges; ++i) |
if (v->_float >= info->ranges[i].start._float && |
v->_float <= info->ranges[i].end._float) |
return GL_TRUE; |
break; |
default: |
assert (0); /* should never happen */ |
} |
return GL_FALSE; |
} |
/** |
* Print message to \c stderr if the \c LIBGL_DEBUG environment variable |
* is set. |
* |
* Is called from the drivers. |
* |
* \param f \c printf like format string. |
*/ |
static void |
__driUtilMessage(const char *f, ...) |
{ |
va_list args; |
if (getenv("LIBGL_DEBUG")) { |
fprintf(stderr, "libGL: "); |
va_start(args, f); |
vfprintf(stderr, f, args); |
va_end(args); |
fprintf(stderr, "\n"); |
} |
} |
/** \brief Output a warning message. */ |
#define XML_WARNING1(msg) do {\ |
__driUtilMessage ("Warning in %s line %d, column %d: "msg, data->name, \ |
(int) XML_GetCurrentLineNumber(data->parser), \ |
(int) XML_GetCurrentColumnNumber(data->parser)); \ |
} while (0) |
#define XML_WARNING(msg,args...) do { \ |
__driUtilMessage ("Warning in %s line %d, column %d: "msg, data->name, \ |
(int) XML_GetCurrentLineNumber(data->parser), \ |
(int) XML_GetCurrentColumnNumber(data->parser), \ |
args); \ |
} while (0) |
/** \brief Output an error message. */ |
#define XML_ERROR1(msg) do { \ |
__driUtilMessage ("Error in %s line %d, column %d: "msg, data->name, \ |
(int) XML_GetCurrentLineNumber(data->parser), \ |
(int) XML_GetCurrentColumnNumber(data->parser)); \ |
} while (0) |
#define XML_ERROR(msg,args...) do { \ |
__driUtilMessage ("Error in %s line %d, column %d: "msg, data->name, \ |
(int) XML_GetCurrentLineNumber(data->parser), \ |
(int) XML_GetCurrentColumnNumber(data->parser), \ |
args); \ |
} while (0) |
/** \brief Output a fatal error message and abort. */ |
#define XML_FATAL1(msg) do { \ |
fprintf (stderr, "Fatal error in %s line %d, column %d: "msg"\n", \ |
data->name, \ |
(int) XML_GetCurrentLineNumber(data->parser), \ |
(int) XML_GetCurrentColumnNumber(data->parser)); \ |
abort();\ |
} while (0) |
#define XML_FATAL(msg,args...) do { \ |
fprintf (stderr, "Fatal error in %s line %d, column %d: "msg"\n", \ |
data->name, \ |
(int) XML_GetCurrentLineNumber(data->parser), \ |
(int) XML_GetCurrentColumnNumber(data->parser), \ |
args); \ |
abort();\ |
} while (0) |
/** \brief Parser context for __driConfigOptions. */ |
struct OptInfoData { |
const char *name; |
XML_Parser parser; |
driOptionCache *cache; |
GLboolean inDriInfo; |
GLboolean inSection; |
GLboolean inDesc; |
GLboolean inOption; |
GLboolean inEnum; |
int curOption; |
}; |
/** \brief Elements in __driConfigOptions. */ |
enum OptInfoElem { |
OI_DESCRIPTION = 0, OI_DRIINFO, OI_ENUM, OI_OPTION, OI_SECTION, OI_COUNT |
}; |
static const XML_Char *OptInfoElems[] = { |
"description", "driinfo", "enum", "option", "section" |
}; |
/** \brief Parse attributes of an enum element. |
* |
* We're not actually interested in the data. Just make sure this is ok |
* for external configuration tools. |
*/ |
static void parseEnumAttr (struct OptInfoData *data, const XML_Char **attr) { |
GLuint i; |
const XML_Char *value = NULL, *text = NULL; |
driOptionValue v; |
GLuint opt = data->curOption; |
for (i = 0; attr[i]; i += 2) { |
if (!strcmp (attr[i], "value")) value = attr[i+1]; |
else if (!strcmp (attr[i], "text")) text = attr[i+1]; |
else XML_FATAL("illegal enum attribute: %s.", attr[i]); |
} |
if (!value) XML_FATAL1 ("value attribute missing in enum."); |
if (!text) XML_FATAL1 ("text attribute missing in enum."); |
if (!parseValue (&v, data->cache->info[opt].type, value)) |
XML_FATAL ("illegal enum value: %s.", value); |
if (!checkValue (&v, &data->cache->info[opt])) |
XML_FATAL ("enum value out of valid range: %s.", value); |
} |
/** \brief Parse attributes of a description element. |
* |
* We're not actually interested in the data. Just make sure this is ok |
* for external configuration tools. |
*/ |
static void parseDescAttr (struct OptInfoData *data, const XML_Char **attr) { |
GLuint i; |
const XML_Char *lang = NULL, *text = NULL; |
for (i = 0; attr[i]; i += 2) { |
if (!strcmp (attr[i], "lang")) lang = attr[i+1]; |
else if (!strcmp (attr[i], "text")) text = attr[i+1]; |
else XML_FATAL("illegal description attribute: %s.", attr[i]); |
} |
if (!lang) XML_FATAL1 ("lang attribute missing in description."); |
if (!text) XML_FATAL1 ("text attribute missing in description."); |
} |
/** \brief Parse attributes of an option element. */ |
static void parseOptInfoAttr (struct OptInfoData *data, const XML_Char **attr) { |
enum OptAttr {OA_DEFAULT = 0, OA_NAME, OA_TYPE, OA_VALID, OA_COUNT}; |
static const XML_Char *optAttr[] = {"default", "name", "type", "valid"}; |
const XML_Char *attrVal[OA_COUNT] = {NULL, NULL, NULL, NULL}; |
const char *defaultVal; |
driOptionCache *cache = data->cache; |
GLuint opt, i; |
for (i = 0; attr[i]; i += 2) { |
GLuint attrName = bsearchStr (attr[i], optAttr, OA_COUNT); |
if (attrName >= OA_COUNT) |
XML_FATAL ("illegal option attribute: %s", attr[i]); |
attrVal[attrName] = attr[i+1]; |
} |
if (!attrVal[OA_NAME]) XML_FATAL1 ("name attribute missing in option."); |
if (!attrVal[OA_TYPE]) XML_FATAL1 ("type attribute missing in option."); |
if (!attrVal[OA_DEFAULT]) XML_FATAL1 ("default attribute missing in option."); |
opt = findOption (cache, attrVal[OA_NAME]); |
if (cache->info[opt].name) |
XML_FATAL ("option %s redefined.", attrVal[OA_NAME]); |
data->curOption = opt; |
XSTRDUP (cache->info[opt].name, attrVal[OA_NAME]); |
if (!strcmp (attrVal[OA_TYPE], "bool")) |
cache->info[opt].type = DRI_BOOL; |
else if (!strcmp (attrVal[OA_TYPE], "enum")) |
cache->info[opt].type = DRI_ENUM; |
else if (!strcmp (attrVal[OA_TYPE], "int")) |
cache->info[opt].type = DRI_INT; |
else if (!strcmp (attrVal[OA_TYPE], "float")) |
cache->info[opt].type = DRI_FLOAT; |
else |
XML_FATAL ("illegal type in option: %s.", attrVal[OA_TYPE]); |
defaultVal = getenv (cache->info[opt].name); |
if (defaultVal != NULL) { |
/* don't use XML_WARNING, we want the user to see this! */ |
fprintf (stderr, |
"ATTENTION: default value of option %s overridden by environment.\n", |
cache->info[opt].name); |
} else |
defaultVal = attrVal[OA_DEFAULT]; |
if (!parseValue (&cache->values[opt], cache->info[opt].type, defaultVal)) |
XML_FATAL ("illegal default value for %s: %s.", cache->info[opt].name, defaultVal); |
if (attrVal[OA_VALID]) { |
if (cache->info[opt].type == DRI_BOOL) |
XML_FATAL1 ("boolean option with valid attribute."); |
if (!parseRanges (&cache->info[opt], attrVal[OA_VALID])) |
XML_FATAL ("illegal valid attribute: %s.", attrVal[OA_VALID]); |
if (!checkValue (&cache->values[opt], &cache->info[opt])) |
XML_FATAL ("default value out of valid range '%s': %s.", |
attrVal[OA_VALID], defaultVal); |
} else if (cache->info[opt].type == DRI_ENUM) { |
XML_FATAL1 ("valid attribute missing in option (mandatory for enums)."); |
} else { |
cache->info[opt].nRanges = 0; |
cache->info[opt].ranges = NULL; |
} |
} |
/** \brief Handler for start element events. */ |
static void optInfoStartElem (void *userData, const XML_Char *name, |
const XML_Char **attr) { |
struct OptInfoData *data = (struct OptInfoData *)userData; |
enum OptInfoElem elem = bsearchStr (name, OptInfoElems, OI_COUNT); |
switch (elem) { |
case OI_DRIINFO: |
if (data->inDriInfo) |
XML_FATAL1 ("nested <driinfo> elements."); |
if (attr[0]) |
XML_FATAL1 ("attributes specified on <driinfo> element."); |
data->inDriInfo = GL_TRUE; |
break; |
case OI_SECTION: |
if (!data->inDriInfo) |
XML_FATAL1 ("<section> must be inside <driinfo>."); |
if (data->inSection) |
XML_FATAL1 ("nested <section> elements."); |
if (attr[0]) |
XML_FATAL1 ("attributes specified on <section> element."); |
data->inSection = GL_TRUE; |
break; |
case OI_DESCRIPTION: |
if (!data->inSection && !data->inOption) |
XML_FATAL1 ("<description> must be inside <description> or <option."); |
if (data->inDesc) |
XML_FATAL1 ("nested <description> elements."); |
data->inDesc = GL_TRUE; |
parseDescAttr (data, attr); |
break; |
case OI_OPTION: |
if (!data->inSection) |
XML_FATAL1 ("<option> must be inside <section>."); |
if (data->inDesc) |
XML_FATAL1 ("<option> nested in <description> element."); |
if (data->inOption) |
XML_FATAL1 ("nested <option> elements."); |
data->inOption = GL_TRUE; |
parseOptInfoAttr (data, attr); |
break; |
case OI_ENUM: |
if (!(data->inOption && data->inDesc)) |
XML_FATAL1 ("<enum> must be inside <option> and <description>."); |
if (data->inEnum) |
XML_FATAL1 ("nested <enum> elements."); |
data->inEnum = GL_TRUE; |
parseEnumAttr (data, attr); |
break; |
default: |
XML_FATAL ("unknown element: %s.", name); |
} |
} |
/** \brief Handler for end element events. */ |
static void optInfoEndElem (void *userData, const XML_Char *name) { |
struct OptInfoData *data = (struct OptInfoData *)userData; |
enum OptInfoElem elem = bsearchStr (name, OptInfoElems, OI_COUNT); |
switch (elem) { |
case OI_DRIINFO: |
data->inDriInfo = GL_FALSE; |
break; |
case OI_SECTION: |
data->inSection = GL_FALSE; |
break; |
case OI_DESCRIPTION: |
data->inDesc = GL_FALSE; |
break; |
case OI_OPTION: |
data->inOption = GL_FALSE; |
break; |
case OI_ENUM: |
data->inEnum = GL_FALSE; |
break; |
default: |
assert (0); /* should have been caught by StartElem */ |
} |
} |
void driParseOptionInfo (driOptionCache *info, |
const char *configOptions, GLuint nConfigOptions) { |
XML_Parser p; |
int status; |
struct OptInfoData userData; |
struct OptInfoData *data = &userData; |
GLuint realNoptions; |
/* determine hash table size and allocate memory: |
* 3/2 of the number of options, rounded up, so there remains always |
* at least one free entry. This is needed for detecting undefined |
* options in configuration files without getting a hash table overflow. |
* Round this up to a power of two. */ |
GLuint minSize = (nConfigOptions*3 + 1) / 2; |
GLuint size, log2size; |
for (size = 1, log2size = 0; size < minSize; size <<= 1, ++log2size); |
info->tableSize = log2size; |
info->info = calloc(size, sizeof (driOptionInfo)); |
info->values = calloc(size, sizeof (driOptionValue)); |
if (info->info == NULL || info->values == NULL) { |
fprintf (stderr, "%s: %d: out of memory.\n", __FILE__, __LINE__); |
abort(); |
} |
p = XML_ParserCreate ("UTF-8"); /* always UTF-8 */ |
XML_SetElementHandler (p, optInfoStartElem, optInfoEndElem); |
XML_SetUserData (p, data); |
userData.name = "__driConfigOptions"; |
userData.parser = p; |
userData.cache = info; |
userData.inDriInfo = GL_FALSE; |
userData.inSection = GL_FALSE; |
userData.inDesc = GL_FALSE; |
userData.inOption = GL_FALSE; |
userData.inEnum = GL_FALSE; |
userData.curOption = -1; |
status = XML_Parse (p, configOptions, strlen (configOptions), 1); |
if (!status) |
XML_FATAL ("%s.", XML_ErrorString(XML_GetErrorCode(p))); |
XML_ParserFree (p); |
/* Check if the actual number of options matches nConfigOptions. |
* A mismatch is not fatal (a hash table overflow would be) but we |
* want the driver developer's attention anyway. */ |
realNoptions = countOptions (info); |
if (realNoptions != nConfigOptions) { |
fprintf (stderr, |
"Error: nConfigOptions (%u) does not match the actual number of options in\n" |
" __driConfigOptions (%u).\n", |
nConfigOptions, realNoptions); |
} |
} |
/** \brief Parser context for configuration files. */ |
struct OptConfData { |
const char *name; |
XML_Parser parser; |
driOptionCache *cache; |
GLint screenNum; |
const char *driverName, *execName; |
GLuint ignoringDevice; |
GLuint ignoringApp; |
GLuint inDriConf; |
GLuint inDevice; |
GLuint inApp; |
GLuint inOption; |
}; |
/** \brief Elements in configuration files. */ |
enum OptConfElem { |
OC_APPLICATION = 0, OC_DEVICE, OC_DRICONF, OC_OPTION, OC_COUNT |
}; |
static const XML_Char *OptConfElems[] = { |
"application", "device", "driconf", "option" |
}; |
/** \brief Parse attributes of a device element. */ |
static void parseDeviceAttr (struct OptConfData *data, const XML_Char **attr) { |
GLuint i; |
const XML_Char *driver = NULL, *screen = NULL; |
for (i = 0; attr[i]; i += 2) { |
if (!strcmp (attr[i], "driver")) driver = attr[i+1]; |
else if (!strcmp (attr[i], "screen")) screen = attr[i+1]; |
else XML_WARNING("unknown device attribute: %s.", attr[i]); |
} |
if (driver && strcmp (driver, data->driverName)) |
data->ignoringDevice = data->inDevice; |
else if (screen) { |
driOptionValue screenNum; |
if (!parseValue (&screenNum, DRI_INT, screen)) |
XML_WARNING("illegal screen number: %s.", screen); |
else if (screenNum._int != data->screenNum) |
data->ignoringDevice = data->inDevice; |
} |
} |
/** \brief Parse attributes of an application element. */ |
static void parseAppAttr (struct OptConfData *data, const XML_Char **attr) { |
GLuint i; |
const XML_Char *exec = NULL; |
for (i = 0; attr[i]; i += 2) { |
if (!strcmp (attr[i], "name")) /* not needed here */; |
else if (!strcmp (attr[i], "executable")) exec = attr[i+1]; |
else XML_WARNING("unknown application attribute: %s.", attr[i]); |
} |
if (exec && strcmp (exec, data->execName)) |
data->ignoringApp = data->inApp; |
} |
/** \brief Parse attributes of an option element. */ |
static void parseOptConfAttr (struct OptConfData *data, const XML_Char **attr) { |
GLuint i; |
const XML_Char *name = NULL, *value = NULL; |
for (i = 0; attr[i]; i += 2) { |
if (!strcmp (attr[i], "name")) name = attr[i+1]; |
else if (!strcmp (attr[i], "value")) value = attr[i+1]; |
else XML_WARNING("unknown option attribute: %s.", attr[i]); |
} |
if (!name) XML_WARNING1 ("name attribute missing in option."); |
if (!value) XML_WARNING1 ("value attribute missing in option."); |
if (name && value) { |
driOptionCache *cache = data->cache; |
GLuint opt = findOption (cache, name); |
if (cache->info[opt].name == NULL) |
/* don't use XML_WARNING, drirc defines options for all drivers, |
* but not all drivers support them */ |
return; |
else if (getenv (cache->info[opt].name)) |
/* don't use XML_WARNING, we want the user to see this! */ |
fprintf (stderr, "ATTENTION: option value of option %s ignored.\n", |
cache->info[opt].name); |
else if (!parseValue (&cache->values[opt], cache->info[opt].type, value)) |
XML_WARNING ("illegal option value: %s.", value); |
} |
} |
/** \brief Handler for start element events. */ |
static void optConfStartElem (void *userData, const XML_Char *name, |
const XML_Char **attr) { |
struct OptConfData *data = (struct OptConfData *)userData; |
enum OptConfElem elem = bsearchStr (name, OptConfElems, OC_COUNT); |
switch (elem) { |
case OC_DRICONF: |
if (data->inDriConf) |
XML_WARNING1 ("nested <driconf> elements."); |
if (attr[0]) |
XML_WARNING1 ("attributes specified on <driconf> element."); |
data->inDriConf++; |
break; |
case OC_DEVICE: |
if (!data->inDriConf) |
XML_WARNING1 ("<device> should be inside <driconf>."); |
if (data->inDevice) |
XML_WARNING1 ("nested <device> elements."); |
data->inDevice++; |
if (!data->ignoringDevice && !data->ignoringApp) |
parseDeviceAttr (data, attr); |
break; |
case OC_APPLICATION: |
if (!data->inDevice) |
XML_WARNING1 ("<application> should be inside <device>."); |
if (data->inApp) |
XML_WARNING1 ("nested <application> elements."); |
data->inApp++; |
if (!data->ignoringDevice && !data->ignoringApp) |
parseAppAttr (data, attr); |
break; |
case OC_OPTION: |
if (!data->inApp) |
XML_WARNING1 ("<option> should be inside <application>."); |
if (data->inOption) |
XML_WARNING1 ("nested <option> elements."); |
data->inOption++; |
if (!data->ignoringDevice && !data->ignoringApp) |
parseOptConfAttr (data, attr); |
break; |
default: |
XML_WARNING ("unknown element: %s.", name); |
} |
} |
/** \brief Handler for end element events. */ |
static void optConfEndElem (void *userData, const XML_Char *name) { |
struct OptConfData *data = (struct OptConfData *)userData; |
enum OptConfElem elem = bsearchStr (name, OptConfElems, OC_COUNT); |
switch (elem) { |
case OC_DRICONF: |
data->inDriConf--; |
break; |
case OC_DEVICE: |
if (data->inDevice-- == data->ignoringDevice) |
data->ignoringDevice = 0; |
break; |
case OC_APPLICATION: |
if (data->inApp-- == data->ignoringApp) |
data->ignoringApp = 0; |
break; |
case OC_OPTION: |
data->inOption--; |
break; |
default: |
/* unknown element, warning was produced on start tag */; |
} |
} |
/** \brief Initialize an option cache based on info */ |
static void initOptionCache (driOptionCache *cache, const driOptionCache *info) { |
cache->info = info->info; |
cache->tableSize = info->tableSize; |
cache->values = malloc((1<<info->tableSize) * sizeof (driOptionValue)); |
if (cache->values == NULL) { |
fprintf (stderr, "%s: %d: out of memory.\n", __FILE__, __LINE__); |
abort(); |
} |
memcpy (cache->values, info->values, |
(1<<info->tableSize) * sizeof (driOptionValue)); |
} |
/** \brief Parse the named configuration file */ |
static void parseOneConfigFile (XML_Parser p) { |
#define BUF_SIZE 0x1000 |
struct OptConfData *data = (struct OptConfData *)XML_GetUserData (p); |
int status; |
int fd; |
if ((fd = open (data->name, O_RDONLY)) == -1) { |
__driUtilMessage ("Can't open configuration file %s: %s.", |
data->name, strerror (errno)); |
return; |
} |
while (1) { |
int bytesRead; |
void *buffer = XML_GetBuffer (p, BUF_SIZE); |
if (!buffer) { |
__driUtilMessage ("Can't allocate parser buffer."); |
break; |
} |
bytesRead = read (fd, buffer, BUF_SIZE); |
if (bytesRead == -1) { |
__driUtilMessage ("Error reading from configuration file %s: %s.", |
data->name, strerror (errno)); |
break; |
} |
status = XML_ParseBuffer (p, bytesRead, bytesRead == 0); |
if (!status) { |
XML_ERROR ("%s.", XML_ErrorString(XML_GetErrorCode(p))); |
break; |
} |
if (bytesRead == 0) |
break; |
} |
close (fd); |
#undef BUF_SIZE |
} |
void driParseConfigFiles (driOptionCache *cache, const driOptionCache *info, |
GLint screenNum, const char *driverName) { |
char *filenames[2] = {"/etc/drirc", NULL}; |
char *home; |
GLuint i; |
struct OptConfData userData; |
initOptionCache (cache, info); |
userData.cache = cache; |
userData.screenNum = screenNum; |
userData.driverName = driverName; |
userData.execName = GET_PROGRAM_NAME(); |
if ((home = getenv ("HOME"))) { |
GLuint len = strlen (home); |
filenames[1] = malloc(len + 7+1); |
if (filenames[1] == NULL) |
__driUtilMessage ("Can't allocate memory for %s/.drirc.", home); |
else { |
memcpy (filenames[1], home, len); |
memcpy (filenames[1] + len, "/.drirc", 7+1); |
} |
} |
for (i = 0; i < 2; ++i) { |
XML_Parser p; |
if (filenames[i] == NULL) |
continue; |
p = XML_ParserCreate (NULL); /* use encoding specified by file */ |
XML_SetElementHandler (p, optConfStartElem, optConfEndElem); |
XML_SetUserData (p, &userData); |
userData.parser = p; |
userData.name = filenames[i]; |
userData.ignoringDevice = 0; |
userData.ignoringApp = 0; |
userData.inDriConf = 0; |
userData.inDevice = 0; |
userData.inApp = 0; |
userData.inOption = 0; |
parseOneConfigFile (p); |
XML_ParserFree (p); |
} |
free(filenames[1]); |
} |
void driDestroyOptionInfo (driOptionCache *info) { |
driDestroyOptionCache (info); |
if (info->info) { |
GLuint i, size = 1 << info->tableSize; |
for (i = 0; i < size; ++i) { |
if (info->info[i].name) { |
free(info->info[i].name); |
free(info->info[i].ranges); |
} |
} |
free(info->info); |
} |
} |
void driDestroyOptionCache (driOptionCache *cache) { |
free(cache->values); |
} |
GLboolean driCheckOption (const driOptionCache *cache, const char *name, |
driOptionType type) { |
GLuint i = findOption (cache, name); |
return cache->info[i].name != NULL && cache->info[i].type == type; |
} |
GLboolean driQueryOptionb (const driOptionCache *cache, const char *name) { |
GLuint i = findOption (cache, name); |
/* make sure the option is defined and has the correct type */ |
assert (cache->info[i].name != NULL); |
assert (cache->info[i].type == DRI_BOOL); |
return cache->values[i]._bool; |
} |
GLint driQueryOptioni (const driOptionCache *cache, const char *name) { |
GLuint i = findOption (cache, name); |
/* make sure the option is defined and has the correct type */ |
assert (cache->info[i].name != NULL); |
assert (cache->info[i].type == DRI_INT || cache->info[i].type == DRI_ENUM); |
return cache->values[i]._int; |
} |
GLfloat driQueryOptionf (const driOptionCache *cache, const char *name) { |
GLuint i = findOption (cache, name); |
/* make sure the option is defined and has the correct type */ |
assert (cache->info[i].name != NULL); |
assert (cache->info[i].type == DRI_FLOAT); |
return cache->values[i]._float; |
} |
/contrib/sdk/sources/Mesa/src/mesa/drivers/dri/common/xmlconfig.h |
---|
0,0 → 1,124 |
/* |
* XML DRI client-side driver configuration |
* Copyright (C) 2003 Felix Kuehling |
* |
* Permission is hereby granted, free of charge, to any person obtaining a |
* copy of this software and associated documentation files (the "Software"), |
* to deal in the Software without restriction, including without limitation |
* the rights to use, copy, modify, merge, publish, distribute, sublicense, |
* and/or sell copies of the Software, and to permit persons to whom the |
* Software is furnished to do so, subject to the following conditions: |
* |
* The above copyright notice and this permission notice shall be included |
* in all copies or substantial portions of the Software. |
* |
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS |
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL |
* FELIX KUEHLING, OR ANY OTHER CONTRIBUTORS BE LIABLE FOR ANY CLAIM, |
* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR |
* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE |
* OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
* |
*/ |
/** |
* \file xmlconfig.h |
* \brief Driver-independent client-side part of the XML configuration |
* \author Felix Kuehling |
*/ |
#ifndef __XMLCONFIG_H |
#define __XMLCONFIG_H |
/** \brief Option data types */ |
typedef enum driOptionType { |
DRI_BOOL, DRI_ENUM, DRI_INT, DRI_FLOAT |
} driOptionType; |
/** \brief Option value */ |
typedef union driOptionValue { |
GLboolean _bool; /**< \brief Boolean */ |
GLint _int; /**< \brief Integer or Enum */ |
GLfloat _float; /**< \brief Floating-point */ |
} driOptionValue; |
/** \brief Single range of valid values |
* |
* For empty ranges (a single value) start == end */ |
typedef struct driOptionRange { |
driOptionValue start; /**< \brief Start */ |
driOptionValue end; /**< \brief End */ |
} driOptionRange; |
/** \brief Information about an option */ |
typedef struct driOptionInfo { |
char *name; /**< \brief Name */ |
driOptionType type; /**< \brief Type */ |
driOptionRange *ranges; /**< \brief Array of ranges */ |
GLuint nRanges; /**< \brief Number of ranges */ |
} driOptionInfo; |
/** \brief Option cache |
* |
* \li One in <driver>Screen caching option info and the default values |
* \li One in each <driver>Context with the actual values for that context */ |
typedef struct driOptionCache { |
driOptionInfo *info; |
/**< \brief Array of option infos |
* |
* Points to the same array in the screen and all contexts */ |
driOptionValue *values; |
/**< \brief Array of option values |
* |
* \li Default values in screen |
* \li Actual values in contexts |
*/ |
GLuint tableSize; |
/**< \brief Size of the arrays |
* |
* Depending on the hash function this may differ from __driNConfigOptions. |
* In the current implementation it's not actually a size but log2(size). |
* The value is the same in the screen and all contexts. */ |
} driOptionCache; |
/** \brief Parse XML option info from configOptions |
* |
* To be called in <driver>CreateScreen |
* |
* \param info pointer to a driOptionCache that will store the option info |
* \param configOptions XML document describing available configuration opts |
* \param nConfigOptions number of options, used to choose a hash table size |
* |
* For the option information to be available to external configuration tools |
* it must be a public symbol __driConfigOptions. It is also passed as a |
* parameter to driParseOptionInfo in order to avoid driver-independent code |
* depending on symbols in driver-specific code. */ |
void driParseOptionInfo (driOptionCache *info, |
const char *configOptions, GLuint nConfigOptions); |
/** \brief Initialize option cache from info and parse configuration files |
* |
* To be called in <driver>CreateContext. screenNum and driverName select |
* device sections. */ |
void driParseConfigFiles (driOptionCache *cache, const driOptionCache *info, |
GLint screenNum, const char *driverName); |
/** \brief Destroy option info |
* |
* To be called in <driver>DestroyScreen */ |
void driDestroyOptionInfo (driOptionCache *info); |
/** \brief Destroy option cache |
* |
* To be called in <driver>DestroyContext */ |
void driDestroyOptionCache (driOptionCache *cache); |
/** \brief Check if there exists a certain option */ |
GLboolean driCheckOption (const driOptionCache *cache, const char *name, |
driOptionType type); |
/** \brief Query a boolean option value */ |
GLboolean driQueryOptionb (const driOptionCache *cache, const char *name); |
/** \brief Query an integer option value */ |
GLint driQueryOptioni (const driOptionCache *cache, const char *name); |
/** \brief Query a floating-point option value */ |
GLfloat driQueryOptionf (const driOptionCache *cache, const char *name); |
#endif |
/contrib/sdk/sources/Mesa/src/mesa/drivers/dri/common/xmlpool/Makefile.am |
---|
0,0 → 1,94 |
# 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 es.po nl.po fr.po sv.po |
# |
# Don't change anything below, unless you know what you're doing. |
# |
LANGS=$(POS:%.po=%) |
MOS=$(POS:%.po=%/LC_MESSAGES/options.mo) |
POT=xmlpool.pot |
.PHONY: all clean pot po mo |
BUILT_SOURCES = options.h |
# All generated files are cleaned up. |
clean: |
-rm -f $(POT) options.h *~ |
-rm -rf $(LANGS) |
# Default target 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. |
%/LC_MESSAGES/options.mo: %.po |
@mo="$@"; \ |
lang=$${mo%%/*}; \ |
echo "Updating ($$lang) $@ from $?."; \ |
mkdir -p $$lang/LC_MESSAGES; \ |
msgfmt -o $@ $? |
# Use this target to create or update .po files with new messages in |
# driconf.py. |
po: $(POT) |
@for po in $(POS); do \ |
if [ -f $$po ]; then \ |
echo "Merging new strings from $(POT) into $@."; \ |
mv $$po $$po~; \ |
msgmerge -o $$po $$po~ $(POT); \ |
else \ |
echo "Initializing $$po from $(POT)."; \ |
msginit -i $(POT) -o $$po~ --locale=$*; \ |
sed -e 's/charset=.*\\n/charset=UTF-8\\n/' $$po~ > $$po; \ |
fi \ |
done |
pot: $(POT) |
# Extract message catalog from driconf.py. |
$(POT): t_options.h |
xgettext -L C --from-code utf-8 -o $(POT) t_options.h |
/contrib/sdk/sources/Mesa/src/mesa/drivers/dri/common/xmlpool/Makefile.in |
---|
0,0 → 1,690 |
# Makefile.in generated by automake 1.14 from Makefile.am. |
# @configure_input@ |
# Copyright (C) 1994-2013 Free Software Foundation, Inc. |
# This Makefile.in is free software; the Free Software Foundation |
# gives unlimited permission to copy and/or distribute it, |
# with or without modifications, as long as this notice is preserved. |
# This program is distributed in the hope that it will be useful, |
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without |
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A |
# PARTICULAR PURPOSE. |
@SET_MAKE@ |
# 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 |
VPATH = @srcdir@ |
am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' |
am__make_running_with_option = \ |
case $${target_option-} in \ |
?) ;; \ |
*) echo "am__make_running_with_option: internal error: invalid" \ |
"target option '$${target_option-}' specified" >&2; \ |
exit 1;; \ |
esac; \ |
has_opt=no; \ |
sane_makeflags=$$MAKEFLAGS; \ |
if $(am__is_gnu_make); then \ |
sane_makeflags=$$MFLAGS; \ |
else \ |
case $$MAKEFLAGS in \ |
*\\[\ \ ]*) \ |
bs=\\; \ |
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ |
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ |
esac; \ |
fi; \ |
skip_next=no; \ |
strip_trailopt () \ |
{ \ |
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ |
}; \ |
for flg in $$sane_makeflags; do \ |
test $$skip_next = yes && { skip_next=no; continue; }; \ |
case $$flg in \ |
*=*|--*) continue;; \ |
-*I) strip_trailopt 'I'; skip_next=yes;; \ |
-*I?*) strip_trailopt 'I';; \ |
-*O) strip_trailopt 'O'; skip_next=yes;; \ |
-*O?*) strip_trailopt 'O';; \ |
-*l) strip_trailopt 'l'; skip_next=yes;; \ |
-*l?*) strip_trailopt 'l';; \ |
-[dEDm]) skip_next=yes;; \ |
-[JT]) skip_next=yes;; \ |
esac; \ |
case $$flg in \ |
*$$target_option*) has_opt=yes; break;; \ |
esac; \ |
done; \ |
test $$has_opt = yes |
am__make_dryrun = (target_option=n; $(am__make_running_with_option)) |
am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) |
pkgdatadir = $(datadir)/@PACKAGE@ |
pkgincludedir = $(includedir)/@PACKAGE@ |
pkglibdir = $(libdir)/@PACKAGE@ |
pkglibexecdir = $(libexecdir)/@PACKAGE@ |
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd |
install_sh_DATA = $(install_sh) -c -m 644 |
install_sh_PROGRAM = $(install_sh) -c |
install_sh_SCRIPT = $(install_sh) -c |
INSTALL_HEADER = $(INSTALL_DATA) |
transform = $(program_transform_name) |
NORMAL_INSTALL = : |
PRE_INSTALL = : |
POST_INSTALL = : |
NORMAL_UNINSTALL = : |
PRE_UNINSTALL = : |
POST_UNINSTALL = : |
build_triplet = @build@ |
host_triplet = @host@ |
target_triplet = @target@ |
subdir = src/mesa/drivers/dri/common/xmlpool |
DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am |
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 |
am__aclocal_m4_deps = $(top_srcdir)/m4/ax_prog_bison.m4 \ |
$(top_srcdir)/m4/ax_prog_cc_for_build.m4 \ |
$(top_srcdir)/m4/ax_prog_cxx_for_build.m4 \ |
$(top_srcdir)/m4/ax_prog_flex.m4 \ |
$(top_srcdir)/m4/ax_pthread.m4 \ |
$(top_srcdir)/m4/ax_python_module.m4 \ |
$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ |
$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ |
$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac |
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ |
$(ACLOCAL_M4) |
mkinstalldirs = $(install_sh) -d |
CONFIG_CLEAN_FILES = |
CONFIG_CLEAN_VPATH_FILES = |
AM_V_P = $(am__v_P_@AM_V@) |
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) |
am__v_P_0 = false |
am__v_P_1 = : |
AM_V_GEN = $(am__v_GEN_@AM_V@) |
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) |
am__v_GEN_0 = @echo " GEN " $@; |
am__v_GEN_1 = |
AM_V_at = $(am__v_at_@AM_V@) |
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) |
am__v_at_0 = @ |
am__v_at_1 = |
SOURCES = |
DIST_SOURCES = |
am__can_run_installinfo = \ |
case $$AM_UPDATE_INFO_DIR in \ |
n|no|NO) false;; \ |
*) (install-info --version) >/dev/null 2>&1;; \ |
esac |
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) |
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) |
ACLOCAL = @ACLOCAL@ |
AMTAR = @AMTAR@ |
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ |
AR = @AR@ |
AUTOCONF = @AUTOCONF@ |
AUTOHEADER = @AUTOHEADER@ |
AUTOMAKE = @AUTOMAKE@ |
AWK = @AWK@ |
BUILD_EXEEXT = @BUILD_EXEEXT@ |
BUILD_OBJEXT = @BUILD_OBJEXT@ |
CC = @CC@ |
CCAS = @CCAS@ |
CCASDEPMODE = @CCASDEPMODE@ |
CCASFLAGS = @CCASFLAGS@ |
CCDEPMODE = @CCDEPMODE@ |
CC_FOR_BUILD = @CC_FOR_BUILD@ |
CFLAGS = @CFLAGS@ |
CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@ |
CLANG_RESOURCE_DIR = @CLANG_RESOURCE_DIR@ |
CLOCK_LIB = @CLOCK_LIB@ |
CPP = @CPP@ |
CPPFLAGS = @CPPFLAGS@ |
CPPFLAGS_FOR_BUILD = @CPPFLAGS_FOR_BUILD@ |
CPP_FOR_BUILD = @CPP_FOR_BUILD@ |
CXX = @CXX@ |
CXXCPP = @CXXCPP@ |
CXXCPPFLAGS_FOR_BUILD = @CXXCPPFLAGS_FOR_BUILD@ |
CXXCPP_FOR_BUILD = @CXXCPP_FOR_BUILD@ |
CXXDEPMODE = @CXXDEPMODE@ |
CXXFLAGS = @CXXFLAGS@ |
CXXFLAGS_FOR_BUILD = @CXXFLAGS_FOR_BUILD@ |
CXX_FOR_BUILD = @CXX_FOR_BUILD@ |
CYGPATH_W = @CYGPATH_W@ |
DEFINES = @DEFINES@ |
DEFINES_FOR_BUILD = @DEFINES_FOR_BUILD@ |
DEFS = @DEFS@ |
DEPDIR = @DEPDIR@ |
DLLTOOL = @DLLTOOL@ |
DLOPEN_LIBS = @DLOPEN_LIBS@ |
DRI2PROTO_CFLAGS = @DRI2PROTO_CFLAGS@ |
DRI2PROTO_LIBS = @DRI2PROTO_LIBS@ |
DRIGL_CFLAGS = @DRIGL_CFLAGS@ |
DRIGL_LIBS = @DRIGL_LIBS@ |
DRI_DRIVER_INSTALL_DIR = @DRI_DRIVER_INSTALL_DIR@ |
DRI_DRIVER_SEARCH_DIR = @DRI_DRIVER_SEARCH_DIR@ |
DRI_LIB_DEPS = @DRI_LIB_DEPS@ |
DRI_PC_REQ_PRIV = @DRI_PC_REQ_PRIV@ |
DSYMUTIL = @DSYMUTIL@ |
DUMPBIN = @DUMPBIN@ |
ECHO_C = @ECHO_C@ |
ECHO_N = @ECHO_N@ |
ECHO_T = @ECHO_T@ |
EGL_CFLAGS = @EGL_CFLAGS@ |
EGL_CLIENT_APIS = @EGL_CLIENT_APIS@ |
EGL_DRIVER_INSTALL_DIR = @EGL_DRIVER_INSTALL_DIR@ |
EGL_LIB_DEPS = @EGL_LIB_DEPS@ |
EGL_LIB_GLOB = @EGL_LIB_GLOB@ |
EGL_LIB_NAME = @EGL_LIB_NAME@ |
EGL_NATIVE_PLATFORM = @EGL_NATIVE_PLATFORM@ |
EGL_PLATFORMS = @EGL_PLATFORMS@ |
EGREP = @EGREP@ |
ELF_LIB = @ELF_LIB@ |
EXEEXT = @EXEEXT@ |
EXPAT_INCLUDES = @EXPAT_INCLUDES@ |
FGREP = @FGREP@ |
FREEDRENO_CFLAGS = @FREEDRENO_CFLAGS@ |
FREEDRENO_LIBS = @FREEDRENO_LIBS@ |
GALLIUM_DRI_LIB_DEPS = @GALLIUM_DRI_LIB_DEPS@ |
GALLIUM_PIPE_LOADER_DEFINES = @GALLIUM_PIPE_LOADER_DEFINES@ |
GALLIUM_PIPE_LOADER_LIBS = @GALLIUM_PIPE_LOADER_LIBS@ |
GALLIUM_PIPE_LOADER_XCB_CFLAGS = @GALLIUM_PIPE_LOADER_XCB_CFLAGS@ |
GALLIUM_PIPE_LOADER_XCB_LIBS = @GALLIUM_PIPE_LOADER_XCB_LIBS@ |
GBM_PC_LIB_PRIV = @GBM_PC_LIB_PRIV@ |
GBM_PC_REQ_PRIV = @GBM_PC_REQ_PRIV@ |
GLAPI_LIB_GLOB = @GLAPI_LIB_GLOB@ |
GLAPI_LIB_NAME = @GLAPI_LIB_NAME@ |
GLESv1_CM_LIB_DEPS = @GLESv1_CM_LIB_DEPS@ |
GLESv1_CM_LIB_GLOB = @GLESv1_CM_LIB_GLOB@ |
GLESv1_CM_LIB_NAME = @GLESv1_CM_LIB_NAME@ |
GLESv1_CM_PC_LIB_PRIV = @GLESv1_CM_PC_LIB_PRIV@ |
GLESv2_LIB_DEPS = @GLESv2_LIB_DEPS@ |
GLESv2_LIB_GLOB = @GLESv2_LIB_GLOB@ |
GLESv2_LIB_NAME = @GLESv2_LIB_NAME@ |
GLESv2_PC_LIB_PRIV = @GLESv2_PC_LIB_PRIV@ |
GLPROTO_CFLAGS = @GLPROTO_CFLAGS@ |
GLPROTO_LIBS = @GLPROTO_LIBS@ |
GLX_TLS = @GLX_TLS@ |
GL_LIB = @GL_LIB@ |
GL_LIB_DEPS = @GL_LIB_DEPS@ |
GL_LIB_GLOB = @GL_LIB_GLOB@ |
GL_LIB_NAME = @GL_LIB_NAME@ |
GL_PC_CFLAGS = @GL_PC_CFLAGS@ |
GL_PC_LIB_PRIV = @GL_PC_LIB_PRIV@ |
GL_PC_REQ_PRIV = @GL_PC_REQ_PRIV@ |
GREP = @GREP@ |
HAVE_XF86VIDMODE = @HAVE_XF86VIDMODE@ |
INDENT = @INDENT@ |
INDENT_FLAGS = @INDENT_FLAGS@ |
INSTALL = @INSTALL@ |
INSTALL_DATA = @INSTALL_DATA@ |
INSTALL_PROGRAM = @INSTALL_PROGRAM@ |
INSTALL_SCRIPT = @INSTALL_SCRIPT@ |
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ |
INTEL_CFLAGS = @INTEL_CFLAGS@ |
INTEL_LIBS = @INTEL_LIBS@ |
LD = @LD@ |
LDFLAGS = @LDFLAGS@ |
LDFLAGS_FOR_BUILD = @LDFLAGS_FOR_BUILD@ |
LEX = @LEX@ |
LEXLIB = @LEXLIB@ |
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ |
LIBCLC_INCLUDEDIR = @LIBCLC_INCLUDEDIR@ |
LIBCLC_LIBEXECDIR = @LIBCLC_LIBEXECDIR@ |
LIBDRM_CFLAGS = @LIBDRM_CFLAGS@ |
LIBDRM_LIBS = @LIBDRM_LIBS@ |
LIBDRM_XORG_CFLAGS = @LIBDRM_XORG_CFLAGS@ |
LIBDRM_XORG_LIBS = @LIBDRM_XORG_LIBS@ |
LIBKMS_XORG_CFLAGS = @LIBKMS_XORG_CFLAGS@ |
LIBKMS_XORG_LIBS = @LIBKMS_XORG_LIBS@ |
LIBOBJS = @LIBOBJS@ |
LIBS = @LIBS@ |
LIBTOOL = @LIBTOOL@ |
LIBUDEV_CFLAGS = @LIBUDEV_CFLAGS@ |
LIBUDEV_LIBS = @LIBUDEV_LIBS@ |
LIB_DIR = @LIB_DIR@ |
LIPO = @LIPO@ |
LLVM_BINDIR = @LLVM_BINDIR@ |
LLVM_CFLAGS = @LLVM_CFLAGS@ |
LLVM_CONFIG = @LLVM_CONFIG@ |
LLVM_CPPFLAGS = @LLVM_CPPFLAGS@ |
LLVM_CXXFLAGS = @LLVM_CXXFLAGS@ |
LLVM_INCLUDEDIR = @LLVM_INCLUDEDIR@ |
LLVM_LDFLAGS = @LLVM_LDFLAGS@ |
LLVM_LIBDIR = @LLVM_LIBDIR@ |
LLVM_LIBS = @LLVM_LIBS@ |
LLVM_VERSION = @LLVM_VERSION@ |
LN_S = @LN_S@ |
LTLIBOBJS = @LTLIBOBJS@ |
MAKE = @MAKE@ |
MAKEINFO = @MAKEINFO@ |
MANIFEST_TOOL = @MANIFEST_TOOL@ |
MESA_LLVM = @MESA_LLVM@ |
MKDIR_P = @MKDIR_P@ |
NM = @NM@ |
NMEDIT = @NMEDIT@ |
NOUVEAU_CFLAGS = @NOUVEAU_CFLAGS@ |
NOUVEAU_LIBS = @NOUVEAU_LIBS@ |
OBJDUMP = @OBJDUMP@ |
OBJEXT = @OBJEXT@ |
OPENCL_LIB_INSTALL_DIR = @OPENCL_LIB_INSTALL_DIR@ |
OSMESA_LIB = @OSMESA_LIB@ |
OSMESA_LIB_DEPS = @OSMESA_LIB_DEPS@ |
OSMESA_LIB_NAME = @OSMESA_LIB_NAME@ |
OSMESA_MESA_DEPS = @OSMESA_MESA_DEPS@ |
OSMESA_PC_LIB_PRIV = @OSMESA_PC_LIB_PRIV@ |
OSMESA_PC_REQ = @OSMESA_PC_REQ@ |
OSMESA_VERSION = @OSMESA_VERSION@ |
OTOOL = @OTOOL@ |
OTOOL64 = @OTOOL64@ |
PACKAGE = @PACKAGE@ |
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ |
PACKAGE_NAME = @PACKAGE_NAME@ |
PACKAGE_STRING = @PACKAGE_STRING@ |
PACKAGE_TARNAME = @PACKAGE_TARNAME@ |
PACKAGE_URL = @PACKAGE_URL@ |
PACKAGE_VERSION = @PACKAGE_VERSION@ |
PATH_SEPARATOR = @PATH_SEPARATOR@ |
PERL = @PERL@ |
PKG_CONFIG = @PKG_CONFIG@ |
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ |
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ |
POSIX_SHELL = @POSIX_SHELL@ |
PTHREAD_CC = @PTHREAD_CC@ |
PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ |
PTHREAD_LIBS = @PTHREAD_LIBS@ |
PYTHON2 = @PYTHON2@ |
RADEON_CFLAGS = @RADEON_CFLAGS@ |
RADEON_LIBS = @RADEON_LIBS@ |
RANLIB = @RANLIB@ |
SED = @SED@ |
SELINUX_LIBS = @SELINUX_LIBS@ |
SET_MAKE = @SET_MAKE@ |
SHELL = @SHELL@ |
STRIP = @STRIP@ |
VDPAU_CFLAGS = @VDPAU_CFLAGS@ |
VDPAU_LIBS = @VDPAU_LIBS@ |
VDPAU_LIB_INSTALL_DIR = @VDPAU_LIB_INSTALL_DIR@ |
VDPAU_MAJOR = @VDPAU_MAJOR@ |
VDPAU_MINOR = @VDPAU_MINOR@ |
VERSION = @VERSION@ |
VG_LIB_DEPS = @VG_LIB_DEPS@ |
VG_LIB_GLOB = @VG_LIB_GLOB@ |
VG_LIB_NAME = @VG_LIB_NAME@ |
VG_PC_LIB_PRIV = @VG_PC_LIB_PRIV@ |
VISIBILITY_CFLAGS = @VISIBILITY_CFLAGS@ |
VISIBILITY_CXXFLAGS = @VISIBILITY_CXXFLAGS@ |
WAYLAND_CFLAGS = @WAYLAND_CFLAGS@ |
WAYLAND_LIBS = @WAYLAND_LIBS@ |
WAYLAND_SCANNER = @WAYLAND_SCANNER@ |
X11_INCLUDES = @X11_INCLUDES@ |
XA_MAJOR = @XA_MAJOR@ |
XA_MINOR = @XA_MINOR@ |
XA_TINY = @XA_TINY@ |
XA_VERSION = @XA_VERSION@ |
XCB_DRI2_CFLAGS = @XCB_DRI2_CFLAGS@ |
XCB_DRI2_LIBS = @XCB_DRI2_LIBS@ |
XEXT_CFLAGS = @XEXT_CFLAGS@ |
XEXT_LIBS = @XEXT_LIBS@ |
XF86VIDMODE_CFLAGS = @XF86VIDMODE_CFLAGS@ |
XF86VIDMODE_LIBS = @XF86VIDMODE_LIBS@ |
XLIBGL_CFLAGS = @XLIBGL_CFLAGS@ |
XLIBGL_LIBS = @XLIBGL_LIBS@ |
XORG_CFLAGS = @XORG_CFLAGS@ |
XORG_DRIVER_INSTALL_DIR = @XORG_DRIVER_INSTALL_DIR@ |
XORG_LIBS = @XORG_LIBS@ |
XVMC_CFLAGS = @XVMC_CFLAGS@ |
XVMC_LIBS = @XVMC_LIBS@ |
XVMC_LIB_INSTALL_DIR = @XVMC_LIB_INSTALL_DIR@ |
XVMC_MAJOR = @XVMC_MAJOR@ |
XVMC_MINOR = @XVMC_MINOR@ |
YACC = @YACC@ |
YFLAGS = @YFLAGS@ |
abs_builddir = @abs_builddir@ |
abs_srcdir = @abs_srcdir@ |
abs_top_builddir = @abs_top_builddir@ |
abs_top_srcdir = @abs_top_srcdir@ |
ac_ct_AR = @ac_ct_AR@ |
ac_ct_CC = @ac_ct_CC@ |
ac_ct_CC_FOR_BUILD = @ac_ct_CC_FOR_BUILD@ |
ac_ct_CXX = @ac_ct_CXX@ |
ac_ct_CXX_FOR_BUILD = @ac_ct_CXX_FOR_BUILD@ |
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ |
am__include = @am__include@ |
am__leading_dot = @am__leading_dot@ |
am__quote = @am__quote@ |
am__tar = @am__tar@ |
am__untar = @am__untar@ |
ax_pthread_config = @ax_pthread_config@ |
bindir = @bindir@ |
build = @build@ |
build_alias = @build_alias@ |
build_cpu = @build_cpu@ |
build_os = @build_os@ |
build_vendor = @build_vendor@ |
builddir = @builddir@ |
datadir = @datadir@ |
datarootdir = @datarootdir@ |
docdir = @docdir@ |
dvidir = @dvidir@ |
exec_prefix = @exec_prefix@ |
host = @host@ |
host_alias = @host_alias@ |
host_cpu = @host_cpu@ |
host_os = @host_os@ |
host_vendor = @host_vendor@ |
htmldir = @htmldir@ |
includedir = @includedir@ |
infodir = @infodir@ |
install_sh = @install_sh@ |
libdir = @libdir@ |
libexecdir = @libexecdir@ |
localedir = @localedir@ |
localstatedir = @localstatedir@ |
mandir = @mandir@ |
mkdir_p = @mkdir_p@ |
oldincludedir = @oldincludedir@ |
pdfdir = @pdfdir@ |
prefix = @prefix@ |
program_transform_name = @program_transform_name@ |
psdir = @psdir@ |
sbindir = @sbindir@ |
sharedstatedir = @sharedstatedir@ |
srcdir = @srcdir@ |
sysconfdir = @sysconfdir@ |
target = @target@ |
target_alias = @target_alias@ |
target_cpu = @target_cpu@ |
target_os = @target_os@ |
target_vendor = @target_vendor@ |
top_build_prefix = @top_build_prefix@ |
top_builddir = @top_builddir@ |
top_srcdir = @top_srcdir@ |
# The set of supported languages. Add languages as needed. |
POS = de.po es.po nl.po fr.po sv.po |
# |
# Don't change anything below, unless you know what you're doing. |
# |
LANGS = $(POS:%.po=%) |
MOS = $(POS:%.po=%/LC_MESSAGES/options.mo) |
POT = xmlpool.pot |
BUILT_SOURCES = options.h |
all: $(BUILT_SOURCES) |
$(MAKE) $(AM_MAKEFLAGS) all-am |
.SUFFIXES: |
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) |
@for dep in $?; do \ |
case '$(am__configure_deps)' in \ |
*$$dep*) \ |
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ |
&& { if test -f $@; then exit 0; else break; fi; }; \ |
exit 1;; \ |
esac; \ |
done; \ |
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/mesa/drivers/dri/common/xmlpool/Makefile'; \ |
$(am__cd) $(top_srcdir) && \ |
$(AUTOMAKE) --foreign src/mesa/drivers/dri/common/xmlpool/Makefile |
.PRECIOUS: Makefile |
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status |
@case '$?' in \ |
*config.status*) \ |
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ |
*) \ |
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ |
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ |
esac; |
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) |
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh |
$(top_srcdir)/configure: $(am__configure_deps) |
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh |
$(ACLOCAL_M4): $(am__aclocal_m4_deps) |
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh |
$(am__aclocal_m4_deps): |
mostlyclean-libtool: |
-rm -f *.lo |
clean-libtool: |
-rm -rf .libs _libs |
tags TAGS: |
ctags CTAGS: |
cscope cscopelist: |
distdir: $(DISTFILES) |
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ |
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ |
list='$(DISTFILES)'; \ |
dist_files=`for file in $$list; do echo $$file; done | \ |
sed -e "s|^$$srcdirstrip/||;t" \ |
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ |
case $$dist_files in \ |
*/*) $(MKDIR_P) `echo "$$dist_files" | \ |
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ |
sort -u` ;; \ |
esac; \ |
for file in $$dist_files; do \ |
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ |
if test -d $$d/$$file; then \ |
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ |
if test -d "$(distdir)/$$file"; then \ |
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ |
fi; \ |
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ |
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ |
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ |
fi; \ |
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ |
else \ |
test -f "$(distdir)/$$file" \ |
|| cp -p $$d/$$file "$(distdir)/$$file" \ |
|| exit 1; \ |
fi; \ |
done |
check-am: all-am |
check: $(BUILT_SOURCES) |
$(MAKE) $(AM_MAKEFLAGS) check-am |
all-am: Makefile |
installdirs: |
install: $(BUILT_SOURCES) |
$(MAKE) $(AM_MAKEFLAGS) install-am |
install-exec: install-exec-am |
install-data: install-data-am |
uninstall: uninstall-am |
install-am: all-am |
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am |
installcheck: installcheck-am |
install-strip: |
if test -z '$(STRIP)'; then \ |
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ |
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ |
install; \ |
else \ |
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ |
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ |
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ |
fi |
mostlyclean-generic: |
clean-generic: |
distclean-generic: |
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) |
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) |
maintainer-clean-generic: |
@echo "This command is intended for maintainers to use" |
@echo "it deletes files that may require special tools to rebuild." |
-test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) |
clean-am: clean-generic clean-libtool mostlyclean-am |
distclean: distclean-am |
-rm -f Makefile |
distclean-am: clean-am distclean-generic |
dvi: dvi-am |
dvi-am: |
html: html-am |
html-am: |
info: info-am |
info-am: |
install-data-am: |
install-dvi: install-dvi-am |
install-dvi-am: |
install-exec-am: |
install-html: install-html-am |
install-html-am: |
install-info: install-info-am |
install-info-am: |
install-man: |
install-pdf: install-pdf-am |
install-pdf-am: |
install-ps: install-ps-am |
install-ps-am: |
installcheck-am: |
maintainer-clean: maintainer-clean-am |
-rm -f Makefile |
maintainer-clean-am: distclean-am maintainer-clean-generic |
mostlyclean: mostlyclean-am |
mostlyclean-am: mostlyclean-generic mostlyclean-libtool |
pdf: pdf-am |
pdf-am: |
ps: ps-am |
ps-am: |
uninstall-am: |
.MAKE: all check install install-am install-strip |
.PHONY: all all-am check check-am clean clean-generic clean-libtool \ |
cscopelist-am ctags-am distclean distclean-generic \ |
distclean-libtool distdir dvi dvi-am html html-am info info-am \ |
install install-am install-data install-data-am install-dvi \ |
install-dvi-am install-exec install-exec-am install-html \ |
install-html-am install-info install-info-am install-man \ |
install-pdf install-pdf-am install-ps install-ps-am \ |
install-strip installcheck installcheck-am installdirs \ |
maintainer-clean maintainer-clean-generic mostlyclean \ |
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ |
tags-am uninstall uninstall-am |
.PHONY: all clean pot po mo |
# All generated files are cleaned up. |
clean: |
-rm -f $(POT) options.h *~ |
-rm -rf $(LANGS) |
# Default target 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. |
%/LC_MESSAGES/options.mo: %.po |
@mo="$@"; \ |
lang=$${mo%%/*}; \ |
echo "Updating ($$lang) $@ from $?."; \ |
mkdir -p $$lang/LC_MESSAGES; \ |
msgfmt -o $@ $? |
# Use this target to create or update .po files with new messages in |
# driconf.py. |
po: $(POT) |
@for po in $(POS); do \ |
if [ -f $$po ]; then \ |
echo "Merging new strings from $(POT) into $@."; \ |
mv $$po $$po~; \ |
msgmerge -o $$po $$po~ $(POT); \ |
else \ |
echo "Initializing $$po from $(POT)."; \ |
msginit -i $(POT) -o $$po~ --locale=$*; \ |
sed -e 's/charset=.*\\n/charset=UTF-8\\n/' $$po~ > $$po; \ |
fi \ |
done |
pot: $(POT) |
# Extract message catalog from driconf.py. |
$(POT): t_options.h |
xgettext -L C --from-code utf-8 -o $(POT) t_options.h |
# Tell versions [3.59,3.63) of GNU make to not export all variables. |
# Otherwise a system limit (for SysV at least) may be exceeded. |
.NOEXPORT: |
/contrib/sdk/sources/Mesa/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') |
/contrib/sdk/sources/Mesa/src/mesa/drivers/dri/common/xmlpool/de.po |
---|
0,0 → 1,277 |
# 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: 2011-08-30 11:40+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" |
"Language: de\n" |
"MIME-Version: 1.0\n" |
"Content-Type: text/plain; charset=UTF-8\n" |
"Content-Transfer-Encoding: 8bit\n" |
"Plural-Forms: nplurals=2; plural=(n != 1);\n" |
#: t_options.h: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:82 |
msgid "Texture color depth" |
msgstr "Texturfarbtiefe" |
#: t_options.h:83 |
msgid "Prefer frame buffer color depth" |
msgstr "Bevorzuge Farbtiefe des Framebuffers" |
#: t_options.h:84 |
msgid "Prefer 32 bits per texel" |
msgstr "Bevorzuge 32 bits pro Texel" |
#: t_options.h:85 |
msgid "Prefer 16 bits per texel" |
msgstr "Bevorzuge 16 bits pro Texel" |
#: t_options.h:86 |
msgid "Force 16 bits per texel" |
msgstr "Erzwinge 16 bits pro Texel" |
#: t_options.h:92 |
msgid "Initial maximum value for anisotropic texture filtering" |
msgstr "Initialer Maximalwert für anisotropische Texturfilterung" |
#: t_options.h:97 |
msgid "Forbid negative texture LOD bias" |
msgstr "Verbiete negative Textur-Detailgradverschiebung" |
#: t_options.h:102 |
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:109 |
msgid "Initial color reduction method" |
msgstr "Initiale Farbreduktionsmethode" |
#: t_options.h:110 |
msgid "Round colors" |
msgstr "Farben runden" |
#: t_options.h:111 |
msgid "Dither colors" |
msgstr "Farben rastern" |
#: t_options.h:119 |
msgid "Color rounding method" |
msgstr "Farbrundungsmethode" |
#: t_options.h:120 |
msgid "Round color components downward" |
msgstr "Farbkomponenten abrunden" |
#: t_options.h:121 |
msgid "Round to nearest color" |
msgstr "Zur ähnlichsten Farbe runden" |
#: t_options.h:130 |
msgid "Color dithering method" |
msgstr "Farbrasterungsmethode" |
#: t_options.h:131 |
msgid "Horizontal error diffusion" |
msgstr "Horizontale Fehlerstreuung" |
#: t_options.h:132 |
msgid "Horizontal error diffusion, reset error at line start" |
msgstr "Horizontale Fehlerstreuung, Fehler am Zeilenanfang zurücksetzen" |
#: t_options.h:133 |
msgid "Ordered 2D color dithering" |
msgstr "Geordnete 2D Farbrasterung" |
#: t_options.h:139 |
msgid "Floating point depth buffer" |
msgstr "Fließkomma z-Puffer" |
#: t_options.h:145 |
msgid "Performance" |
msgstr "Leistung" |
#: t_options.h:153 |
msgid "TCL mode (Transformation, Clipping, Lighting)" |
msgstr "TCL-Modus (Transformation, Clipping, Licht)" |
#: t_options.h:154 |
msgid "Use software TCL pipeline" |
msgstr "Benutze die Software-TCL-Pipeline" |
#: t_options.h:155 |
msgid "Use hardware TCL as first TCL pipeline stage" |
msgstr "Benutze Hardware TCL als erste Stufe der TCL-Pipeline" |
#: t_options.h:156 |
msgid "Bypass the TCL pipeline" |
msgstr "Umgehe die TCL-Pipeline" |
#: t_options.h:157 |
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:166 |
msgid "Method to limit rendering latency" |
msgstr "Methode zur Begrenzung der Bildverzögerung" |
#: t_options.h:167 |
msgid "Busy waiting for the graphics hardware" |
msgstr "Aktives Warten auf die Grafikhardware" |
#: t_options.h:168 |
msgid "Sleep for brief intervals while waiting for the graphics hardware" |
msgstr "Kurze Schlafintervalle beim Warten auf die Grafikhardware" |
#: t_options.h:169 |
msgid "Let the graphics hardware emit a software interrupt and sleep" |
msgstr "" |
"Die Grafikhardware eine Softwareunterbrechnung erzeugen lassen und schlafen" |
#: t_options.h:179 |
msgid "Synchronization with vertical refresh (swap intervals)" |
msgstr "Synchronisation mit der vertikalen Bildwiederholung" |
#: t_options.h:180 |
msgid "Never synchronize with vertical refresh, ignore application's choice" |
msgstr "" |
"Niemals mit der Bildwiederholung synchronisieren, Anweisungen der Anwendung " |
"ignorieren" |
#: t_options.h:181 |
msgid "Initial swap interval 0, obey application's choice" |
msgstr "Initiales Bildinterval 0, Anweisungen der Anwendung gehorchen" |
#: t_options.h:182 |
msgid "Initial swap interval 1, obey application's choice" |
msgstr "Initiales Bildinterval 1, Anweisungen der Anwendung gehorchen" |
#: t_options.h:183 |
msgid "" |
"Always synchronize with vertical refresh, application chooses the minimum " |
"swap interval" |
msgstr "" |
"Immer mit der Bildwiederholung synchronisieren, Anwendung wählt das minimale " |
"Bildintervall" |
#: t_options.h:191 |
msgid "Use HyperZ to boost performance" |
msgstr "HyperZ zur Leistungssteigerung verwenden" |
#: t_options.h:196 |
msgid "A post-processing filter to cel-shade the output" |
msgstr "Nachbearbeitungsfilter für Cell Shading" |
#: t_options.h:201 |
msgid "A post-processing filter to remove the red channel" |
msgstr "Nachbearbeitungsfilter zum Entfernen des Rotkanals" |
#: t_options.h:206 |
msgid "A post-processing filter to remove the green channel" |
msgstr "Nachbearbeitungsfilter zum Entfernen des Grünkanals" |
#: t_options.h:211 |
msgid "A post-processing filter to remove the blue channel" |
msgstr "Nachbearbeitungsfilter zum Entfernen des Blaukanals" |
#: t_options.h:216 |
msgid "" |
"Morphological anti-aliasing based on Jimenez\\' MLAA. 0 to disable, 8 for " |
"default quality" |
msgstr "Morphologische Kantenglättung (Anti-Aliasing) basierend auf " |
"Jimenez' MLAA. 0 für deaktiviert, 8 für Standardqualität" |
#: t_options.h: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. " |
"Farbversion, für 2D-Anwendungen" |
#: t_options.h:226 |
msgid "Number of texture units used" |
msgstr "Anzahl der benutzten Textureinheiten" |
#: t_options.h:231 |
msgid "Support larger textures not guaranteed to fit into graphics memory" |
msgstr "" |
"Unterstütze grosse Texturen die evtl. nicht in den Grafikspeicher passen" |
#: t_options.h:232 |
msgid "No" |
msgstr "Nein" |
#: t_options.h:233 |
msgid "At least 1 texture must fit under worst-case assumptions" |
msgstr "Mindestens 1 Textur muss auch im schlechtesten Fall Platz haben" |
#: t_options.h:234 |
msgid "Announce hardware limits" |
msgstr "Benutze Hardware-Limits" |
#: t_options.h:240 |
msgid "Texture filtering quality vs. speed, AKA “brilinear” texture filtering" |
msgstr "" |
"Texturfilterqualität versus -geschwindigkeit, auch bekannt als „brilineare“ " |
"Texturfilterung" |
#: t_options.h:248 |
msgid "Used types of texture memory" |
msgstr "Benutzte Arten von Texturspeicher" |
#: t_options.h:249 |
msgid "All available memory" |
msgstr "Aller verfügbarer Speicher" |
#: t_options.h:250 |
msgid "Only card memory (if available)" |
msgstr "Nur Grafikspeicher (falls verfügbar)" |
#: t_options.h:251 |
msgid "Only GART (AGP/PCIE) memory (if available)" |
msgstr "Nur GART-Speicher (AGP/PCIE) (falls verfügbar)" |
#: t_options.h:259 |
msgid "Features that are not hardware-accelerated" |
msgstr "Funktionalität, die nicht hardwarebeschleunigt ist" |
#: t_options.h:263 |
msgid "Enable extension GL_ARB_vertex_program" |
msgstr "Erweiterung GL_ARB_vertex_program aktivieren" |
#: t_options.h:273 |
msgid "Enable flushing batchbuffer after each draw call" |
msgstr "Aktiviere sofortige Leerung des Stapelpuffers nach jedem Zeichenaufruf" |
#: t_options.h:278 |
msgid "Enable flushing GPU caches with each draw call" |
msgstr "Aktiviere sofortige Leerung der GPU-Zwischenspeicher mit jedem Zeichenaufruf" |
/contrib/sdk/sources/Mesa/src/mesa/drivers/dri/common/xmlpool/es.po |
---|
0,0 → 1,214 |
# translation of es.po to Spanish |
# Spanish translations for PACKAGE package. |
# Copyright (C) 2005 THE PACKAGE'S COPYRIGHT HOLDER |
# This file is distributed under the same license as the PACKAGE package. |
# David <deifo@ono.com>, 2005. |
# David Rubio Miguélez <deifo@ono.com>, 2005. |
# |
msgid "" |
msgstr "" |
"Project-Id-Version: es\n" |
"Report-Msgid-Bugs-To: \n" |
"POT-Creation-Date: 2005-04-12 12:18+0200\n" |
"PO-Revision-Date: 2005-04-12 20:26+0200\n" |
"Last-Translator: David Rubio Miguélez <deifo@ono.com>\n" |
"Language-Team: Spanish <es@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" |
"X-Generator: KBabel 1.10\n" |
#: t_options.h:53 |
msgid "Debugging" |
msgstr "Depurando" |
#: t_options.h:57 |
msgid "Disable 3D acceleration" |
msgstr "Desactivar aceleración 3D" |
#: t_options.h:62 |
msgid "Show performance boxes" |
msgstr "Mostrar cajas de rendimiento" |
#: t_options.h:69 |
msgid "Image Quality" |
msgstr "Calidad de imagen" |
#: t_options.h:77 |
msgid "Texture color depth" |
msgstr "Profundidad de color de textura" |
#: t_options.h:78 |
msgid "Prefer frame buffer color depth" |
msgstr "Preferir profundidad de color del \"framebuffer\"" |
#: t_options.h:79 |
msgid "Prefer 32 bits per texel" |
msgstr "Preferir 32 bits por texel" |
#: t_options.h:80 |
msgid "Prefer 16 bits per texel" |
msgstr "Preferir 16 bits por texel" |
#: t_options.h:81 |
msgid "Force 16 bits per texel" |
msgstr "Forzar a 16 bits por texel" |
#: t_options.h:87 |
msgid "Initial maximum value for anisotropic texture filtering" |
msgstr "Valor máximo inicial para filtrado anisotrópico de textura" |
#: t_options.h:92 |
msgid "Forbid negative texture LOD bias" |
msgstr "Prohibir valores negativos de Nivel De Detalle (LOD) de texturas" |
#: t_options.h:97 |
msgid "Enable S3TC texture compression even if software support is not available" |
msgstr "Activar la compresión de texturas S3TC incluso si el soporte por software no está disponible" |
#: t_options.h:104 |
msgid "Initial color reduction method" |
msgstr "Método inicial de reducción de color" |
#: t_options.h:105 |
msgid "Round colors" |
msgstr "Colores redondeados" |
#: t_options.h:106 |
msgid "Dither colors" |
msgstr "Colores suavizados" |
#: t_options.h:114 |
msgid "Color rounding method" |
msgstr "Método de redondeo de colores" |
#: t_options.h:115 |
msgid "Round color components downward" |
msgstr "Redondear hacia abajo los componentes de color" |
#: t_options.h:116 |
msgid "Round to nearest color" |
msgstr "Redondear al color más cercano" |
#: t_options.h:125 |
msgid "Color dithering method" |
msgstr "Método de suavizado de color" |
#: t_options.h:126 |
msgid "Horizontal error diffusion" |
msgstr "Difusión de error horizontal" |
#: t_options.h:127 |
msgid "Horizontal error diffusion, reset error at line start" |
msgstr "Difusión de error horizontal, reiniciar error al comienzo de línea" |
#: t_options.h:128 |
msgid "Ordered 2D color dithering" |
msgstr "Suavizado de color 2D ordenado" |
#: t_options.h:134 |
msgid "Floating point depth buffer" |
msgstr "Búfer de profundidad en coma flotante" |
#: t_options.h:140 |
msgid "Performance" |
msgstr "Rendimiento" |
#: t_options.h:148 |
msgid "TCL mode (Transformation, Clipping, Lighting)" |
msgstr "Modo TCL (Transformación, Recorte, Iluminación)" |
#: t_options.h:149 |
msgid "Use software TCL pipeline" |
msgstr "Usar tubería TCL por software" |
#: t_options.h:150 |
msgid "Use hardware TCL as first TCL pipeline stage" |
msgstr "Usar TCL por hardware en la primera fase de la tubería TCL" |
#: t_options.h:151 |
msgid "Bypass the TCL pipeline" |
msgstr "Pasar por alto la tubería TCL" |
#: t_options.h:152 |
msgid "Bypass the TCL pipeline with state-based machine code generated on-the-fly" |
msgstr "Pasar por alto la tubería TCL con código máquina basado en estados generado al vuelo" |
#: t_options.h:161 |
msgid "Method to limit rendering latency" |
msgstr "Método para limitar la latencia de rénder" |
#: t_options.h:162 |
msgid "Busy waiting for the graphics hardware" |
msgstr "Esperar activamente al hardware gráfico" |
#: t_options.h:163 |
msgid "Sleep for brief intervals while waiting for the graphics hardware" |
msgstr "Dormir en intervalos cortos mientras se espera al hardware gráfico" |
#: t_options.h:164 |
msgid "Let the graphics hardware emit a software interrupt and sleep" |
msgstr "Permitir que el hardware gráfico emita una interrupción de software y duerma" |
#: t_options.h:174 |
msgid "Synchronization with vertical refresh (swap intervals)" |
msgstr "Sincronización con el refresco vertical (intervalos de intercambio)" |
#: t_options.h:175 |
msgid "Never synchronize with vertical refresh, ignore application's choice" |
msgstr "No sincronizar nunca con el refresco vertical, ignorar la elección de la aplicación" |
#: t_options.h:176 |
msgid "Initial swap interval 0, obey application's choice" |
msgstr "Intervalo de intercambio inicial 0, obedecer la elección de la aplicación" |
#: t_options.h:177 |
msgid "Initial swap interval 1, obey application's choice" |
msgstr "Intervalo de intercambio inicial 1, obedecer la elección de la aplicación" |
#: t_options.h:178 |
msgid "" |
"Always synchronize with vertical refresh, application chooses the minimum " |
"swap interval" |
msgstr "Sincronizar siempre con el refresco vertical, la aplicación elige el intervalo de intercambio mínimo" |
#: t_options.h:186 |
msgid "Use HyperZ to boost performance" |
msgstr "Usar HyperZ para potenciar rendimiento" |
#: t_options.h:191 |
msgid "Number of texture units used" |
msgstr "Número de unidades de textura usadas" |
#: t_options.h:196 |
msgid "Enable hack to allow larger textures with texture compression on radeon/r200" |
msgstr "Activar \"hack\" para permitir texturas más grandes con compresión de textura activada en la Radeon/r200" |
#: t_options.h:201 |
msgid "Texture filtering quality vs. speed, AKA “brilinear” texture filtering" |
msgstr "Calidad de filtrado de textura vs. velocidad, alias filtrado \"brilinear\" de textura" |
#: t_options.h:209 |
msgid "Used types of texture memory" |
msgstr "Tipos de memoria de textura usados" |
#: t_options.h:210 |
msgid "All available memory" |
msgstr "Toda la memoria disponible" |
#: t_options.h:211 |
msgid "Only card memory (if available)" |
msgstr "Sólo la memoria de la tarjeta (si disponible)" |
#: t_options.h:212 |
msgid "Only GART (AGP/PCIE) memory (if available)" |
msgstr "Sólo memoria GART (AGP/PCIE) (si disponible)" |
#: t_options.h:220 |
msgid "Features that are not hardware-accelerated" |
msgstr "Características no aceleradas por hardware" |
#: t_options.h:224 |
msgid "Enable extension GL_ARB_vertex_program" |
msgstr "Activar la extensión GL_ARB_vertex_program" |
/contrib/sdk/sources/Mesa/src/mesa/drivers/dri/common/xmlpool/fr.po |
---|
0,0 → 1,221 |
# French translations for DRI driver options. |
# Copyright (C) 2005 Stephane Marchesin |
# This file is distributed under the same license as the Mesa package. |
# Stephane Marchesin <marchesin@icps.u-strasbg.fr>, 2005. |
# |
msgid "" |
msgstr "" |
"Project-Id-Version: Mesa 6.3\n" |
"Report-Msgid-Bugs-To: \n" |
"POT-Creation-Date: 2005-04-11 23:19+0200\n" |
"PO-Revision-Date: 2005-04-11 01:34+0200\n" |
"Last-Translator: Stephane Marchesin <marchesin@icps.u-strasbg.fr>\n" |
"Language-Team: French <fr@li.org>\n" |
"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 "Debogage" |
#: t_options.h:57 |
msgid "Disable 3D acceleration" |
msgstr "Désactiver l'accélération 3D" |
#: t_options.h:62 |
msgid "Show performance boxes" |
msgstr "Afficher les boîtes de performance" |
#: t_options.h:69 |
msgid "Image Quality" |
msgstr "Qualité d'image" |
#: t_options.h:77 |
msgid "Texture color depth" |
msgstr "Profondeur de texture" |
#: t_options.h:78 |
msgid "Prefer frame buffer color depth" |
msgstr "Profondeur de couleur" |
#: t_options.h:79 |
msgid "Prefer 32 bits per texel" |
msgstr "Préférer 32 bits par texel" |
#: t_options.h:80 |
msgid "Prefer 16 bits per texel" |
msgstr "Prérérer 16 bits par texel" |
#: t_options.h:81 |
msgid "Force 16 bits per texel" |
msgstr "Forcer 16 bits par texel" |
#: t_options.h:87 |
msgid "Initial maximum value for anisotropic texture filtering" |
msgstr "Valeur maximale initiale pour le filtrage anisotropique de texture" |
#: t_options.h:92 |
msgid "Forbid negative texture LOD bias" |
msgstr "Interdire le LOD bias negatif" |
#: t_options.h:97 |
msgid "" |
"Enable S3TC texture compression even if software support is not available" |
msgstr "" |
"Activer la compression de texture S3TC même si le support logiciel est absent" |
#: t_options.h:104 |
msgid "Initial color reduction method" |
msgstr "Technique de réduction de couleurs" |
#: t_options.h:105 |
msgid "Round colors" |
msgstr "Arrondir les valeurs de couleur" |
#: t_options.h:106 |
msgid "Dither colors" |
msgstr "Tramer les couleurs" |
#: t_options.h:114 |
msgid "Color rounding method" |
msgstr "Méthode d'arrondi des couleurs" |
#: t_options.h:115 |
msgid "Round color components downward" |
msgstr "Arrondi à l'inférieur" |
#: t_options.h:116 |
msgid "Round to nearest color" |
msgstr "Arrondi au plus proche" |
#: t_options.h:125 |
msgid "Color dithering method" |
msgstr "Méthode de tramage" |
#: t_options.h:126 |
msgid "Horizontal error diffusion" |
msgstr "Diffusion d'erreur horizontale" |
#: t_options.h:127 |
msgid "Horizontal error diffusion, reset error at line start" |
msgstr "Diffusion d'erreur horizontale, réinitialisé pour chaque ligne" |
#: t_options.h:128 |
msgid "Ordered 2D color dithering" |
msgstr "Tramage ordonné des couleurs" |
#: t_options.h:134 |
msgid "Floating point depth buffer" |
msgstr "Z-buffer en virgule flottante" |
#: t_options.h:140 |
msgid "Performance" |
msgstr "Performance" |
#: t_options.h:148 |
msgid "TCL mode (Transformation, Clipping, Lighting)" |
msgstr "Mode de TCL (Transformation, Clipping, Eclairage)" |
#: t_options.h:149 |
msgid "Use software TCL pipeline" |
msgstr "Utiliser un pipeline TCL logiciel" |
#: t_options.h:150 |
msgid "Use hardware TCL as first TCL pipeline stage" |
msgstr "Utiliser le TCL matériel pour le premier niveau de pipeline" |
#: t_options.h:151 |
msgid "Bypass the TCL pipeline" |
msgstr "Court-circuiter le pipeline TCL" |
#: t_options.h:152 |
msgid "" |
"Bypass the TCL pipeline with state-based machine code generated on-the-fly" |
msgstr "" |
"Court-circuiter le pipeline TCL par une machine à états qui génère le code" |
"de TCL à la volée" |
#: t_options.h:161 |
msgid "Method to limit rendering latency" |
msgstr "Méthode d'attente de la carte graphique" |
#: t_options.h:162 |
msgid "Busy waiting for the graphics hardware" |
msgstr "Attente active de la carte graphique" |
#: t_options.h:163 |
msgid "Sleep for brief intervals while waiting for the graphics hardware" |
msgstr "Attente utilisant usleep()" |
#: t_options.h:164 |
msgid "Let the graphics hardware emit a software interrupt and sleep" |
msgstr "Utiliser les interruptions" |
#: t_options.h:174 |
msgid "Synchronization with vertical refresh (swap intervals)" |
msgstr "Synchronisation de l'affichage avec le balayage vertical" |
#: t_options.h:175 |
msgid "Never synchronize with vertical refresh, ignore application's choice" |
msgstr "Ne jamais synchroniser avec le balayage vertical, ignorer le choix de l'application" |
#: t_options.h:176 |
msgid "Initial swap interval 0, obey application's choice" |
msgstr "Ne pas synchroniser avec le balayage vertical par défaut, mais obéir au choix de l'application" |
#: t_options.h:177 |
msgid "Initial swap interval 1, obey application's choice" |
msgstr "Synchroniser avec le balayage vertical par défaut, mais obéir au choix de l'application" |
#: t_options.h:178 |
msgid "" |
"Always synchronize with vertical refresh, application chooses the minimum " |
"swap interval" |
msgstr "" |
"Toujours synchroniser avec le balayage vertical, l'application choisit l'intervalle minimal" |
#: t_options.h:186 |
msgid "Use HyperZ to boost performance" |
msgstr "Utiliser le HyperZ pour améliorer les performances" |
#: t_options.h:191 |
msgid "Number of texture units used" |
msgstr "Nombre d'unités de texture" |
#: t_options.h:196 |
msgid "" |
"Enable hack to allow larger textures with texture compression on radeon/r200" |
msgstr "" |
"Activer le hack permettant l'utilisation de textures de grande taille avec la " |
"compression de textures sur radeon/r200" |
#: t_options.h:201 |
msgid "Texture filtering quality vs. speed, AKA “brilinear” texture filtering" |
msgstr "" |
"Qualité/performance du filtrage trilinéaire de texture (filtrage brilinéaire)" |
#: t_options.h:209 |
msgid "Used types of texture memory" |
msgstr "Types de mémoire de texture" |
#: t_options.h:210 |
msgid "All available memory" |
msgstr "Utiliser toute la mémoire disponible" |
#: t_options.h:211 |
msgid "Only card memory (if available)" |
msgstr "Utiliser uniquement la mémoire graphique (si disponible)" |
#: t_options.h:212 |
msgid "Only GART (AGP/PCIE) memory (if available)" |
msgstr "Utiliser uniquement la mémoire GART (AGP/PCIE) (si disponible)" |
#: t_options.h:220 |
msgid "Features that are not hardware-accelerated" |
msgstr "Fonctionnalités ne bénéficiant pas d'une accélération matérielle" |
#: t_options.h:224 |
msgid "Enable extension GL_ARB_vertex_program" |
msgstr "Activer l'extension GL_ARB_vertex_program" |
/contrib/sdk/sources/Mesa/src/mesa/drivers/dri/common/xmlpool/gen_xmlpool.py |
---|
0,0 → 1,204 |
#!/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[3:] |
# Escape special characters in C strings |
def escapeCString (s): |
escapeSeqs = {'\a' : '\\a', '\b' : '\\b', '\f' : '\\f', '\n' : '\\n', |
'\r' : '\\r', '\t' : '\\t', '\v' : '\\v', '\\' : '\\\\'} |
# " -> '' is a hack. Quotes (") aren't possible in XML attributes. |
# Better use Unicode characters for typographic quotes in option |
# descriptions and translations. |
i = 0 |
r = '' |
while i < len(s): |
# Special case: escape double quote with \u201c or \u201d, depending |
# on whether it's an open or close quote. This is needed because plain |
# double quotes are not possible in XML attributes. |
if s[i] == '"': |
if i == len(s)-1 or s[i+1].isspace(): |
# close quote |
q = u'\u201c' |
else: |
# open quote |
q = u'\u201d' |
r = r + q |
elif escapeSeqs.has_key(s[i]): |
r = r + escapeSeqs[s[i]] |
else: |
r = r + s[i] |
i = i + 1 |
return r |
# Expand escape sequences in C strings (needed for gettext lookup) |
def expandCString (s): |
escapeSeqs = {'a' : '\a', 'b' : '\b', 'f' : '\f', 'n' : '\n', |
'r' : '\r', 't' : '\t', 'v' : '\v', |
'"' : '"', '\\' : '\\'} |
i = 0 |
escape = False |
hexa = False |
octa = False |
num = 0 |
digits = 0 |
r = '' |
while i < len(s): |
if not escape: |
if s[i] == '\\': |
escape = True |
else: |
r = r + s[i] |
elif hexa: |
if (s[i] >= '0' and s[i] <= '9') or \ |
(s[i] >= 'a' and s[i] <= 'f') or \ |
(s[i] >= 'A' and s[i] <= 'F'): |
num = num * 16 + int(s[i],16) |
digits = digits + 1 |
else: |
digits = 2 |
if digits >= 2: |
hexa = False |
escape = False |
r = r + chr(num) |
elif octa: |
if s[i] >= '0' and s[i] <= '7': |
num = num * 8 + int(s[i],8) |
digits = digits + 1 |
else: |
digits = 3 |
if digits >= 3: |
octa = False |
escape = False |
r = r + chr(num) |
else: |
if escapeSeqs.has_key(s[i]): |
r = r + escapeSeqs[s[i]] |
escape = False |
elif s[i] >= '0' and s[i] <= '7': |
octa = True |
num = int(s[i],8) |
if num <= 3: |
digits = 1 |
else: |
digits = 2 |
elif s[i] == 'x' or s[i] == 'X': |
hexa = True |
num = 0 |
digits = 0 |
else: |
r = r + s[i] |
escape = False |
i = i + 1 |
return r |
# Expand matches. The first match is always a DESC or DESC_BEGIN match. |
# Subsequent matches are ENUM matches. |
# |
# DESC, DESC_BEGIN format: \1 \2=<lang> \3 \4=gettext(" \5=<text> \6=") \7 |
# ENUM format: \1 \2=gettext(" \3=<text> \4=") \5 |
def expandMatches (matches, translations, end=None): |
assert len(matches) > 0 |
nTranslations = len(translations) |
i = 0 |
# Expand the description+enums for all translations |
for lang,trans in translations: |
i = i + 1 |
# Make sure that all but the last line of a simple description |
# are extended with a backslash. |
suffix = '' |
if len(matches) == 1 and i < len(translations) and \ |
not matches[0].expand (r'\7').endswith('\\'): |
suffix = ' \\' |
# Expand the description line. Need to use ugettext in order to allow |
# non-ascii unicode chars in the original English descriptions. |
text = escapeCString (trans.ugettext (unicode (expandCString ( |
matches[0].expand (r'\5')), "utf-8"))).encode("utf-8") |
print matches[0].expand (r'\1' + lang + r'\3"' + text + r'"\7') + suffix |
# Expand any subsequent enum lines |
for match in matches[1:]: |
text = escapeCString (trans.ugettext (unicode (expandCString ( |
match.expand (r'\3')), "utf-8"))).encode("utf-8") |
print match.expand (r'\1"' + text + r'"\5') |
# Expand description end |
if end: |
print end, |
# Compile a list of translation classes to all supported languages. |
# The first translation is always a NullTranslations. |
translations = [("en", gettext.NullTranslations())] |
for lang in languages: |
try: |
trans = gettext.translation ("options", localedir, [lang]) |
except IOError: |
sys.stderr.write ("Warning: language '%s' not found.\n" % lang) |
continue |
translations.append ((lang, trans)) |
# Regular expressions: |
reLibintl_h = re.compile (r'#\s*include\s*<libintl.h>') |
reDESC = re.compile (r'(\s*DRI_CONF_DESC\s*\(\s*)([a-z]+)(\s*,\s*)(gettext\s*\(\s*")(.*)("\s*\))(\s*\)[ \t]*\\?)$') |
reDESC_BEGIN = re.compile (r'(\s*DRI_CONF_DESC_BEGIN\s*\(\s*)([a-z]+)(\s*,\s*)(gettext\s*\(\s*")(.*)("\s*\))(\s*\)[ \t]*\\?)$') |
reENUM = re.compile (r'(\s*DRI_CONF_ENUM\s*\([^,]+,\s*)(gettext\s*\(\s*")(.*)("\s*\))(\s*\)[ \t]*\\?)$') |
reDESC_END = re.compile (r'\s*DRI_CONF_DESC_END') |
# Print a header |
print \ |
"/***********************************************************************\n" \ |
" *** THIS FILE IS GENERATED AUTOMATICALLY. DON'T EDIT! ***\n" \ |
" ***********************************************************************/" |
# Process the options template and generate options.h with all |
# translations. |
template = file (template_header_path, "r") |
descMatches = [] |
for line in template: |
if len(descMatches) > 0: |
matchENUM = reENUM .match (line) |
matchDESC_END = reDESC_END.match (line) |
if matchENUM: |
descMatches.append (matchENUM) |
elif matchDESC_END: |
expandMatches (descMatches, translations, line) |
descMatches = [] |
else: |
sys.stderr.write ( |
"Warning: unexpected line inside description dropped:\n%s\n" \ |
% line) |
continue |
if reLibintl_h.search (line): |
# Ignore (comment out) #include <libintl.h> |
print "/* %s * commented out by gen_xmlpool.py */" % line |
continue |
matchDESC = reDESC .match (line) |
matchDESC_BEGIN = reDESC_BEGIN.match (line) |
if matchDESC: |
assert len(descMatches) == 0 |
expandMatches ([matchDESC], translations) |
elif matchDESC_BEGIN: |
assert len(descMatches) == 0 |
descMatches = [matchDESC_BEGIN] |
else: |
print line, |
if len(descMatches) > 0: |
sys.stderr.write ("Warning: unterminated description at end of file.\n") |
expandMatches (descMatches, translations) |
/contrib/sdk/sources/Mesa/src/mesa/drivers/dri/common/xmlpool/nl.po |
---|
0,0 → 1,226 |
# Dutch translations for PACKAGE package. |
# Copyright (C) 2005 THE PACKAGE'S COPYRIGHT HOLDER |
# This file is distributed under the same license as the PACKAGE package. |
# <manfred.stienstra@dwerg.net>, 2005. |
# |
msgid "" |
msgstr "" |
"Project-Id-Version: PACKAGE VERSION\n" |
"Report-Msgid-Bugs-To: \n" |
"POT-Creation-Date: 2005-04-12 20:09+0200\n" |
"PO-Revision-Date: 2005-04-12 20:09+0200\n" |
"Last-Translator: Manfred Stienstra <manfred.stienstra@dwerg.net>\n" |
"Language-Team: Dutch <vertaling@nl.linux.org>\n" |
"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 "Debuggen" |
#: t_options.h:57 |
msgid "Disable 3D acceleration" |
msgstr "3D versnelling uitschakelen" |
#: t_options.h:62 |
msgid "Show performance boxes" |
msgstr "Laat prestatie boxjes zien" |
#: t_options.h:69 |
msgid "Image Quality" |
msgstr "Beeldkwaliteit" |
#: t_options.h:77 |
msgid "Texture color depth" |
msgstr "Textuurkleurendiepte" |
#: t_options.h:78 |
msgid "Prefer frame buffer color depth" |
msgstr "Prefereer kaderbufferkleurdiepte" |
#: t_options.h:79 |
msgid "Prefer 32 bits per texel" |
msgstr "Prefereer 32 bits per texel" |
#: t_options.h:80 |
msgid "Prefer 16 bits per texel" |
msgstr "Prefereer 16 bits per texel" |
#: t_options.h:81 |
msgid "Force 16 bits per texel" |
msgstr "Dwing 16 bits per texel af" |
#: t_options.h:87 |
msgid "Initial maximum value for anisotropic texture filtering" |
msgstr "Initïele maximum waarde voor anisotrophische textuur filtering" |
#: t_options.h:92 |
msgid "Forbid negative texture LOD bias" |
msgstr "Verbied negatief niveau detailonderscheid (LOD) van texturen" |
#: t_options.h:97 |
msgid "" |
"Enable S3TC texture compression even if software support is not available" |
msgstr "" |
"Schakel S3TC textuurcompressie in, zelfs als softwareondersteuning niet " |
"aanwezig is" |
#: t_options.h:104 |
msgid "Initial color reduction method" |
msgstr "Initïele kleurreductie methode" |
#: t_options.h:105 |
msgid "Round colors" |
msgstr "Rond kleuren af" |
#: t_options.h:106 |
msgid "Dither colors" |
msgstr "Rasteriseer kleuren" |
#: t_options.h:114 |
msgid "Color rounding method" |
msgstr "Kleurafrondingmethode" |
#: t_options.h:115 |
msgid "Round color components downward" |
msgstr "Rond kleurencomponenten af naar beneden" |
#: t_options.h:116 |
msgid "Round to nearest color" |
msgstr "Rond af naar dichtsbijzijnde kleur" |
#: t_options.h:125 |
msgid "Color dithering method" |
msgstr "Kleurrasteriseringsmethode" |
#: t_options.h:126 |
msgid "Horizontal error diffusion" |
msgstr "Horizontale foutdiffusie" |
#: t_options.h:127 |
msgid "Horizontal error diffusion, reset error at line start" |
msgstr "Horizontale foutdiffusie, zet fout bij lijnbegin terug" |
#: t_options.h:128 |
msgid "Ordered 2D color dithering" |
msgstr "Geordende 2D kleurrasterisering" |
#: t_options.h:134 |
msgid "Floating point depth buffer" |
msgstr "Dieptebuffer als commagetal" |
#: t_options.h:140 |
msgid "Performance" |
msgstr "Prestatie" |
#: t_options.h:148 |
msgid "TCL mode (Transformation, Clipping, Lighting)" |
msgstr "TCL-modus (Transformatie, Clipping, Licht)" |
#: t_options.h:149 |
msgid "Use software TCL pipeline" |
msgstr "Gebruik software TCL pijpleiding" |
#: t_options.h:150 |
msgid "Use hardware TCL as first TCL pipeline stage" |
msgstr "Gebruik hardware TCL as eerste TCL pijpleiding trap" |
#: t_options.h:151 |
msgid "Bypass the TCL pipeline" |
msgstr "Omzeil de TCL pijpleiding" |
#: t_options.h:152 |
msgid "" |
"Bypass the TCL pipeline with state-based machine code generated on-the-fly" |
msgstr "" |
"Omzeil de TCL pijpleiding met staatgebaseerde machinecode die tijdens " |
"executie gegenereerd wordt" |
#: t_options.h:161 |
msgid "Method to limit rendering latency" |
msgstr "Methode om beeldopbouwvertraging te onderdrukken" |
#: t_options.h:162 |
msgid "Busy waiting for the graphics hardware" |
msgstr "Actief wachten voor de grafische hardware" |
#: t_options.h:163 |
msgid "Sleep for brief intervals while waiting for the graphics hardware" |
msgstr "Slaap voor korte intervallen tijdens het wachten op de grafische " |
"hardware" |
#: t_options.h:164 |
msgid "Let the graphics hardware emit a software interrupt and sleep" |
msgstr "Laat de grafische hardware een software onderbreking uitzenden en in " |
"slaap vallen" |
#: t_options.h:174 |
msgid "Synchronization with vertical refresh (swap intervals)" |
msgstr "Synchronisatie met verticale verversing (interval omwisselen)" |
#: t_options.h:175 |
msgid "Never synchronize with vertical refresh, ignore application's choice" |
msgstr "Nooit synchroniseren met verticale verversing, negeer de keuze van de " |
"applicatie" |
#: t_options.h:176 |
msgid "Initial swap interval 0, obey application's choice" |
msgstr "Initïeel omwisselingsinterval 0, honoreer de keuze van de applicatie" |
#: t_options.h:177 |
msgid "Initial swap interval 1, obey application's choice" |
msgstr "Initïeel omwisselingsinterval 1, honoreer de keuze van de applicatie" |
#: t_options.h:178 |
msgid "" |
"Always synchronize with vertical refresh, application chooses the minimum " |
"swap interval" |
msgstr "" |
"Synchroniseer altijd met verticale verversing, de applicatie kiest het " |
"minimum omwisselingsinterval" |
#: t_options.h:186 |
msgid "Use HyperZ to boost performance" |
msgstr "Gebruik HyperZ om de prestaties te verbeteren" |
#: t_options.h:191 |
msgid "Number of texture units used" |
msgstr "Aantal textuureenheden in gebruik" |
#: t_options.h:196 |
msgid "" |
"Enable hack to allow larger textures with texture compression on radeon/r200" |
msgstr "" |
"Schakel hack in om met textuurcompressie grotere texturen toe te staan op " |
"een radeon/r200" |
#: t_options.h:201 |
msgid "Texture filtering quality vs. speed, AKA “brilinear” texture filtering" |
msgstr "Textuurfilterkwaliteit versus -snelheid, ookwel bekend als " |
"“brilineaire” textuurfiltering" |
#: t_options.h:209 |
msgid "Used types of texture memory" |
msgstr "Gebruikte soorten textuurgeheugen" |
#: t_options.h:210 |
msgid "All available memory" |
msgstr "Al het beschikbaar geheugen" |
#: t_options.h:211 |
msgid "Only card memory (if available)" |
msgstr "Alleen geheugen op de kaart (als het aanwezig is)" |
#: t_options.h:212 |
msgid "Only GART (AGP/PCIE) memory (if available)" |
msgstr "Alleen GART (AGP/PCIE) geheugen (als het aanwezig is)" |
#: t_options.h:220 |
msgid "Features that are not hardware-accelerated" |
msgstr "Eigenschappen die niet hardwareversneld zijn" |
#: t_options.h:224 |
msgid "Enable extension GL_ARB_vertex_program" |
msgstr "Zet uitbreiding GL_ARB_vertex_program aan" |
/contrib/sdk/sources/Mesa/src/mesa/drivers/dri/common/xmlpool/options.h |
---|
0,0 → 1,327 |
/*********************************************************************** |
*** 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") |
#define DRI_CONF_NO_RAST(def) \ |
DRI_CONF_OPT_BEGIN_B(no_rast, def) \ |
DRI_CONF_DESC(en,"Disable 3D acceleration") \ |
DRI_CONF_OPT_END |
#define DRI_CONF_PERFORMANCE_BOXES(def) \ |
DRI_CONF_OPT_BEGIN_B(performance_boxes, def) \ |
DRI_CONF_DESC(en,"Show performance boxes") \ |
DRI_CONF_OPT_END |
#define DRI_CONF_ALWAYS_FLUSH_BATCH(def) \ |
DRI_CONF_OPT_BEGIN_B(always_flush_batch, def) \ |
DRI_CONF_DESC(en,"Enable flushing batchbuffer after each draw call") \ |
DRI_CONF_OPT_END |
#define DRI_CONF_ALWAYS_FLUSH_CACHE(def) \ |
DRI_CONF_OPT_BEGIN_B(always_flush_cache, def) \ |
DRI_CONF_DESC(en,"Enable flushing GPU caches with each draw call") \ |
DRI_CONF_OPT_END |
#define DRI_CONF_DISABLE_THROTTLING(def) \ |
DRI_CONF_OPT_BEGIN_B(disable_throttling, def) \ |
DRI_CONF_DESC(en,"Disable throttling on first batch after flush") \ |
DRI_CONF_OPT_END |
#define DRI_CONF_FORCE_GLSL_EXTENSIONS_WARN(def) \ |
DRI_CONF_OPT_BEGIN_B(force_glsl_extensions_warn, def) \ |
DRI_CONF_DESC(en,"Force GLSL extension default behavior to 'warn'") \ |
DRI_CONF_OPT_END |
#define DRI_CONF_DISABLE_BLEND_FUNC_EXTENDED(def) \ |
DRI_CONF_OPT_BEGIN_B(disable_blend_func_extended, def) \ |
DRI_CONF_DESC(en,"Disable dual source blending") \ |
DRI_CONF_OPT_END |
#define DRI_CONF_DISABLE_GLSL_LINE_CONTINUATIONS(def) \ |
DRI_CONF_OPT_BEGIN_B(disable_glsl_line_continuations, def) \ |
DRI_CONF_DESC(en,"Disable backslash-based line continuations in GLSL source") \ |
DRI_CONF_OPT_END |
#define DRI_CONF_DISABLE_SHADER_BIT_ENCODING(def) \ |
DRI_CONF_OPT_BEGIN_B(disable_shader_bit_encoding, def) \ |
DRI_CONF_DESC(en,"Disable GL_ARB_shader_bit_encoding") \ |
DRI_CONF_OPT_END |
#define DRI_CONF_FORCE_GLSL_VERSION(def) \ |
DRI_CONF_OPT_BEGIN_V(force_glsl_version, int, def, "0:999") \ |
DRI_CONF_DESC(en,"Force a default GLSL version for shaders that lack an explicit #version line") \ |
DRI_CONF_OPT_END |
/** |
* \brief Image quality-related options |
*/ |
#define DRI_CONF_SECTION_QUALITY \ |
DRI_CONF_SECTION_BEGIN \ |
DRI_CONF_DESC(en,"Image Quality") |
#define DRI_CONF_EXCESS_MIPMAP(def) \ |
DRI_CONF_OPT_BEGIN_B(excess_mipmap, def) \ |
DRI_CONF_DESC(en,"Enable extra mipmap level") \ |
DRI_CONF_OPT_END |
#define DRI_CONF_TEXTURE_DEPTH_FB 0 |
#define DRI_CONF_TEXTURE_DEPTH_32 1 |
#define DRI_CONF_TEXTURE_DEPTH_16 2 |
#define DRI_CONF_TEXTURE_DEPTH_FORCE_16 3 |
#define DRI_CONF_TEXTURE_DEPTH(def) \ |
DRI_CONF_OPT_BEGIN_V(texture_depth,enum,def,"0:3") \ |
DRI_CONF_DESC_BEGIN(en,"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_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_OPT_END |
#define DRI_CONF_NO_NEG_LOD_BIAS(def) \ |
DRI_CONF_OPT_BEGIN_B(no_neg_lod_bias, def) \ |
DRI_CONF_DESC(en,"Forbid negative texture LOD bias") \ |
DRI_CONF_OPT_END |
#define DRI_CONF_FORCE_S3TC_ENABLE(def) \ |
DRI_CONF_OPT_BEGIN_B(force_s3tc_enable, def) \ |
DRI_CONF_DESC(en,"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,"Initial color reduction method") \ |
DRI_CONF_ENUM(0,"Round colors") \ |
DRI_CONF_ENUM(1,"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,"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_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_OPT_END |
#define DRI_CONF_FLOAT_DEPTH(def) \ |
DRI_CONF_OPT_BEGIN_B(float_depth, def) \ |
DRI_CONF_DESC(en,"Floating point depth buffer") \ |
DRI_CONF_OPT_END |
#define DRI_CONF_PP_CELSHADE(def) \ |
DRI_CONF_OPT_BEGIN_V(pp_celshade,enum,def,"0:1") \ |
DRI_CONF_DESC(en,"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_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_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_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_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_OPT_END |
/** |
* \brief Performance-related options |
*/ |
#define DRI_CONF_SECTION_PERFORMANCE \ |
DRI_CONF_SECTION_BEGIN \ |
DRI_CONF_DESC(en,"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,"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_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_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_OPT_END |
#define DRI_CONF_HYPERZ_DISABLED 0 |
#define DRI_CONF_HYPERZ_ENABLED 1 |
#define DRI_CONF_HYPERZ(def) \ |
DRI_CONF_OPT_BEGIN_B(hyperz, def) \ |
DRI_CONF_DESC(en,"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,"Number of texture units used") \ |
DRI_CONF_OPT_END |
#define DRI_CONF_TEXTURE_BLEND_QUALITY(def,range) \ |
DRI_CONF_OPT_BEGIN_V(texture_blend_quality,float,def,range) \ |
DRI_CONF_DESC(en,"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,"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_OPT_END |
/** |
* \brief Software-fallback options. To allow using features (like |
* GL_ARB_vertex_program) on GPUs that don't otherwise support the feature. |
*/ |
#define DRI_CONF_SECTION_SOFTWARE \ |
DRI_CONF_SECTION_BEGIN \ |
DRI_CONF_DESC(en,"Features that are not hardware-accelerated") |
#define DRI_CONF_ARB_VERTEX_PROGRAM(def) \ |
DRI_CONF_OPT_BEGIN_B(arb_vertex_program, def) \ |
DRI_CONF_DESC(en,"Enable extension GL_ARB_vertex_program") \ |
DRI_CONF_OPT_END |
/** |
* \brief Miscellaneous configuration options |
*/ |
#define DRI_CONF_SECTION_MISCELLANEOUS \ |
DRI_CONF_SECTION_BEGIN \ |
DRI_CONF_DESC(en,"Miscellaneous") |
#define DRI_CONF_ALWAYS_HAVE_DEPTH_BUFFER(def) \ |
DRI_CONF_OPT_BEGIN_B(always_have_depth_buffer, def) \ |
DRI_CONF_DESC(en,"Create all visuals with a depth buffer") \ |
DRI_CONF_OPT_END |
/contrib/sdk/sources/Mesa/src/mesa/drivers/dri/common/xmlpool/sv.po |
---|
0,0 → 1,221 |
# Swedish translation of DRI driver options. |
# Copyright (C) Free Software Foundation, Inc. |
# This file is distributed under the same license as the Mesa package. |
# Daniel Nylander <po@danielnylander.se>, 2006. |
# |
msgid "" |
msgstr "" |
"Project-Id-Version: Mesa DRI\n" |
"Report-Msgid-Bugs-To: \n" |
"POT-Creation-Date: 2005-04-11 23:19+0200\n" |
"PO-Revision-Date: 2006-09-18 10:56+0100\n" |
"Last-Translator: Daniel Nylander <po@danielnylander.se>\n" |
"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n" |
"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 "Felsökning" |
#: t_options.h:57 |
msgid "Disable 3D acceleration" |
msgstr "Inaktivera 3D-accelerering" |
#: t_options.h:62 |
msgid "Show performance boxes" |
msgstr "Visa prestandarutor" |
#: t_options.h:69 |
msgid "Image Quality" |
msgstr "Bildkvalitet" |
#: t_options.h:77 |
msgid "Texture color depth" |
msgstr "Färgdjup för texturer" |
#: t_options.h:78 |
msgid "Prefer frame buffer color depth" |
msgstr "Föredra färgdjupet för framebuffer" |
#: t_options.h:79 |
msgid "Prefer 32 bits per texel" |
msgstr "Föredra 32 bitar per texel" |
#: t_options.h:80 |
msgid "Prefer 16 bits per texel" |
msgstr "Föredra 16 bitar per texel" |
#: t_options.h:81 |
msgid "Force 16 bits per texel" |
msgstr "Tvinga 16 bitar per texel" |
#: t_options.h:87 |
msgid "Initial maximum value for anisotropic texture filtering" |
msgstr "Initialt maximalt värde för anisotropisk texturfiltrering" |
#: t_options.h:92 |
msgid "Forbid negative texture LOD bias" |
msgstr "Förbjud negativ LOD-kompensation för texturer" |
#: t_options.h:97 |
msgid "Enable S3TC texture compression even if software support is not available" |
msgstr "Aktivera S3TC-texturkomprimering även om programvarustöd saknas" |
#: t_options.h:104 |
msgid "Initial color reduction method" |
msgstr "Initial färgminskningsmetod" |
#: t_options.h:105 |
msgid "Round colors" |
msgstr "Avrunda färger" |
#: t_options.h:106 |
msgid "Dither colors" |
msgstr "Utjämna färger" |
#: t_options.h:114 |
msgid "Color rounding method" |
msgstr "Färgavrundningsmetod" |
#: t_options.h:115 |
msgid "Round color components downward" |
msgstr "Avrunda färdkomponenter nedåt" |
#: t_options.h:116 |
msgid "Round to nearest color" |
msgstr "Avrunda till närmsta färg" |
#: t_options.h:125 |
msgid "Color dithering method" |
msgstr "Färgutjämningsmetod" |
#: t_options.h:126 |
msgid "Horizontal error diffusion" |
msgstr "Horisontell felspridning" |
#: t_options.h:127 |
msgid "Horizontal error diffusion, reset error at line start" |
msgstr "Horisontell felspridning, återställ fel vid radbörjan" |
#: t_options.h:128 |
msgid "Ordered 2D color dithering" |
msgstr "Ordnad 2D-färgutjämning" |
#: t_options.h:134 |
msgid "Floating point depth buffer" |
msgstr "Buffert för flytande punktdjup" |
#: t_options.h:140 |
msgid "Performance" |
msgstr "Prestanda" |
#: t_options.h:148 |
msgid "TCL mode (Transformation, Clipping, Lighting)" |
msgstr "TCL-läge (Transformation, Clipping, Lighting)" |
#: t_options.h:149 |
msgid "Use software TCL pipeline" |
msgstr "Använd programvaru-TCL-rörledning" |
#: t_options.h:150 |
msgid "Use hardware TCL as first TCL pipeline stage" |
msgstr "Använd maskinvaru-TCL som första TCL-rörledningssteg" |
#: t_options.h:151 |
msgid "Bypass the TCL pipeline" |
msgstr "Kringgå TCL-rörledningen" |
#: t_options.h:152 |
msgid "Bypass the TCL pipeline with state-based machine code generated on-the-fly" |
msgstr "Kringgå TCL-rörledningen med tillståndsbaserad maskinkod som direktgenereras" |
#: t_options.h:161 |
msgid "Method to limit rendering latency" |
msgstr "Metod för att begränsa renderingslatens" |
#: t_options.h:162 |
msgid "Busy waiting for the graphics hardware" |
msgstr "Upptagen med att vänta på grafikhårdvaran" |
#: t_options.h:163 |
msgid "Sleep for brief intervals while waiting for the graphics hardware" |
msgstr "Sov i korta intervall under väntan på grafikhårdvaran" |
#: t_options.h:164 |
msgid "Let the graphics hardware emit a software interrupt and sleep" |
msgstr "Låt grafikhårdvaran sända ut ett programvaruavbrott och sov" |
#: t_options.h:174 |
msgid "Synchronization with vertical refresh (swap intervals)" |
msgstr "Synkronisering med vertikal uppdatering (växlingsintervall)" |
#: t_options.h:175 |
msgid "Never synchronize with vertical refresh, ignore application's choice" |
msgstr "Synkronisera aldrig med vertikal uppdatering, ignorera programmets val" |
#: t_options.h:176 |
msgid "Initial swap interval 0, obey application's choice" |
msgstr "Initialt växlingsintervall 0, följ programmets val" |
#: t_options.h:177 |
msgid "Initial swap interval 1, obey application's choice" |
msgstr "Initialt växlingsintervall 1, följ programmets val" |
#: t_options.h:178 |
msgid "Always synchronize with vertical refresh, application chooses the minimum swap interval" |
msgstr "Synkronisera alltid med vertikal uppdatering, programmet väljer den minsta växlingsintervallen" |
#: t_options.h:186 |
msgid "Use HyperZ to boost performance" |
msgstr "Använd HyperZ för att maximera prestandan" |
#: t_options.h:191 |
msgid "Number of texture units used" |
msgstr "Antal använda texturenheter" |
#: t_options.h:196 |
msgid "Support larger textures not guaranteed to fit into graphics memory" |
msgstr "Stöd för större texturer är inte garanterat att passa i grafikminnet" |
#: t_options.h:197 |
msgid "No" |
msgstr "Nej" |
#: t_options.h:198 |
msgid "At least 1 texture must fit under worst-case assumptions" |
msgstr "Åtminstone en textur måste passa för antaget sämsta förhållande" |
#: t_options.h:199 |
msgid "Announce hardware limits" |
msgstr "Annonsera hårdvarubegränsningar" |
#: t_options.h:205 |
msgid "Texture filtering quality vs. speed, AKA “brilinear” texture filtering" |
msgstr "Texturfiltreringskvalitet mot hastighet, även kallad \"brilinear\"-texturfiltrering" |
#: t_options.h:213 |
msgid "Used types of texture memory" |
msgstr "Använda typer av texturminne" |
#: t_options.h:214 |
msgid "All available memory" |
msgstr "Allt tillgängligt minne" |
#: t_options.h:215 |
msgid "Only card memory (if available)" |
msgstr "Endast kortminne (om tillgängligt)" |
#: t_options.h:216 |
msgid "Only GART (AGP/PCIE) memory (if available)" |
msgstr "Endast GART-minne (AGP/PCIE) (om tillgängligt)" |
#: t_options.h:224 |
msgid "Features that are not hardware-accelerated" |
msgstr "Funktioner som inte är hårdvaruaccelererade" |
#: t_options.h:228 |
msgid "Enable extension GL_ARB_vertex_program" |
msgstr "Aktivera tillägget GL_ARB_vertex_program" |
/contrib/sdk/sources/Mesa/src/mesa/drivers/dri/common/xmlpool/t_options.h |
---|
0,0 → 1,323 |
/* |
* XML DRI client-side driver configuration |
* Copyright (C) 2003 Felix Kuehling |
* |
* Permission is hereby granted, free of charge, to any person obtaining a |
* copy of this software and associated documentation files (the "Software"), |
* to deal in the Software without restriction, including without limitation |
* the rights to use, copy, modify, merge, publish, distribute, sublicense, |
* and/or sell copies of the Software, and to permit persons to whom the |
* Software is furnished to do so, subject to the following conditions: |
* |
* The above copyright notice and this permission notice shall be included |
* in all copies or substantial portions of the Software. |
* |
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS |
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL |
* FELIX KUEHLING, OR ANY OTHER CONTRIBUTORS BE LIABLE FOR ANY CLAIM, |
* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR |
* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE |
* OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
* |
*/ |
/** |
* \file t_options.h |
* \brief Templates of common options |
* \author Felix Kuehling |
* |
* This file defines macros for common options that can be used to |
* construct driConfigOptions in the drivers. This file is only a |
* template containing English descriptions for options wrapped in |
* gettext(). xgettext can be used to extract translatable |
* strings. These strings can then be translated by anyone familiar |
* with GNU gettext. gen_xmlpool.py takes this template and fills in |
* all the translations. The result (options.h) is included by |
* xmlpool.h which in turn can be included by drivers. |
* |
* The macros used to describe otions in this file are defined in |
* ../xmlpool.h. |
*/ |
/* This is needed for xgettext to extract translatable strings. |
* gen_xmlpool.py will discard this line. */ |
#include <libintl.h> |
/* |
* predefined option sections and options with multi-lingual descriptions |
*/ |
/** |
* \brief Debugging options |
*/ |
#define DRI_CONF_SECTION_DEBUG \ |
DRI_CONF_SECTION_BEGIN \ |
DRI_CONF_DESC(en,gettext("Debugging")) |
#define DRI_CONF_NO_RAST(def) \ |
DRI_CONF_OPT_BEGIN_B(no_rast, def) \ |
DRI_CONF_DESC(en,gettext("Disable 3D acceleration")) \ |
DRI_CONF_OPT_END |
#define DRI_CONF_PERFORMANCE_BOXES(def) \ |
DRI_CONF_OPT_BEGIN_B(performance_boxes, def) \ |
DRI_CONF_DESC(en,gettext("Show performance boxes")) \ |
DRI_CONF_OPT_END |
#define DRI_CONF_ALWAYS_FLUSH_BATCH(def) \ |
DRI_CONF_OPT_BEGIN_B(always_flush_batch, def) \ |
DRI_CONF_DESC(en,gettext("Enable flushing batchbuffer after each draw call")) \ |
DRI_CONF_OPT_END |
#define DRI_CONF_ALWAYS_FLUSH_CACHE(def) \ |
DRI_CONF_OPT_BEGIN_B(always_flush_cache, def) \ |
DRI_CONF_DESC(en,gettext("Enable flushing GPU caches with each draw call")) \ |
DRI_CONF_OPT_END |
#define DRI_CONF_DISABLE_THROTTLING(def) \ |
DRI_CONF_OPT_BEGIN_B(disable_throttling, def) \ |
DRI_CONF_DESC(en,gettext("Disable throttling on first batch after flush")) \ |
DRI_CONF_OPT_END |
#define DRI_CONF_FORCE_GLSL_EXTENSIONS_WARN(def) \ |
DRI_CONF_OPT_BEGIN_B(force_glsl_extensions_warn, def) \ |
DRI_CONF_DESC(en,gettext("Force GLSL extension default behavior to 'warn'")) \ |
DRI_CONF_OPT_END |
#define DRI_CONF_DISABLE_BLEND_FUNC_EXTENDED(def) \ |
DRI_CONF_OPT_BEGIN_B(disable_blend_func_extended, def) \ |
DRI_CONF_DESC(en,gettext("Disable dual source blending")) \ |
DRI_CONF_OPT_END |
#define DRI_CONF_DISABLE_GLSL_LINE_CONTINUATIONS(def) \ |
DRI_CONF_OPT_BEGIN_B(disable_glsl_line_continuations, def) \ |
DRI_CONF_DESC(en,gettext("Disable backslash-based line continuations in GLSL source")) \ |
DRI_CONF_OPT_END |
#define DRI_CONF_DISABLE_SHADER_BIT_ENCODING(def) \ |
DRI_CONF_OPT_BEGIN_B(disable_shader_bit_encoding, def) \ |
DRI_CONF_DESC(en,gettext("Disable GL_ARB_shader_bit_encoding")) \ |
DRI_CONF_OPT_END |
#define DRI_CONF_FORCE_GLSL_VERSION(def) \ |
DRI_CONF_OPT_BEGIN_V(force_glsl_version, int, def, "0:999") \ |
DRI_CONF_DESC(en,gettext("Force a default GLSL version for shaders that lack an explicit #version line")) \ |
DRI_CONF_OPT_END |
/** |
* \brief Image quality-related options |
*/ |
#define DRI_CONF_SECTION_QUALITY \ |
DRI_CONF_SECTION_BEGIN \ |
DRI_CONF_DESC(en,gettext("Image Quality")) |
#define DRI_CONF_EXCESS_MIPMAP(def) \ |
DRI_CONF_OPT_BEGIN_B(excess_mipmap, def) \ |
DRI_CONF_DESC(en,"Enable extra mipmap level") \ |
DRI_CONF_OPT_END |
#define DRI_CONF_TEXTURE_DEPTH_FB 0 |
#define DRI_CONF_TEXTURE_DEPTH_32 1 |
#define DRI_CONF_TEXTURE_DEPTH_16 2 |
#define DRI_CONF_TEXTURE_DEPTH_FORCE_16 3 |
#define DRI_CONF_TEXTURE_DEPTH(def) \ |
DRI_CONF_OPT_BEGIN_V(texture_depth,enum,def,"0:3") \ |
DRI_CONF_DESC_BEGIN(en,gettext("Texture color depth")) \ |
DRI_CONF_ENUM(0,gettext("Prefer frame buffer color depth")) \ |
DRI_CONF_ENUM(1,gettext("Prefer 32 bits per texel")) \ |
DRI_CONF_ENUM(2,gettext("Prefer 16 bits per texel")) \ |
DRI_CONF_ENUM(3,gettext("Force 16 bits per texel")) \ |
DRI_CONF_DESC_END \ |
DRI_CONF_OPT_END |
#define DRI_CONF_DEF_MAX_ANISOTROPY(def,range) \ |
DRI_CONF_OPT_BEGIN_V(def_max_anisotropy,float,def,range) \ |
DRI_CONF_DESC(en,gettext("Initial maximum value for anisotropic texture filtering")) \ |
DRI_CONF_OPT_END |
#define DRI_CONF_NO_NEG_LOD_BIAS(def) \ |
DRI_CONF_OPT_BEGIN_B(no_neg_lod_bias, def) \ |
DRI_CONF_DESC(en,gettext("Forbid negative texture LOD bias")) \ |
DRI_CONF_OPT_END |
#define DRI_CONF_FORCE_S3TC_ENABLE(def) \ |
DRI_CONF_OPT_BEGIN_B(force_s3tc_enable, def) \ |
DRI_CONF_DESC(en,gettext("Enable S3TC texture compression even if software support is not available")) \ |
DRI_CONF_OPT_END |
#define DRI_CONF_COLOR_REDUCTION_ROUND 0 |
#define DRI_CONF_COLOR_REDUCTION_DITHER 1 |
#define DRI_CONF_COLOR_REDUCTION(def) \ |
DRI_CONF_OPT_BEGIN_V(color_reduction,enum,def,"0:1") \ |
DRI_CONF_DESC_BEGIN(en,gettext("Initial color reduction method")) \ |
DRI_CONF_ENUM(0,gettext("Round colors")) \ |
DRI_CONF_ENUM(1,gettext("Dither colors")) \ |
DRI_CONF_DESC_END \ |
DRI_CONF_OPT_END |
#define DRI_CONF_ROUND_TRUNC 0 |
#define DRI_CONF_ROUND_ROUND 1 |
#define DRI_CONF_ROUND_MODE(def) \ |
DRI_CONF_OPT_BEGIN_V(round_mode,enum,def,"0:1") \ |
DRI_CONF_DESC_BEGIN(en,gettext("Color rounding method")) \ |
DRI_CONF_ENUM(0,gettext("Round color components downward")) \ |
DRI_CONF_ENUM(1,gettext("Round to nearest color")) \ |
DRI_CONF_DESC_END \ |
DRI_CONF_OPT_END |
#define DRI_CONF_DITHER_XERRORDIFF 0 |
#define DRI_CONF_DITHER_XERRORDIFFRESET 1 |
#define DRI_CONF_DITHER_ORDERED 2 |
#define DRI_CONF_DITHER_MODE(def) \ |
DRI_CONF_OPT_BEGIN_V(dither_mode,enum,def,"0:2") \ |
DRI_CONF_DESC_BEGIN(en,gettext("Color dithering method")) \ |
DRI_CONF_ENUM(0,gettext("Horizontal error diffusion")) \ |
DRI_CONF_ENUM(1,gettext("Horizontal error diffusion, reset error at line start")) \ |
DRI_CONF_ENUM(2,gettext("Ordered 2D color dithering")) \ |
DRI_CONF_DESC_END \ |
DRI_CONF_OPT_END |
#define DRI_CONF_FLOAT_DEPTH(def) \ |
DRI_CONF_OPT_BEGIN_B(float_depth, def) \ |
DRI_CONF_DESC(en,gettext("Floating point depth buffer")) \ |
DRI_CONF_OPT_END |
#define DRI_CONF_PP_CELSHADE(def) \ |
DRI_CONF_OPT_BEGIN_V(pp_celshade,enum,def,"0:1") \ |
DRI_CONF_DESC(en,gettext("A post-processing filter to cel-shade the output")) \ |
DRI_CONF_OPT_END |
#define DRI_CONF_PP_NORED(def) \ |
DRI_CONF_OPT_BEGIN_V(pp_nored,enum,def,"0:1") \ |
DRI_CONF_DESC(en,gettext("A post-processing filter to remove the red channel")) \ |
DRI_CONF_OPT_END |
#define DRI_CONF_PP_NOGREEN(def) \ |
DRI_CONF_OPT_BEGIN_V(pp_nogreen,enum,def,"0:1") \ |
DRI_CONF_DESC(en,gettext("A post-processing filter to remove the green channel")) \ |
DRI_CONF_OPT_END |
#define DRI_CONF_PP_NOBLUE(def) \ |
DRI_CONF_OPT_BEGIN_V(pp_noblue,enum,def,"0:1") \ |
DRI_CONF_DESC(en,gettext("A post-processing filter to remove the blue channel")) \ |
DRI_CONF_OPT_END |
#define DRI_CONF_PP_JIMENEZMLAA(def,min,max) \ |
DRI_CONF_OPT_BEGIN_V(pp_jimenezmlaa,int,def, # min ":" # max ) \ |
DRI_CONF_DESC(en,gettext("Morphological anti-aliasing based on Jimenez\\\' MLAA. 0 to disable, 8 for default quality")) \ |
DRI_CONF_OPT_END |
#define DRI_CONF_PP_JIMENEZMLAA_COLOR(def,min,max) \ |
DRI_CONF_OPT_BEGIN_V(pp_jimenezmlaa_color,int,def, # min ":" # max ) \ |
DRI_CONF_DESC(en,gettext("Morphological anti-aliasing based on Jimenez\\\' MLAA. 0 to disable, 8 for default quality. Color version, usable with 2d GL apps")) \ |
DRI_CONF_OPT_END |
/** |
* \brief Performance-related options |
*/ |
#define DRI_CONF_SECTION_PERFORMANCE \ |
DRI_CONF_SECTION_BEGIN \ |
DRI_CONF_DESC(en,gettext("Performance")) |
#define DRI_CONF_TCL_SW 0 |
#define DRI_CONF_TCL_PIPELINED 1 |
#define DRI_CONF_TCL_VTXFMT 2 |
#define DRI_CONF_TCL_CODEGEN 3 |
#define DRI_CONF_TCL_MODE(def) \ |
DRI_CONF_OPT_BEGIN_V(tcl_mode,enum,def,"0:3") \ |
DRI_CONF_DESC_BEGIN(en,gettext("TCL mode (Transformation, Clipping, Lighting)")) \ |
DRI_CONF_ENUM(0,gettext("Use software TCL pipeline")) \ |
DRI_CONF_ENUM(1,gettext("Use hardware TCL as first TCL pipeline stage")) \ |
DRI_CONF_ENUM(2,gettext("Bypass the TCL pipeline")) \ |
DRI_CONF_ENUM(3,gettext("Bypass the TCL pipeline with state-based machine code generated on-the-fly")) \ |
DRI_CONF_DESC_END \ |
DRI_CONF_OPT_END |
#define DRI_CONF_FTHROTTLE_BUSY 0 |
#define DRI_CONF_FTHROTTLE_USLEEPS 1 |
#define DRI_CONF_FTHROTTLE_IRQS 2 |
#define DRI_CONF_FTHROTTLE_MODE(def) \ |
DRI_CONF_OPT_BEGIN_V(fthrottle_mode,enum,def,"0:2") \ |
DRI_CONF_DESC_BEGIN(en,gettext("Method to limit rendering latency")) \ |
DRI_CONF_ENUM(0,gettext("Busy waiting for the graphics hardware")) \ |
DRI_CONF_ENUM(1,gettext("Sleep for brief intervals while waiting for the graphics hardware")) \ |
DRI_CONF_ENUM(2,gettext("Let the graphics hardware emit a software interrupt and sleep")) \ |
DRI_CONF_DESC_END \ |
DRI_CONF_OPT_END |
#define DRI_CONF_VBLANK_NEVER 0 |
#define DRI_CONF_VBLANK_DEF_INTERVAL_0 1 |
#define DRI_CONF_VBLANK_DEF_INTERVAL_1 2 |
#define DRI_CONF_VBLANK_ALWAYS_SYNC 3 |
#define DRI_CONF_VBLANK_MODE(def) \ |
DRI_CONF_OPT_BEGIN_V(vblank_mode,enum,def,"0:3") \ |
DRI_CONF_DESC_BEGIN(en,gettext("Synchronization with vertical refresh (swap intervals)")) \ |
DRI_CONF_ENUM(0,gettext("Never synchronize with vertical refresh, ignore application's choice")) \ |
DRI_CONF_ENUM(1,gettext("Initial swap interval 0, obey application's choice")) \ |
DRI_CONF_ENUM(2,gettext("Initial swap interval 1, obey application's choice")) \ |
DRI_CONF_ENUM(3,gettext("Always synchronize with vertical refresh, application chooses the minimum swap interval")) \ |
DRI_CONF_DESC_END \ |
DRI_CONF_OPT_END |
#define DRI_CONF_HYPERZ_DISABLED 0 |
#define DRI_CONF_HYPERZ_ENABLED 1 |
#define DRI_CONF_HYPERZ(def) \ |
DRI_CONF_OPT_BEGIN_B(hyperz, def) \ |
DRI_CONF_DESC(en,gettext("Use HyperZ to boost performance")) \ |
DRI_CONF_OPT_END |
#define DRI_CONF_MAX_TEXTURE_UNITS(def,min,max) \ |
DRI_CONF_OPT_BEGIN_V(texture_units,int,def, # min ":" # max ) \ |
DRI_CONF_DESC(en,gettext("Number of texture units used")) \ |
DRI_CONF_OPT_END |
#define DRI_CONF_TEXTURE_BLEND_QUALITY(def,range) \ |
DRI_CONF_OPT_BEGIN_V(texture_blend_quality,float,def,range) \ |
DRI_CONF_DESC(en,gettext("Texture filtering quality vs. speed, AKA “brilinear” texture filtering")) \ |
DRI_CONF_OPT_END |
#define DRI_CONF_TEXTURE_HEAPS_ALL 0 |
#define DRI_CONF_TEXTURE_HEAPS_CARD 1 |
#define DRI_CONF_TEXTURE_HEAPS_GART 2 |
#define DRI_CONF_TEXTURE_HEAPS(def) \ |
DRI_CONF_OPT_BEGIN_V(texture_heaps,enum,def,"0:2") \ |
DRI_CONF_DESC_BEGIN(en,gettext("Used types of texture memory")) \ |
DRI_CONF_ENUM(0,gettext("All available memory")) \ |
DRI_CONF_ENUM(1,gettext("Only card memory (if available)")) \ |
DRI_CONF_ENUM(2,gettext("Only GART (AGP/PCIE) memory (if available)")) \ |
DRI_CONF_DESC_END \ |
DRI_CONF_OPT_END |
/** |
* \brief Software-fallback options. To allow using features (like |
* GL_ARB_vertex_program) on GPUs that don't otherwise support the feature. |
*/ |
#define DRI_CONF_SECTION_SOFTWARE \ |
DRI_CONF_SECTION_BEGIN \ |
DRI_CONF_DESC(en,gettext("Features that are not hardware-accelerated")) |
#define DRI_CONF_ARB_VERTEX_PROGRAM(def) \ |
DRI_CONF_OPT_BEGIN_B(arb_vertex_program, def) \ |
DRI_CONF_DESC(en,gettext("Enable extension GL_ARB_vertex_program")) \ |
DRI_CONF_OPT_END |
/** |
* \brief Miscellaneous configuration options |
*/ |
#define DRI_CONF_SECTION_MISCELLANEOUS \ |
DRI_CONF_SECTION_BEGIN \ |
DRI_CONF_DESC(en,gettext("Miscellaneous")) |
#define DRI_CONF_ALWAYS_HAVE_DEPTH_BUFFER(def) \ |
DRI_CONF_OPT_BEGIN_B(always_have_depth_buffer, def) \ |
DRI_CONF_DESC(en,gettext("Create all visuals with a depth buffer")) \ |
DRI_CONF_OPT_END |
/contrib/sdk/sources/Mesa/src/mesa/drivers/dri/common/xmlpool.h |
---|
0,0 → 1,105 |
/* |
* XML DRI client-side driver configuration |
* Copyright (C) 2003 Felix Kuehling |
* |
* Permission is hereby granted, free of charge, to any person obtaining a |
* copy of this software and associated documentation files (the "Software"), |
* to deal in the Software without restriction, including without limitation |
* the rights to use, copy, modify, merge, publish, distribute, sublicense, |
* and/or sell copies of the Software, and to permit persons to whom the |
* Software is furnished to do so, subject to the following conditions: |
* |
* The above copyright notice and this permission notice shall be included |
* in all copies or substantial portions of the Software. |
* |
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS |
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL |
* FELIX KUEHLING, OR ANY OTHER CONTRIBUTORS BE LIABLE FOR ANY CLAIM, |
* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR |
* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE |
* OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
* |
*/ |
/** |
* \file xmlpool.h |
* \brief Pool of common options |
* \author Felix Kuehling |
* |
* This file defines macros that can be used to construct |
* driConfigOptions in the drivers. Common options are defined in |
* xmlpool/t_options.h from which xmlpool/options.h is generated with |
* translations. This file defines generic helper macros and includes |
* xmlpool/options.h. |
*/ |
#ifndef __XMLPOOL_H |
#define __XMLPOOL_H |
/* |
* generic macros |
*/ |
/** \brief Begin __driConfigOptions */ |
#define DRI_CONF_BEGIN \ |
"<driinfo>\n" |
/** \brief End __driConfigOptions */ |
#define DRI_CONF_END \ |
"</driinfo>\n" |
/** \brief Begin a section of related options */ |
#define DRI_CONF_SECTION_BEGIN \ |
"<section>\n" |
/** \brief End a section of related options */ |
#define DRI_CONF_SECTION_END \ |
"</section>\n" |
/** \brief Begin an option definition */ |
#define DRI_CONF_OPT_BEGIN(name,type,def) \ |
"<option name=\""#name"\" type=\""#type"\" default=\""#def"\">\n" |
/** |
* \brief Begin a boolean option definition, with the default value passed in |
* as a string |
*/ |
#define DRI_CONF_OPT_BEGIN_B(name,def) \ |
"<option name=\""#name"\" type=\"bool\" default="#def">\n" |
/** \brief Begin an option definition with quoted default value */ |
#define DRI_CONF_OPT_BEGIN_Q(name,type,def) \ |
"<option name=\""#name"\" type=\""#type"\" default="#def">\n" |
/** \brief Begin an option definition with restrictions on valid values */ |
#define DRI_CONF_OPT_BEGIN_V(name,type,def,valid) \ |
"<option name=\""#name"\" type=\""#type"\" default=\""#def"\" valid=\""valid"\">\n" |
/** \brief End an option description */ |
#define DRI_CONF_OPT_END \ |
"</option>\n" |
/** \brief A verbal description in a specified language (empty version) */ |
#define DRI_CONF_DESC(lang,text) \ |
"<description lang=\""#lang"\" text=\""text"\"/>\n" |
/** \brief A verbal description in a specified language */ |
#define DRI_CONF_DESC_BEGIN(lang,text) \ |
"<description lang=\""#lang"\" text=\""text"\">\n" |
/** \brief End a description */ |
#define DRI_CONF_DESC_END \ |
"</description>\n" |
/** \brief A verbal description of an enum value */ |
#define DRI_CONF_ENUM(value,text) \ |
"<enum value=\""#value"\" text=\""text"\"/>\n" |
/* |
* Predefined option sections and options with multi-lingual descriptions |
* are now automatically generated. |
*/ |
#include "xmlpool/options.h" |
#endif |