Compare commits
67 Commits
mesa-10.6.
...
gles3-fmt-
Author | SHA1 | Date | |
---|---|---|---|
|
ae0120f247 | ||
|
787bbe65ff | ||
|
5f96348c60 | ||
|
fe23a2c5e1 | ||
|
54d744bfc4 | ||
|
b1c62e9533 | ||
|
0faa38ccc6 | ||
|
ed9f608070 | ||
|
b68dc0c5ee | ||
|
add9b77cbd | ||
|
64e0be7d0b | ||
|
166c4d211d | ||
|
fef9526cb6 | ||
|
a33dc45d2f | ||
|
95da613011 | ||
|
9824382dbd | ||
|
067e9170ef | ||
|
28236b2f28 | ||
|
a1ef7b34ce | ||
|
8d99b25045 | ||
|
3613e67b4a | ||
|
566ce73fab | ||
|
4fd482b841 | ||
|
555245eeb7 | ||
|
e76ddbf0f8 | ||
|
8b89a5bbf5 | ||
|
56e2a876e4 | ||
|
acac9cdde0 | ||
|
8a88168a90 | ||
|
18aca7ac5a | ||
|
4dd38352e5 | ||
|
a0333d34a7 | ||
|
5d1c69be02 | ||
|
e68b841b3c | ||
|
3b495d815f | ||
|
0538b36bac | ||
|
d3d6e05349 | ||
|
4014ee4567 | ||
|
b83a83dcdf | ||
|
19864a4b1c | ||
|
24d89bc7ea | ||
|
84b2017c30 | ||
|
a9c1fa067c | ||
|
d9228105e1 | ||
|
4b7bea48ee | ||
|
b1a21a9f7c | ||
|
f7a82c00cd | ||
|
d053e8e85b | ||
|
0f16eafa17 | ||
|
43413b3fdd | ||
|
974d48a061 | ||
|
173e4f7a42 | ||
|
026099f93a | ||
|
feba88049f | ||
|
cf6ddcecda | ||
|
244d6eb094 | ||
|
7a4eca8280 | ||
|
3d0890d39d | ||
|
2a18d71dbe | ||
|
13fa793585 | ||
|
fca1ec5bfa | ||
|
5b9df1c245 | ||
|
bdea9b9460 | ||
|
e1ccb71996 | ||
|
db902c4948 | ||
|
a40737f505 | ||
|
dbee8d3ea2 |
@@ -1,4 +1,4 @@
|
||||
((prog-mode
|
||||
((nil
|
||||
(indent-tabs-mode . nil)
|
||||
(tab-width . 8)
|
||||
(c-basic-offset . 3)
|
||||
@@ -8,5 +8,4 @@
|
||||
(c-set-offset 'innamespace '0)
|
||||
(c-set-offset 'inline-open '0)))
|
||||
)
|
||||
(makefile-mode (indent-tabs-mode . t))
|
||||
)
|
||||
|
8
.gitignore
vendored
8
.gitignore
vendored
@@ -4,7 +4,6 @@
|
||||
*.ilk
|
||||
*.la
|
||||
*.lo
|
||||
*.log
|
||||
*.o
|
||||
*.obj
|
||||
*.os
|
||||
@@ -18,8 +17,6 @@
|
||||
*.tar
|
||||
*.tar.bz2
|
||||
*.tar.gz
|
||||
*.tar.xz
|
||||
*.trs
|
||||
*.zip
|
||||
*~
|
||||
depend
|
||||
@@ -39,10 +36,9 @@ config.py
|
||||
build
|
||||
libtool
|
||||
manifest.txt
|
||||
Makefile.in
|
||||
.dir-locals.el
|
||||
.deps/
|
||||
.dirstamp
|
||||
.libs/
|
||||
Makefile
|
||||
Makefile.in
|
||||
.install-mesa-links
|
||||
/Makefile
|
||||
|
@@ -24,37 +24,20 @@
|
||||
# use c99 compiler by default
|
||||
ifeq ($(LOCAL_CC),)
|
||||
ifeq ($(LOCAL_IS_HOST_MODULE),true)
|
||||
LOCAL_CC := $(HOST_CC) -std=c99 -D_GNU_SOURCE
|
||||
LOCAL_CC := $(HOST_CC) -std=c99
|
||||
else
|
||||
LOCAL_CC := $(TARGET_CC) -std=c99
|
||||
endif
|
||||
endif
|
||||
|
||||
LOCAL_C_INCLUDES += \
|
||||
$(MESA_TOP)/src \
|
||||
$(MESA_TOP)/include
|
||||
|
||||
MESA_VERSION := $(shell cat $(MESA_TOP)/VERSION)
|
||||
# define ANDROID_VERSION (e.g., 4.0.x => 0x0400)
|
||||
LOCAL_CFLAGS += \
|
||||
-DPACKAGE_VERSION=\"$(MESA_VERSION)\" \
|
||||
-DPACKAGE_BUGREPORT=\"https://bugs.freedesktop.org/enter_bug.cgi?product=Mesa\" \
|
||||
-DANDROID_VERSION=0x0$(MESA_ANDROID_MAJOR_VERSION)0$(MESA_ANDROID_MINOR_VERSION)
|
||||
|
||||
LOCAL_CFLAGS += \
|
||||
-DHAVE___BUILTIN_EXPECT \
|
||||
-DHAVE___BUILTIN_FFS \
|
||||
-DHAVE___BUILTIN_FFSLL \
|
||||
-DHAVE_FUNC_ATTRIBUTE_FLATTEN \
|
||||
-DHAVE_FUNC_ATTRIBUTE_UNUSED \
|
||||
-DHAVE_FUNC_ATTRIBUTE_FORMAT \
|
||||
-DHAVE_FUNC_ATTRIBUTE_PACKED \
|
||||
-DHAVE___BUILTIN_CTZ \
|
||||
-DHAVE___BUILTIN_POPCOUNT \
|
||||
-DHAVE___BUILTIN_POPCOUNTLL \
|
||||
-DHAVE___BUILTIN_CLZ \
|
||||
-DHAVE___BUILTIN_CLZLL \
|
||||
-DHAVE___BUILTIN_UNREACHABLE \
|
||||
-DHAVE_PTHREAD=1 \
|
||||
-fvisibility=hidden \
|
||||
-Wno-sign-compare
|
||||
|
17
Android.mk
17
Android.mk
@@ -24,7 +24,7 @@
|
||||
# BOARD_GPU_DRIVERS should be defined. The valid values are
|
||||
#
|
||||
# classic drivers: i915 i965
|
||||
# gallium drivers: swrast freedreno i915g ilo nouveau r300g r600g radeonsi vmwgfx
|
||||
# gallium drivers: swrast i915g nouveau r300g r600g radeonsi vmwgfx
|
||||
#
|
||||
# The main target is libGLES_mesa. For each classic driver enabled, a DRI
|
||||
# module will also be built. DRI modules will be loaded by libGLES_mesa.
|
||||
@@ -34,21 +34,15 @@ MESA_TOP := $(call my-dir)
|
||||
MESA_ANDROID_MAJOR_VERSION := $(word 1, $(subst ., , $(PLATFORM_VERSION)))
|
||||
MESA_ANDROID_MINOR_VERSION := $(word 2, $(subst ., , $(PLATFORM_VERSION)))
|
||||
MESA_ANDROID_VERSION := $(MESA_ANDROID_MAJOR_VERSION).$(MESA_ANDROID_MINOR_VERSION)
|
||||
ifeq ($(filter 1 2 3 4,$(MESA_ANDROID_MAJOR_VERSION)),)
|
||||
MESA_LOLLIPOP_BUILD := true
|
||||
else
|
||||
define local-generated-sources-dir
|
||||
$(call local-intermediates-dir)
|
||||
endef
|
||||
endif
|
||||
|
||||
MESA_COMMON_MK := $(MESA_TOP)/Android.common.mk
|
||||
MESA_PYTHON2 := python
|
||||
|
||||
DRM_TOP := external/drm
|
||||
DRM_GRALLOC_TOP := hardware/drm_gralloc
|
||||
|
||||
classic_drivers := i915 i965
|
||||
gallium_drivers := swrast freedreno i915g ilo nouveau r300g r600g radeonsi vmwgfx
|
||||
gallium_drivers := swrast i915g nouveau r300g r600g radeonsi vmwgfx
|
||||
|
||||
MESA_GPU_DRIVERS := $(strip $(BOARD_GPU_DRIVERS))
|
||||
|
||||
@@ -84,11 +78,9 @@ endif
|
||||
ifneq ($(strip $(MESA_GPU_DRIVERS)),)
|
||||
|
||||
SUBDIRS := \
|
||||
src/loader \
|
||||
src/mapi \
|
||||
src/glsl \
|
||||
src/mesa \
|
||||
src/util \
|
||||
src/egl/main
|
||||
|
||||
ifeq ($(strip $(MESA_BUILD_CLASSIC)),true)
|
||||
@@ -101,6 +93,7 @@ ifeq ($(strip $(MESA_BUILD_GALLIUM)),true)
|
||||
SUBDIRS += src/gallium
|
||||
endif
|
||||
|
||||
include $(call all-named-subdir-makefiles,$(SUBDIRS))
|
||||
mkfiles := $(patsubst %,$(MESA_TOP)/%/Android.mk,$(SUBDIRS))
|
||||
include $(mkfiles)
|
||||
|
||||
endif
|
||||
|
15
CleanSpec.mk
15
CleanSpec.mk
@@ -1,15 +0,0 @@
|
||||
$(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/STATIC_LIBRARIES/libmesa_*_intermediates)
|
||||
$(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/SHARED_LIBRARIES/i9*5_dri_intermediates)
|
||||
$(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/SHARED_LIBRARIES/libglapi_intermediates)
|
||||
$(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/SHARED_LIBRARIES/libGLES_mesa_intermediates)
|
||||
$(call add-clean-step, rm -rf $(OUT_DIR)/host/$(HOST_OS)-$(HOST_ARCH)/obj/EXECUTABLES/mesa_*_intermediates)
|
||||
$(call add-clean-step, rm -rf $(OUT_DIR)/host/$(HOST_OS)-$(HOST_ARCH)/obj/EXECUTABLES/glsl_compiler_intermediates)
|
||||
$(call add-clean-step, rm -rf $(OUT_DIR)/host/$(HOST_OS)-$(HOST_ARCH)/obj/STATIC_LIBRARIES/libmesa_glsl_utils_intermediates)
|
||||
|
||||
$(call add-clean-step, rm -rf $(PRODUCT_OUT)/*/STATIC_LIBRARIES/libmesa_*_intermediates)
|
||||
$(call add-clean-step, rm -rf $(PRODUCT_OUT)/*/SHARED_LIBRARIES/i9?5_dri_intermediates)
|
||||
$(call add-clean-step, rm -rf $(PRODUCT_OUT)/*/SHARED_LIBRARIES/libglapi_intermediates)
|
||||
$(call add-clean-step, rm -rf $(PRODUCT_OUT)/*/SHARED_LIBRARIES/libGLES_mesa_intermediates)
|
||||
$(call add-clean-step, rm -rf $(HOST_OUT_release)/*/EXECUTABLES/mesa_*_intermediates)
|
||||
$(call add-clean-step, rm -rf $(HOST_OUT_release)/*/EXECUTABLES/glsl_compiler_intermediates)
|
||||
$(call add-clean-step, rm -rf $(HOST_OUT_release)/*/STATIC_LIBRARIES/libmesa_*_intermediates)
|
145
Makefile.am
145
Makefile.am
@@ -21,41 +21,118 @@
|
||||
|
||||
SUBDIRS = src
|
||||
|
||||
AM_DISTCHECK_CONFIGURE_FLAGS = \
|
||||
--enable-dri3 \
|
||||
--enable-gallium-tests \
|
||||
--enable-gbm \
|
||||
--enable-gles1 \
|
||||
--enable-gles2 \
|
||||
--enable-glx-tls \
|
||||
--enable-va \
|
||||
--enable-vdpau \
|
||||
--enable-xa \
|
||||
--enable-xvmc \
|
||||
--with-egl-platforms=x11,wayland,drm
|
||||
|
||||
ACLOCAL_AMFLAGS = -I m4
|
||||
|
||||
EXTRA_DIST = \
|
||||
autogen.sh \
|
||||
common.py \
|
||||
docs \
|
||||
doxygen \
|
||||
scons \
|
||||
SConstruct
|
||||
doxygen:
|
||||
cd doxygen && $(MAKE)
|
||||
|
||||
noinst_HEADERS = \
|
||||
include/c99_alloca.h \
|
||||
include/c99_compat.h \
|
||||
include/c99_math.h \
|
||||
include/c99 \
|
||||
include/c11 \
|
||||
include/D3D9 \
|
||||
include/HaikuGL \
|
||||
include/no_extern_c.h \
|
||||
include/pci_ids
|
||||
check-local:
|
||||
$(MAKE) -C src/mapi/glapi/tests check
|
||||
$(MAKE) -C src/mapi/shared-glapi/tests check
|
||||
$(MAKE) -C src/mesa/main/tests check
|
||||
$(MAKE) -C src/glsl/tests check
|
||||
$(MAKE) -C src/glx/tests check
|
||||
|
||||
# We list some directories in EXTRA_DIST, but don't actually want to include
|
||||
# the .gitignore files in the tarball.
|
||||
dist-hook:
|
||||
find $(distdir) -name .gitignore -exec $(RM) {} +
|
||||
clean-local:
|
||||
-@touch $(top_builddir)/configs/current
|
||||
-@for dir in $(SUBDIRS) ; do \
|
||||
if [ -d $$dir ] ; then \
|
||||
(cd $$dir && $(MAKE) clean) ; \
|
||||
fi \
|
||||
done
|
||||
-@test -s $(top_builddir)/configs/current || rm -f $(top_builddir)/configs/current
|
||||
|
||||
|
||||
|
||||
distclean-local:
|
||||
-rm -rf lib*
|
||||
-rm -f $(top_builddir)/configs/current
|
||||
-find . '(' -name '*.o' -o -name '*.a' -o -name '*.so' -o \
|
||||
-name depend -o -name depend.bak ')' -exec rm -f '{}' ';'
|
||||
|
||||
.PHONY: doxygen
|
||||
|
||||
# Rules for making release tarballs
|
||||
|
||||
PACKAGE_VERSION=9.1-devel
|
||||
PACKAGE_DIR = Mesa-$(PACKAGE_VERSION)
|
||||
PACKAGE_NAME = MesaLib-$(PACKAGE_VERSION)
|
||||
|
||||
EXTRA_FILES = \
|
||||
aclocal.m4 \
|
||||
configure \
|
||||
bin/ar-lib \
|
||||
bin/compile \
|
||||
bin/config.sub \
|
||||
bin/config.guess \
|
||||
bin/depcomp \
|
||||
bin/install-sh \
|
||||
bin/ltmain.sh \
|
||||
bin/missing \
|
||||
bin/ylwrap \
|
||||
src/glsl/glsl_parser.cc \
|
||||
src/glsl/glsl_parser.h \
|
||||
src/glsl/glsl_lexer.cc \
|
||||
src/glsl/glcpp/glcpp-lex.c \
|
||||
src/glsl/glcpp/glcpp-parse.c \
|
||||
src/glsl/glcpp/glcpp-parse.h \
|
||||
src/mesa/main/api_exec_es1.c \
|
||||
src/mesa/main/api_exec_es1_dispatch.h \
|
||||
src/mesa/main/api_exec_es1_remap_helper.h \
|
||||
src/mesa/main/api_exec_es2.c \
|
||||
src/mesa/main/api_exec_es2_dispatch.h \
|
||||
src/mesa/main/api_exec_es2_remap_helper.h \
|
||||
src/mesa/program/lex.yy.c \
|
||||
src/mesa/program/program_parse.tab.c \
|
||||
src/mesa/program/program_parse.tab.h \
|
||||
`git ls-files | grep "Makefile.am" | sed -e "s/Makefile.am/Makefile.in/"`
|
||||
|
||||
|
||||
IGNORE_FILES = \
|
||||
-x autogen.sh
|
||||
|
||||
|
||||
parsers: configure
|
||||
-@touch $(top_builddir)/configs/current
|
||||
$(MAKE) -C src/glsl glsl_parser.cc glsl_parser.h glsl_lexer.cc
|
||||
$(MAKE) -C src/glsl/glcpp glcpp-lex.c glcpp-parse.c glcpp-parse.h
|
||||
$(MAKE) -C src/mesa/program lex.yy.c program_parse.tab.c program_parse.tab.h
|
||||
|
||||
# Everything for new a Mesa release:
|
||||
ARCHIVES = $(PACKAGE_NAME).tar.gz \
|
||||
$(PACKAGE_NAME).tar.bz2 \
|
||||
$(PACKAGE_NAME).zip
|
||||
|
||||
tarballs: md5
|
||||
rm -f ../$(PACKAGE_DIR) $(PACKAGE_NAME).tar
|
||||
|
||||
manifest.txt: .git
|
||||
( \
|
||||
ls -1 $(EXTRA_FILES) ; \
|
||||
git ls-files $(IGNORE_FILES) \
|
||||
) | sed -e '/^\(.*\/\)\?\./d' -e "s@^@$(PACKAGE_DIR)/@" > $@
|
||||
|
||||
../$(PACKAGE_DIR):
|
||||
ln -s $(PWD) $@
|
||||
|
||||
$(PACKAGE_NAME).tar: parsers ../$(PACKAGE_DIR) manifest.txt
|
||||
cd .. ; tar -cf $(PACKAGE_DIR)/$(PACKAGE_NAME).tar -T $(PACKAGE_DIR)/manifest.txt
|
||||
|
||||
$(PACKAGE_NAME).tar.gz: $(PACKAGE_NAME).tar ../$(PACKAGE_DIR)
|
||||
gzip --stdout --best $(PACKAGE_NAME).tar > $(PACKAGE_NAME).tar.gz
|
||||
|
||||
$(PACKAGE_NAME).tar.bz2: $(PACKAGE_NAME).tar
|
||||
bzip2 --stdout --best $(PACKAGE_NAME).tar > $(PACKAGE_NAME).tar.bz2
|
||||
|
||||
$(PACKAGE_NAME).zip: parsers ../$(PACKAGE_DIR) manifest.txt
|
||||
rm -f $(PACKAGE_NAME).zip ; \
|
||||
cd .. ; \
|
||||
zip -q -@ $(PACKAGE_NAME).zip < $(PACKAGE_DIR)/manifest.txt ; \
|
||||
mv $(PACKAGE_NAME).zip $(PACKAGE_DIR)
|
||||
|
||||
md5: $(ARCHIVES)
|
||||
@-md5sum $(PACKAGE_NAME).tar.gz
|
||||
@-md5sum $(PACKAGE_NAME).tar.bz2
|
||||
@-md5sum $(PACKAGE_NAME).zip
|
||||
|
||||
.PHONY: tarballs md5
|
||||
|
20
SConstruct
20
SConstruct
@@ -59,16 +59,16 @@ else:
|
||||
|
||||
Help(opts.GenerateHelpText(env))
|
||||
|
||||
# fail early for a common error on windows
|
||||
if env['gles']:
|
||||
try:
|
||||
import libxml2
|
||||
except ImportError:
|
||||
raise SCons.Errors.UserError, "GLES requires libxml2-python to build"
|
||||
|
||||
#######################################################################
|
||||
# Environment setup
|
||||
|
||||
with open("VERSION") as f:
|
||||
mesa_version = f.read().strip()
|
||||
env.Append(CPPDEFINES = [
|
||||
('PACKAGE_VERSION', '\\"%s\\"' % mesa_version),
|
||||
('PACKAGE_BUGREPORT', '\\"https://bugs.freedesktop.org/enter_bug.cgi?product=Mesa\\"'),
|
||||
])
|
||||
|
||||
# Includes
|
||||
env.Prepend(CPPPATH = [
|
||||
'#/include',
|
||||
@@ -80,6 +80,9 @@ env.Append(CPPPATH = [
|
||||
'#/src/gallium/winsys',
|
||||
])
|
||||
|
||||
if env['msvc']:
|
||||
env.Append(CPPPATH = ['#include/c99'])
|
||||
|
||||
# for debugging
|
||||
#print env.Dump()
|
||||
|
||||
@@ -112,6 +115,9 @@ if env['crosscompile'] and not env['embedded']:
|
||||
host_env['hostonly'] = True
|
||||
assert host_env['crosscompile'] == False
|
||||
|
||||
if host_env['msvc']:
|
||||
host_env.Append(CPPPATH = ['#include/c99'])
|
||||
|
||||
target_env = env
|
||||
env = host_env
|
||||
Export('env')
|
||||
|
119
acinclude.m4
Normal file
119
acinclude.m4
Normal file
@@ -0,0 +1,119 @@
|
||||
# A few convenience macros for Mesa, mostly to keep all the platform
|
||||
# specifics out of configure.ac.
|
||||
|
||||
# MESA_PIC_FLAGS()
|
||||
#
|
||||
# Find out whether to build PIC code using the option --enable-pic and
|
||||
# the configure enable_static/enable_shared settings. If PIC is needed,
|
||||
# figure out the necessary flags for the platform and compiler.
|
||||
#
|
||||
# The platform checks have been shamelessly taken from libtool and
|
||||
# stripped down to just what's needed for Mesa. See _LT_COMPILER_PIC in
|
||||
# /usr/share/aclocal/libtool.m4 or
|
||||
# http://git.savannah.gnu.org/gitweb/?p=libtool.git;a=blob;f=libltdl/m4/libtool.m4;hb=HEAD
|
||||
#
|
||||
AC_DEFUN([MESA_PIC_FLAGS],
|
||||
[AC_REQUIRE([AC_PROG_CC])dnl
|
||||
AC_ARG_VAR([PIC_FLAGS], [compiler flags for PIC code])
|
||||
AC_ARG_ENABLE([pic],
|
||||
[AS_HELP_STRING([--disable-pic],
|
||||
[don't compile PIC objects @<:@default=enabled for shared builds
|
||||
on supported platforms@:>@])],
|
||||
[enable_pic="$enableval"
|
||||
test "x$enable_pic" = x && enable_pic=auto],
|
||||
[enable_pic=auto])
|
||||
# disable PIC by default for static builds
|
||||
if test "$enable_pic" = auto && test "$enable_static" = yes; then
|
||||
enable_pic=no
|
||||
fi
|
||||
# if PIC hasn't been explicitly disabled, try to figure out the flags
|
||||
if test "$enable_pic" != no; then
|
||||
AC_MSG_CHECKING([for $CC option to produce PIC])
|
||||
# allow the user's flags to override
|
||||
if test "x$PIC_FLAGS" = x; then
|
||||
# see if we're using GCC
|
||||
if test "x$GCC" = xyes; then
|
||||
case "$host_os" in
|
||||
aix*|beos*|cygwin*|irix5*|irix6*|osf3*|osf4*|osf5*)
|
||||
# PIC is the default for these OSes.
|
||||
;;
|
||||
mingw*|os2*|pw32*)
|
||||
# This hack is so that the source file can tell whether
|
||||
# it is being built for inclusion in a dll (and should
|
||||
# export symbols for example).
|
||||
PIC_FLAGS="-DDLL_EXPORT"
|
||||
;;
|
||||
darwin*|rhapsody*)
|
||||
# PIC is the default on this platform
|
||||
# Common symbols not allowed in MH_DYLIB files
|
||||
PIC_FLAGS="-fno-common"
|
||||
;;
|
||||
hpux*)
|
||||
# PIC is the default for IA64 HP-UX and 64-bit HP-UX,
|
||||
# but not for PA HP-UX.
|
||||
case $host_cpu in
|
||||
hppa*64*|ia64*)
|
||||
;;
|
||||
*)
|
||||
PIC_FLAGS="-fPIC"
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
*)
|
||||
# Everyone else on GCC uses -fPIC
|
||||
PIC_FLAGS="-fPIC"
|
||||
;;
|
||||
esac
|
||||
else # !GCC
|
||||
case "$host_os" in
|
||||
hpux9*|hpux10*|hpux11*)
|
||||
# PIC is the default for IA64 HP-UX and 64-bit HP-UX,
|
||||
# but not for PA HP-UX.
|
||||
case "$host_cpu" in
|
||||
hppa*64*|ia64*)
|
||||
# +Z the default
|
||||
;;
|
||||
*)
|
||||
PIC_FLAGS="+Z"
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
linux*|k*bsd*-gnu)
|
||||
case `basename "$CC"` in
|
||||
icc*|ecc*|ifort*)
|
||||
PIC_FLAGS="-KPIC"
|
||||
;;
|
||||
pgcc*|pgf77*|pgf90*|pgf95*)
|
||||
# Portland Group compilers (*not* the Pentium gcc
|
||||
# compiler, which looks to be a dead project)
|
||||
PIC_FLAGS="-fpic"
|
||||
;;
|
||||
ccc*)
|
||||
# All Alpha code is PIC.
|
||||
;;
|
||||
xl*)
|
||||
# IBM XL C 8.0/Fortran 10.1 on PPC
|
||||
PIC_FLAGS="-qpic"
|
||||
;;
|
||||
*)
|
||||
case `$CC -V 2>&1 | sed 5q` in
|
||||
*Sun\ C*|*Sun\ F*)
|
||||
# Sun C 5.9 or Sun Fortran
|
||||
PIC_FLAGS="-KPIC"
|
||||
;;
|
||||
esac
|
||||
esac
|
||||
;;
|
||||
solaris*)
|
||||
PIC_FLAGS="-KPIC"
|
||||
;;
|
||||
sunos4*)
|
||||
PIC_FLAGS="-PIC"
|
||||
;;
|
||||
esac
|
||||
fi # GCC
|
||||
fi # PIC_FLAGS
|
||||
AC_MSG_RESULT([$PIC_FLAGS])
|
||||
fi
|
||||
AC_SUBST([PIC_FLAGS])
|
||||
])# MESA_PIC_FLAGS
|
@@ -6,8 +6,8 @@ test -z "$srcdir" && srcdir=.
|
||||
ORIGDIR=`pwd`
|
||||
cd "$srcdir"
|
||||
|
||||
autoreconf --force --verbose --install || exit 1
|
||||
cd "$ORIGDIR" || exit $?
|
||||
autoreconf -v --install || exit 1
|
||||
cd $ORIGDIR || exit $?
|
||||
|
||||
if test -z "$NOCONFIGURE"; then
|
||||
"$srcdir"/configure "$@"
|
||||
|
@@ -1,49 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# This script is used to generate the list of fixed bugs that
|
||||
# appears in the release notes files, with HTML formatting.
|
||||
#
|
||||
# Note: This script could take a while until all details have
|
||||
# been fetched from bugzilla.
|
||||
#
|
||||
# Usage examples:
|
||||
#
|
||||
# $ bin/bugzilla_mesa.sh mesa-9.0.2..mesa-9.0.3
|
||||
# $ bin/bugzilla_mesa.sh mesa-9.0.2..mesa-9.0.3 > bugfixes
|
||||
# $ bin/bugzilla_mesa.sh mesa-9.0.2..mesa-9.0.3 | tee bugfixes
|
||||
# $ DRYRUN=yes bin/bugzilla_mesa.sh mesa-9.0.2..mesa-9.0.3
|
||||
# $ DRYRUN=yes bin/bugzilla_mesa.sh mesa-9.0.2..mesa-9.0.3 | wc -l
|
||||
|
||||
|
||||
# regex pattern: trim before bug number
|
||||
trim_before='s/.*show_bug.cgi?id=\([0-9]*\).*/\1/'
|
||||
|
||||
# regex pattern: reconstruct the url
|
||||
use_after='s,^,https://bugs.freedesktop.org/show_bug.cgi?id=,'
|
||||
|
||||
# extract fdo urls from commit log
|
||||
urls=$(git log $* | grep 'bugs.freedesktop.org/show_bug' | sed -e $trim_before | sort -n -u | sed -e $use_after)
|
||||
|
||||
# if DRYRUN is set to "yes", simply print the URLs and don't fetch the
|
||||
# details from fdo bugzilla.
|
||||
#DRYRUN=yes
|
||||
|
||||
if [ "x$DRYRUN" = xyes ]; then
|
||||
for i in $urls
|
||||
do
|
||||
echo $i
|
||||
done
|
||||
else
|
||||
echo "<ul>"
|
||||
echo ""
|
||||
|
||||
for i in $urls
|
||||
do
|
||||
id=$(echo $i | cut -d'=' -f2)
|
||||
summary=$(wget --quiet -O - $i | grep -e '<title>.*</title>' | sed -e 's/ *<title>Bug [0-9]\+ – \(.*\)<\/title>/\1/')
|
||||
echo "<li><a href=\"$i\">Bug $id</a> - $summary</li>"
|
||||
echo ""
|
||||
done
|
||||
|
||||
echo "</ul>"
|
||||
fi
|
@@ -1,12 +1,6 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Script for generating a list of candidates for cherry-picking to a stable branch
|
||||
#
|
||||
# Usage examples:
|
||||
#
|
||||
# $ bin/get-pick-list.sh
|
||||
# $ bin/get-pick-list.sh > picklist
|
||||
# $ bin/get-pick-list.sh | tee picklist
|
||||
|
||||
# Grep for commits with "cherry picked from commit" in the commit message.
|
||||
git log --reverse --grep="cherry picked from commit" origin/master..HEAD |\
|
||||
@@ -14,7 +8,7 @@ git log --reverse --grep="cherry picked from commit" origin/master..HEAD |\
|
||||
sed -e 's/^[[:space:]]*(cherry picked from commit[[:space:]]*//' -e 's/)//' > already_picked
|
||||
|
||||
# Grep for commits that were marked as a candidate for the stable tree.
|
||||
git log --reverse --pretty=%H -i --grep='^\([[:space:]]*NOTE: .*[Cc]andidate\|CC:.*mesa-stable\)' HEAD..origin/master |\
|
||||
git log --reverse --pretty=%H -i --grep='^[[:space:]]*NOTE: This is a candidate' HEAD..origin/master |\
|
||||
while read sha
|
||||
do
|
||||
# Check to see whether the patch is on the ignore list.
|
||||
|
74
bin/installmesa
Executable file
74
bin/installmesa
Executable file
@@ -0,0 +1,74 @@
|
||||
#!/bin/sh
|
||||
|
||||
#
|
||||
# Simple shell script for installing Mesa's header and library files.
|
||||
# If the copy commands below don't work on a particular system (i.e. the
|
||||
# -f or -d flags), we may need to branch on `uname` to do the right thing.
|
||||
#
|
||||
|
||||
|
||||
TOP=.
|
||||
|
||||
INCLUDE_DIR="/usr/local/include"
|
||||
LIB_DIR="/usr/local/lib"
|
||||
|
||||
if [ "x$#" = "x0" ] ; then
|
||||
echo
|
||||
echo "***** Mesa installation - You may need root privileges to do this *****"
|
||||
echo
|
||||
echo "Default directory for header files is:" ${INCLUDE_DIR}
|
||||
echo "Enter new directory or press <Enter> to accept this default."
|
||||
|
||||
read INPUT
|
||||
if [ "x${INPUT}" != "x" ] ; then
|
||||
INCLUDE_DIR=${INPUT}
|
||||
fi
|
||||
|
||||
echo
|
||||
echo "Default directory for library files is:" ${LIB_DIR}
|
||||
echo "Enter new directory or press <Enter> to accept this default."
|
||||
|
||||
read INPUT
|
||||
if [ "x${INPUT}" != "x" ] ; then
|
||||
LIB_DIR=${INPUT}
|
||||
fi
|
||||
|
||||
echo
|
||||
echo "About to install Mesa header files (GL/*.h) in: " ${INCLUDE_DIR}/GL
|
||||
echo "and Mesa library files (libGL.*, etc) in: " ${LIB_DIR}
|
||||
echo "Press <Enter> to continue, or <ctrl>-C to abort."
|
||||
|
||||
read INPUT
|
||||
|
||||
else
|
||||
INCLUDE_DIR=$1/include
|
||||
LIB_DIR=$1/lib
|
||||
fi
|
||||
|
||||
# flags:
|
||||
# -f = force
|
||||
# -d = preserve symlinks (does not work on BSD)
|
||||
|
||||
if [ `uname` = "FreeBSD" ] ; then
|
||||
CP_FLAGS="-f"
|
||||
elif [ `uname` = "Darwin" ] ; then
|
||||
CP_FLAGS="-f"
|
||||
elif [ `uname` = "AIX" ] ; then
|
||||
CP_FLAGS="-fh"
|
||||
else
|
||||
CP_FLAGS="-fd"
|
||||
fi
|
||||
|
||||
|
||||
set -v
|
||||
|
||||
mkdir -p ${INCLUDE_DIR}
|
||||
mkdir -p ${INCLUDE_DIR}/GL
|
||||
# NOT YET: mkdir -p ${INCLUDE_DIR}/GLES
|
||||
mkdir -p ${LIB_DIR}
|
||||
cp -f ${TOP}/include/GL/*.h ${INCLUDE_DIR}/GL
|
||||
cp -f ${TOP}/src/glw/*.h ${INCLUDE_DIR}/GL
|
||||
# NOT YET: cp -f ${TOP}/include/GLES/*.h ${INCLUDE_DIR}/GLES
|
||||
cp ${CP_FLAGS} ${TOP}/lib*/lib* ${LIB_DIR}
|
||||
|
||||
echo "Done."
|
112
bin/minstall
Executable file
112
bin/minstall
Executable file
@@ -0,0 +1,112 @@
|
||||
#!/bin/sh
|
||||
|
||||
|
||||
# A minimal replacement for 'install' that supports installing symbolic links.
|
||||
# Only a limited number of options are supported:
|
||||
# -d dir Create a directory
|
||||
# -m mode Sets a file's mode when installing
|
||||
|
||||
|
||||
# If these commands aren't portable, we'll need some "if (arch)" type stuff
|
||||
SYMLINK="ln -s"
|
||||
MKDIR="mkdir -p"
|
||||
RM="rm -f"
|
||||
|
||||
MODE=""
|
||||
|
||||
if [ "$1" = "-d" ] ; then
|
||||
# make a directory path
|
||||
$MKDIR "$2"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ "$1" = "-m" ] ; then
|
||||
# set file mode
|
||||
MODE=$2
|
||||
shift 2
|
||||
fi
|
||||
|
||||
# install file(s) into destination
|
||||
if [ $# -ge 2 ] ; then
|
||||
|
||||
# Last cmd line arg is the dest dir
|
||||
for FILE in $@ ; do
|
||||
DESTDIR="$FILE"
|
||||
done
|
||||
|
||||
# Loop over args, moving them to DEST directory
|
||||
I=1
|
||||
for FILE in $@ ; do
|
||||
if [ $I = $# ] ; then
|
||||
# stop, don't want to install $DEST into $DEST
|
||||
exit 0
|
||||
fi
|
||||
|
||||
DEST=$DESTDIR
|
||||
|
||||
# On CYGWIN, because DLLs are loaded by the native Win32 loader,
|
||||
# they are installed in the executable path. Stub libraries used
|
||||
# only for linking are installed in the library path
|
||||
case `uname` in
|
||||
CYGWIN*)
|
||||
case $FILE in
|
||||
*.dll)
|
||||
DEST="$DEST/../bin"
|
||||
;;
|
||||
*)
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
*)
|
||||
;;
|
||||
esac
|
||||
|
||||
PWDSAVE=`pwd`
|
||||
|
||||
# determine file's type
|
||||
if [ -h "$FILE" ] ; then
|
||||
#echo $FILE is a symlink
|
||||
# Unfortunately, cp -d isn't universal so we have to
|
||||
# use a work-around.
|
||||
|
||||
# Use ls -l to find the target that the link points to
|
||||
LL=`ls -l "$FILE"`
|
||||
for L in $LL ; do
|
||||
TARGET=$L
|
||||
done
|
||||
#echo $FILE is a symlink pointing to $TARGET
|
||||
|
||||
FILE=`basename "$FILE"`
|
||||
# Go to $DEST and make the link
|
||||
cd "$DEST" # pushd
|
||||
$RM "$FILE"
|
||||
$SYMLINK "$TARGET" "$FILE"
|
||||
cd "$PWDSAVE" # popd
|
||||
|
||||
elif [ -f "$FILE" ] ; then
|
||||
#echo "$FILE" is a regular file
|
||||
# Only copy if the files differ
|
||||
if ! cmp -s $FILE $DEST/`basename $FILE`; then
|
||||
$RM "$DEST/`basename $FILE`"
|
||||
cp "$FILE" "$DEST"
|
||||
fi
|
||||
if [ $MODE ] ; then
|
||||
FILE=`basename "$FILE"`
|
||||
chmod $MODE "$DEST/$FILE"
|
||||
fi
|
||||
else
|
||||
echo "Unknown type of argument: " "$FILE"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
I=`expr $I + 1`
|
||||
done
|
||||
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# If we get here, we didn't find anything to do
|
||||
echo "Usage:"
|
||||
echo " install -d dir Create named directory"
|
||||
echo " install [-m mode] file [...] dest Install files in destination"
|
||||
|
@@ -1,251 +0,0 @@
|
||||
#!/usr/bin/env python
|
||||
#
|
||||
# Copyright 2012 VMware Inc
|
||||
# Copyright 2008-2009 Jose Fonseca
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
|
||||
"""Perf annotate for JIT code.
|
||||
|
||||
Linux `perf annotate` does not work with JIT code. This script takes the data
|
||||
produced by `perf script` command, plus the diassemblies outputed by gallivm
|
||||
into /tmp/perf-XXXXX.map.asm and produces output similar to `perf annotate`.
|
||||
|
||||
See docs/llvmpipe.html for usage instructions.
|
||||
|
||||
The `perf script` output parser was derived from the gprof2dot.py script.
|
||||
"""
|
||||
|
||||
|
||||
import sys
|
||||
import os.path
|
||||
import re
|
||||
import optparse
|
||||
import subprocess
|
||||
|
||||
|
||||
class Parser:
|
||||
"""Parser interface."""
|
||||
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
def parse(self):
|
||||
raise NotImplementedError
|
||||
|
||||
|
||||
class LineParser(Parser):
|
||||
"""Base class for parsers that read line-based formats."""
|
||||
|
||||
def __init__(self, file):
|
||||
Parser.__init__(self)
|
||||
self._file = file
|
||||
self.__line = None
|
||||
self.__eof = False
|
||||
self.line_no = 0
|
||||
|
||||
def readline(self):
|
||||
line = self._file.readline()
|
||||
if not line:
|
||||
self.__line = ''
|
||||
self.__eof = True
|
||||
else:
|
||||
self.line_no += 1
|
||||
self.__line = line.rstrip('\r\n')
|
||||
|
||||
def lookahead(self):
|
||||
assert self.__line is not None
|
||||
return self.__line
|
||||
|
||||
def consume(self):
|
||||
assert self.__line is not None
|
||||
line = self.__line
|
||||
self.readline()
|
||||
return line
|
||||
|
||||
def eof(self):
|
||||
assert self.__line is not None
|
||||
return self.__eof
|
||||
|
||||
|
||||
mapFile = None
|
||||
|
||||
def lookupMap(filename, matchSymbol):
|
||||
global mapFile
|
||||
mapFile = filename
|
||||
stream = open(filename, 'rt')
|
||||
for line in stream:
|
||||
start, length, symbol = line.split()
|
||||
|
||||
start = int(start, 16)
|
||||
length = int(length,16)
|
||||
|
||||
if symbol == matchSymbol:
|
||||
return start
|
||||
|
||||
return None
|
||||
|
||||
def lookupAsm(filename, desiredFunction):
|
||||
stream = open(filename + '.asm', 'rt')
|
||||
while stream.readline() != desiredFunction + ':\n':
|
||||
pass
|
||||
|
||||
asm = []
|
||||
line = stream.readline().strip()
|
||||
while line:
|
||||
addr, instr = line.split(':', 1)
|
||||
addr = int(addr)
|
||||
asm.append((addr, instr))
|
||||
line = stream.readline().strip()
|
||||
|
||||
return asm
|
||||
|
||||
|
||||
|
||||
samples = {}
|
||||
|
||||
|
||||
class PerfParser(LineParser):
|
||||
"""Parser for linux perf callgraph output.
|
||||
|
||||
It expects output generated with
|
||||
|
||||
perf record -g
|
||||
perf script
|
||||
"""
|
||||
|
||||
def __init__(self, infile, symbol):
|
||||
LineParser.__init__(self, infile)
|
||||
self.symbol = symbol
|
||||
|
||||
def readline(self):
|
||||
# Override LineParser.readline to ignore comment lines
|
||||
while True:
|
||||
LineParser.readline(self)
|
||||
if self.eof() or not self.lookahead().startswith('#'):
|
||||
break
|
||||
|
||||
def parse(self):
|
||||
# read lookahead
|
||||
self.readline()
|
||||
|
||||
while not self.eof():
|
||||
self.parse_event()
|
||||
|
||||
asm = lookupAsm(mapFile, self.symbol)
|
||||
|
||||
addresses = samples.keys()
|
||||
addresses.sort()
|
||||
total_samples = 0
|
||||
|
||||
sys.stdout.write('%s:\n' % self.symbol)
|
||||
for address, instr in asm:
|
||||
try:
|
||||
sample = samples.pop(address)
|
||||
except KeyError:
|
||||
sys.stdout.write(6*' ')
|
||||
else:
|
||||
sys.stdout.write('%6u' % (sample))
|
||||
total_samples += sample
|
||||
sys.stdout.write('%6u: %s\n' % (address, instr))
|
||||
print 'total:', total_samples
|
||||
assert len(samples) == 0
|
||||
|
||||
sys.exit(0)
|
||||
|
||||
def parse_event(self):
|
||||
if self.eof():
|
||||
return
|
||||
|
||||
line = self.consume()
|
||||
assert line
|
||||
|
||||
callchain = self.parse_callchain()
|
||||
if not callchain:
|
||||
return
|
||||
|
||||
def parse_callchain(self):
|
||||
callchain = []
|
||||
while self.lookahead():
|
||||
function = self.parse_call(len(callchain) == 0)
|
||||
if function is None:
|
||||
break
|
||||
callchain.append(function)
|
||||
if self.lookahead() == '':
|
||||
self.consume()
|
||||
return callchain
|
||||
|
||||
call_re = re.compile(r'^\s+(?P<address>[0-9a-fA-F]+)\s+(?P<symbol>.*)\s+\((?P<module>[^)]*)\)$')
|
||||
|
||||
def parse_call(self, first):
|
||||
line = self.consume()
|
||||
mo = self.call_re.match(line)
|
||||
assert mo
|
||||
if not mo:
|
||||
return None
|
||||
|
||||
if not first:
|
||||
return None
|
||||
|
||||
function_name = mo.group('symbol')
|
||||
if not function_name:
|
||||
function_name = mo.group('address')
|
||||
|
||||
module = mo.group('module')
|
||||
|
||||
function_id = function_name + ':' + module
|
||||
|
||||
address = mo.group('address')
|
||||
address = int(address, 16)
|
||||
|
||||
if function_name != self.symbol:
|
||||
return None
|
||||
|
||||
start_address = lookupMap(module, function_name)
|
||||
address -= start_address
|
||||
|
||||
#print function_name, module, address
|
||||
|
||||
samples[address] = samples.get(address, 0) + 1
|
||||
|
||||
return True
|
||||
|
||||
|
||||
def main():
|
||||
"""Main program."""
|
||||
|
||||
optparser = optparse.OptionParser(
|
||||
usage="\n\t%prog [options] symbol_name")
|
||||
(options, args) = optparser.parse_args(sys.argv[1:])
|
||||
if len(args) != 1:
|
||||
optparser.error('wrong number of arguments')
|
||||
|
||||
symbol = args[0]
|
||||
|
||||
p = subprocess.Popen(['perf', 'script'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
||||
parser = PerfParser(p.stdout, symbol)
|
||||
parser.parse()
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
|
||||
|
||||
# vim: set sw=4 et:
|
@@ -2,12 +2,6 @@
|
||||
|
||||
# This script is used to generate the list of changes that
|
||||
# appears in the release notes files, with HTML formatting.
|
||||
#
|
||||
# Usage examples:
|
||||
#
|
||||
# $ bin/shortlog_mesa.sh mesa-9.0.2..mesa-9.0.3
|
||||
# $ bin/shortlog_mesa.sh mesa-9.0.2..mesa-9.0.3 > changes
|
||||
# $ bin/shortlog_mesa.sh mesa-9.0.2..mesa-9.0.3 | tee changes
|
||||
|
||||
|
||||
typeset -i in_log=0
|
||||
|
96
common.py
96
common.py
@@ -26,28 +26,28 @@ else:
|
||||
target_platform = host_platform
|
||||
|
||||
_machine_map = {
|
||||
'x86': 'x86',
|
||||
'i386': 'x86',
|
||||
'i486': 'x86',
|
||||
'i586': 'x86',
|
||||
'i686': 'x86',
|
||||
'BePC': 'x86',
|
||||
'Intel': 'x86',
|
||||
'ppc': 'ppc',
|
||||
'BeBox': 'ppc',
|
||||
'BeMac': 'ppc',
|
||||
'AMD64': 'x86_64',
|
||||
'x86_64': 'x86_64',
|
||||
'sparc': 'sparc',
|
||||
'sun4u': 'sparc',
|
||||
'x86': 'x86',
|
||||
'i386': 'x86',
|
||||
'i486': 'x86',
|
||||
'i586': 'x86',
|
||||
'i686': 'x86',
|
||||
'BePC': 'x86',
|
||||
'Intel': 'x86',
|
||||
'ppc' : 'ppc',
|
||||
'BeBox': 'ppc',
|
||||
'BeMac': 'ppc',
|
||||
'AMD64': 'x86_64',
|
||||
'x86_64': 'x86_64',
|
||||
'sparc': 'sparc',
|
||||
'sun4u': 'sparc',
|
||||
}
|
||||
|
||||
|
||||
# find host_machine value
|
||||
if 'PROCESSOR_ARCHITECTURE' in os.environ:
|
||||
host_machine = os.environ['PROCESSOR_ARCHITECTURE']
|
||||
host_machine = os.environ['PROCESSOR_ARCHITECTURE']
|
||||
else:
|
||||
host_machine = _platform.machine()
|
||||
host_machine = _platform.machine()
|
||||
host_machine = _machine_map.get(host_machine, 'generic')
|
||||
|
||||
default_machine = host_machine
|
||||
@@ -65,8 +65,7 @@ else:
|
||||
default_llvm = 'no'
|
||||
try:
|
||||
if target_platform != 'windows' and \
|
||||
subprocess.call(['llvm-config', '--version'],
|
||||
stdout=subprocess.PIPE) == 0:
|
||||
subprocess.call(['llvm-config', '--version'], stdout=subprocess.PIPE) == 0:
|
||||
default_llvm = 'yes'
|
||||
except:
|
||||
pass
|
||||
@@ -76,38 +75,29 @@ else:
|
||||
# Common options
|
||||
|
||||
def AddOptions(opts):
|
||||
try:
|
||||
from SCons.Variables.BoolVariable import BoolVariable as BoolOption
|
||||
except ImportError:
|
||||
from SCons.Options.BoolOption import BoolOption
|
||||
try:
|
||||
from SCons.Variables.EnumVariable import EnumVariable as EnumOption
|
||||
except ImportError:
|
||||
from SCons.Options.EnumOption import EnumOption
|
||||
opts.Add(EnumOption('build', 'build type', 'debug',
|
||||
allowed_values=('debug', 'checked', 'profile',
|
||||
'release')))
|
||||
opts.Add(BoolOption('verbose', 'verbose output', 'no'))
|
||||
opts.Add(EnumOption('machine', 'use machine-specific assembly code',
|
||||
default_machine,
|
||||
allowed_values=('generic', 'ppc', 'x86', 'x86_64')))
|
||||
opts.Add(EnumOption('platform', 'target platform', host_platform,
|
||||
allowed_values=('cygwin', 'darwin', 'freebsd', 'haiku',
|
||||
'linux', 'sunos', 'windows')))
|
||||
opts.Add(BoolOption('embedded', 'embedded build', 'no'))
|
||||
opts.Add(BoolOption('analyze',
|
||||
'enable static code analysis where available', 'no'))
|
||||
opts.Add('toolchain', 'compiler toolchain', default_toolchain)
|
||||
opts.Add(BoolOption('gles', 'EXPERIMENTAL: enable OpenGL ES support',
|
||||
'no'))
|
||||
opts.Add(BoolOption('llvm', 'use LLVM', default_llvm))
|
||||
opts.Add(BoolOption('openmp', 'EXPERIMENTAL: compile with openmp (swrast)',
|
||||
'no'))
|
||||
opts.Add(BoolOption('debug', 'DEPRECATED: debug build', 'yes'))
|
||||
opts.Add(BoolOption('profile', 'DEPRECATED: profile build', 'no'))
|
||||
opts.Add(BoolOption('quiet', 'DEPRECATED: profile build', 'yes'))
|
||||
opts.Add(BoolOption('texture_float',
|
||||
'enable floating-point textures and renderbuffers',
|
||||
'no'))
|
||||
if host_platform == 'windows':
|
||||
opts.Add('MSVC_VERSION', 'Microsoft Visual C/C++ version')
|
||||
try:
|
||||
from SCons.Variables.BoolVariable import BoolVariable as BoolOption
|
||||
except ImportError:
|
||||
from SCons.Options.BoolOption import BoolOption
|
||||
try:
|
||||
from SCons.Variables.EnumVariable import EnumVariable as EnumOption
|
||||
except ImportError:
|
||||
from SCons.Options.EnumOption import EnumOption
|
||||
opts.Add(EnumOption('build', 'build type', 'debug',
|
||||
allowed_values=('debug', 'checked', 'profile', 'release')))
|
||||
opts.Add(BoolOption('verbose', 'verbose output', 'no'))
|
||||
opts.Add(EnumOption('machine', 'use machine-specific assembly code', default_machine,
|
||||
allowed_values=('generic', 'ppc', 'x86', 'x86_64')))
|
||||
opts.Add(EnumOption('platform', 'target platform', host_platform,
|
||||
allowed_values=('cygwin', 'darwin', 'freebsd', 'haiku', 'linux', 'sunos', 'windows')))
|
||||
opts.Add(BoolOption('embedded', 'embedded build', 'no'))
|
||||
opts.Add('toolchain', 'compiler toolchain', default_toolchain)
|
||||
opts.Add(BoolOption('gles', 'EXPERIMENTAL: enable OpenGL ES support', 'no'))
|
||||
opts.Add(BoolOption('llvm', 'use LLVM', default_llvm))
|
||||
opts.Add(BoolOption('openmp', 'EXPERIMENTAL: compile with openmp (swrast)', 'no'))
|
||||
opts.Add(BoolOption('debug', 'DEPRECATED: debug build', 'yes'))
|
||||
opts.Add(BoolOption('profile', 'DEPRECATED: profile build', 'no'))
|
||||
opts.Add(BoolOption('quiet', 'DEPRECATED: profile build', 'yes'))
|
||||
opts.Add(BoolOption('texture_float', 'enable floating-point textures and renderbuffers', 'no'))
|
||||
if host_platform == 'windows':
|
||||
opts.Add(EnumOption('MSVS_VERSION', 'MS Visual C++ version', None, allowed_values=('7.1', '8.0', '9.0')))
|
||||
|
2
configs/.gitignore
vendored
Normal file
2
configs/.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
current
|
||||
autoconf
|
222
configs/current.in
Normal file
222
configs/current.in
Normal file
@@ -0,0 +1,222 @@
|
||||
# Autoconf configuration
|
||||
|
||||
# Pull in the defaults
|
||||
include $(TOP)/configs/default
|
||||
|
||||
# This is generated by configure
|
||||
CONFIG_NAME = autoconf
|
||||
|
||||
# Compiler and flags
|
||||
CC = @CC@
|
||||
CXX = @CXX@
|
||||
PIC_FLAGS = @PIC_FLAGS@
|
||||
DEFINES = @DEFINES@
|
||||
API_DEFINES = @API_DEFINES@
|
||||
SHARED_GLAPI = @SHARED_GLAPI@
|
||||
CFLAGS_NOVISIBILITY = @CPPFLAGS@ @CFLAGS@ \
|
||||
$(PIC_FLAGS) $(DEFINES)
|
||||
CXXFLAGS_NOVISIBILITY = @CPPFLAGS@ @CXXFLAGS@ \
|
||||
$(PIC_FLAGS) $(DEFINES)
|
||||
CFLAGS = $(CFLAGS_NOVISIBILITY) @VISIBILITY_CFLAGS@
|
||||
CXXFLAGS = $(CXXFLAGS_NOVISIBILITY) @VISIBILITY_CXXFLAGS@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
RADEON_CFLAGS = @RADEON_CFLAGS@
|
||||
RADEON_LIBS = @RADEON_LIBS@
|
||||
NOUVEAU_CFLAGS = @NOUVEAU_CFLAGS@
|
||||
NOUVEAU_LIBS = @NOUVEAU_LIBS@
|
||||
INTEL_LIBS = @INTEL_LIBS@
|
||||
INTEL_CFLAGS = @INTEL_CFLAGS@
|
||||
X11_LIBS = @X11_LIBS@
|
||||
X11_CFLAGS = @X11_CFLAGS@
|
||||
LLVM_BINDIR = @LLVM_BINDIR@
|
||||
LLVM_CFLAGS = @LLVM_CFLAGS@
|
||||
LLVM_CPPFLAGS = @LLVM_CPPFLAGS@
|
||||
LLVM_CXXFLAGS = @LLVM_CXXFLAGS@
|
||||
LLVM_LDFLAGS = @LLVM_LDFLAGS@
|
||||
LLVM_LIBDIR = @LLVM_LIBDIR@
|
||||
LLVM_LIBS = @LLVM_LIBS@
|
||||
LLVM_INCLUDEDIR = @LLVM_INCLUDEDIR@
|
||||
GLW_CFLAGS = @GLW_CFLAGS@
|
||||
GLX_TLS = @GLX_TLS@
|
||||
|
||||
# dlopen
|
||||
DLOPEN_LIBS = @DLOPEN_LIBS@
|
||||
CLOCK_LIB = @CLOCK_LIB@
|
||||
|
||||
# Source selection
|
||||
MESA_ASM_FILES = @MESA_ASM_FILES@
|
||||
|
||||
# Misc tools and flags
|
||||
MAKE = @MAKE@
|
||||
SHELL = @SHELL@
|
||||
MKLIB_OPTIONS = @MKLIB_OPTIONS@
|
||||
MKDEP = @MKDEP@
|
||||
MKDEP_OPTIONS = @MKDEP_OPTIONS@
|
||||
INSTALL = @INSTALL@
|
||||
AWK = @AWK@
|
||||
GREP = @GREP@
|
||||
NM = @NM@
|
||||
|
||||
# Perl
|
||||
PERL = @PERL@
|
||||
|
||||
# Indent (used for generating dispatch tables)
|
||||
INDENT = @INDENT@
|
||||
INDENT_FLAGS = @INDENT_FLAGS@
|
||||
|
||||
# Python and flags (generally only needed by the developers)
|
||||
PYTHON2 = @PYTHON2@
|
||||
PYTHON_FLAGS = -t -O -O
|
||||
|
||||
# Flex and Bison for GLSL compiler
|
||||
FLEX = @LEX@
|
||||
BISON = @YACC@
|
||||
|
||||
# Library names (base name)
|
||||
GL_LIB = @GL_LIB@
|
||||
GLU_LIB = @GLU_LIB@
|
||||
GLW_LIB = GLw
|
||||
OSMESA_LIB = @OSMESA_LIB@
|
||||
GLESv1_CM_LIB = GLESv1_CM
|
||||
GLESv2_LIB = GLESv2
|
||||
VG_LIB = OpenVG
|
||||
GLAPI_LIB = glapi
|
||||
|
||||
# Library names (actual file names)
|
||||
GL_LIB_NAME = @GL_LIB_NAME@
|
||||
GLU_LIB_NAME = @GLU_LIB_NAME@
|
||||
GLW_LIB_NAME = @GLW_LIB_NAME@
|
||||
OSMESA_LIB_NAME = @OSMESA_LIB_NAME@
|
||||
EGL_LIB_NAME = @EGL_LIB_NAME@
|
||||
GLESv1_CM_LIB_NAME = @GLESv1_CM_LIB_NAME@
|
||||
GLESv2_LIB_NAME = @GLESv2_LIB_NAME@
|
||||
VG_LIB_NAME = @VG_LIB_NAME@
|
||||
GLAPI_LIB_NAME = @GLAPI_LIB_NAME@
|
||||
|
||||
# Globs used to install the lib and all symlinks
|
||||
GL_LIB_GLOB = @GL_LIB_GLOB@
|
||||
GLU_LIB_GLOB = @GLU_LIB_GLOB@
|
||||
GLW_LIB_GLOB = @GLW_LIB_GLOB@
|
||||
EGL_LIB_GLOB = @EGL_LIB_GLOB@
|
||||
GLESv1_CM_LIB_GLOB = @GLESv1_CM_LIB_GLOB@
|
||||
GLESv2_LIB_GLOB = @GLESv2_LIB_GLOB@
|
||||
VG_LIB_GLOB = @VG_LIB_GLOB@
|
||||
GLAPI_LIB_GLOB = @GLAPI_LIB_GLOB@
|
||||
|
||||
# Directories to build
|
||||
LIB_DIR = @LIB_DIR@
|
||||
SRC_DIRS = @SRC_DIRS@
|
||||
DRIVER_DIRS = @DRIVER_DIRS@
|
||||
GALLIUM_DIRS = @GALLIUM_DIRS@
|
||||
GALLIUM_DRIVERS_DIRS = @GALLIUM_DRIVERS_DIRS@
|
||||
GALLIUM_WINSYS_DIRS = @GALLIUM_WINSYS_DIRS@
|
||||
GALLIUM_TARGET_DIRS = @GALLIUM_TARGET_DIRS@
|
||||
GALLIUM_STATE_TRACKERS_DIRS = @GALLIUM_STATE_TRACKERS_DIRS@
|
||||
GALLIUM_AUXILIARIES = $(TOP)/src/gallium/auxiliary/libgallium.a
|
||||
GALLIUM_DRIVERS = $(foreach DIR,$(GALLIUM_DRIVERS_DIRS),$(TOP)/src/gallium/drivers/$(DIR)/lib$(DIR).a)
|
||||
|
||||
# Driver specific build vars
|
||||
DRI_DIRS = @DRI_DIRS@
|
||||
EGL_PLATFORMS = @EGL_PLATFORMS@
|
||||
EGL_CLIENT_APIS = @EGL_CLIENT_APIS@
|
||||
|
||||
# Dependencies
|
||||
X11_INCLUDES = @X11_INCLUDES@
|
||||
|
||||
# GLw motif setup
|
||||
GLW_SOURCES = @GLW_SOURCES@
|
||||
MOTIF_CFLAGS = @MOTIF_CFLAGS@
|
||||
|
||||
# Library/program dependencies
|
||||
GL_LIB_DEPS = @GL_LIB_DEPS@
|
||||
OSMESA_LIB_DEPS = -L$(TOP)/$(LIB_DIR) @OSMESA_MESA_DEPS@ \
|
||||
@OSMESA_LIB_DEPS@
|
||||
EGL_LIB_DEPS = @EGL_LIB_DEPS@
|
||||
GLU_LIB_DEPS = -L$(TOP)/$(LIB_DIR) @GLU_MESA_DEPS@ \
|
||||
@GLU_LIB_DEPS@
|
||||
GLW_LIB_DEPS = -L$(TOP)/$(LIB_DIR) @GLW_MESA_DEPS@ \
|
||||
@GLW_LIB_DEPS@
|
||||
GLESv1_CM_LIB_DEPS = @GLESv1_CM_LIB_DEPS@
|
||||
GLESv2_LIB_DEPS = @GLESv2_LIB_DEPS@
|
||||
VG_LIB_DEPS = @VG_LIB_DEPS@
|
||||
GLAPI_LIB_DEPS = @GLAPI_LIB_DEPS@
|
||||
|
||||
# DRI dependencies
|
||||
DRI_LIB_DEPS = @DRI_LIB_DEPS@
|
||||
GALLIUM_DRI_LIB_DEPS = @GALLIUM_DRI_LIB_DEPS@
|
||||
LIBDRM_CFLAGS = @LIBDRM_CFLAGS@
|
||||
LIBDRM_LIBS = @LIBDRM_LIBS@
|
||||
DRI2PROTO_CFLAGS = @DRI2PROTO_CFLAGS@
|
||||
GLPROTO_CFLAGS = @GLPROTO_CFLAGS@
|
||||
EXPAT_INCLUDES = @EXPAT_INCLUDES@
|
||||
|
||||
# Autoconf directories
|
||||
prefix = @prefix@
|
||||
exec_prefix = @exec_prefix@
|
||||
libdir = @libdir@
|
||||
includedir = @includedir@
|
||||
|
||||
# Installation directories (for make install)
|
||||
INSTALL_DIR = $(prefix)
|
||||
INSTALL_LIB_DIR = $(libdir)
|
||||
INSTALL_INC_DIR = $(includedir)
|
||||
|
||||
# DRI installation directories
|
||||
DRI_DRIVER_INSTALL_DIR = @DRI_DRIVER_INSTALL_DIR@
|
||||
|
||||
# Where libGL will look for DRI hardware drivers
|
||||
DRI_DRIVER_SEARCH_DIR = @DRI_DRIVER_SEARCH_DIR@
|
||||
|
||||
# EGL driver install directory
|
||||
EGL_DRIVER_INSTALL_DIR = @EGL_DRIVER_INSTALL_DIR@
|
||||
|
||||
# XVMC library install directory
|
||||
XVMC_LIB_INSTALL_DIR=@XVMC_LIB_INSTALL_DIR@
|
||||
|
||||
# VDPAU library install directory
|
||||
VDPAU_LIB_INSTALL_DIR=@VDPAU_LIB_INSTALL_DIR@
|
||||
|
||||
# VA library install directory
|
||||
VA_LIB_INSTALL_DIR=@VA_LIB_INSTALL_DIR@
|
||||
|
||||
# Xorg driver install directory (for xorg state-tracker)
|
||||
XORG_DRIVER_INSTALL_DIR = @XORG_DRIVER_INSTALL_DIR@
|
||||
|
||||
# Path to OpenCL C library libclc
|
||||
LIBCLC_PATH = @LIBCLC_PATH@
|
||||
|
||||
# pkg-config substitutions
|
||||
GL_PC_REQ_PRIV = @GL_PC_REQ_PRIV@
|
||||
GL_PC_LIB_PRIV = @GL_PC_LIB_PRIV@
|
||||
GL_PC_CFLAGS = @GL_PC_CFLAGS@
|
||||
DRI_PC_REQ_PRIV = @DRI_PC_REQ_PRIV@
|
||||
GLU_PC_REQ = @GLU_PC_REQ@
|
||||
GLU_PC_REQ_PRIV = @GLU_PC_REQ_PRIV@
|
||||
GLU_PC_LIB_PRIV = @GLU_PC_LIB_PRIV@
|
||||
GLU_PC_CFLAGS = @GLU_PC_CFLAGS@
|
||||
GLW_PC_REQ_PRIV = @GLW_PC_REQ_PRIV@
|
||||
GLW_PC_LIB_PRIV = @GLW_PC_LIB_PRIV@
|
||||
GLW_PC_CFLAGS = @GLW_PC_CFLAGS@
|
||||
OSMESA_PC_REQ = @OSMESA_PC_REQ@
|
||||
OSMESA_PC_LIB_PRIV = @OSMESA_PC_LIB_PRIV@
|
||||
GLESv1_CM_PC_LIB_PRIV = @GLESv1_CM_PC_LIB_PRIV@
|
||||
GLESv2_PC_LIB_PRIV = @GLESv2_PC_LIB_PRIV@
|
||||
EGL_PC_REQ_PRIV = @GL_PC_REQ_PRIV@
|
||||
EGL_PC_LIB_PRIV = @GL_PC_LIB_PRIV@
|
||||
EGL_PC_CFLAGS = @GL_PC_CFLAGS@
|
||||
|
||||
XCB_DRI2_CFLAGS = @XCB_DRI2_CFLAGS@
|
||||
XCB_DRI2_LIBS = @XCB_DRI2_LIBS@
|
||||
LIBUDEV_CFLAGS = @LIBUDEV_CFLAGS@
|
||||
LIBUDEV_LIBS = @LIBUDEV_LIBS@
|
||||
WAYLAND_CFLAGS = @WAYLAND_CFLAGS@
|
||||
WAYLAND_LIBS = @WAYLAND_LIBS@
|
||||
|
||||
MESA_LLVM = @MESA_LLVM@
|
||||
|
||||
LLVM_VERSION = @LLVM_VERSION@
|
||||
|
||||
HAVE_XF86VIDMODE = @HAVE_XF86VIDMODE@
|
||||
|
||||
GALLIUM_PIPE_LOADER_DEFINES = @GALLIUM_PIPE_LOADER_DEFINES@
|
||||
GALLIUM_PIPE_LOADER_LIBS = @GALLIUM_PIPE_LOADER_LIBS@
|
180
configs/default
Normal file
180
configs/default
Normal file
@@ -0,0 +1,180 @@
|
||||
# Default/template configuration
|
||||
|
||||
# This is included by other config files which may override some
|
||||
# of these variables.
|
||||
# Think of this as a base class from which configs are derived.
|
||||
|
||||
|
||||
CONFIG_NAME = default
|
||||
|
||||
# Version info
|
||||
MESA_MAJOR=9
|
||||
MESA_MINOR=1
|
||||
MESA_TINY=0
|
||||
MESA_VERSION = $(MESA_MAJOR).$(MESA_MINOR).$(MESA_TINY)
|
||||
|
||||
# external projects. This should be useless now that we use libdrm.
|
||||
DRM_SOURCE_PATH=$(TOP)/../drm
|
||||
|
||||
# Compiler and flags
|
||||
CC = cc
|
||||
CXX = CC
|
||||
CFLAGS = -O
|
||||
CXXFLAGS = -O
|
||||
LDFLAGS =
|
||||
GLU_CFLAGS =
|
||||
GLX_TLS = no
|
||||
|
||||
# Compiler for building demos/tests/etc
|
||||
APP_CC = $(CC)
|
||||
APP_CXX = $(CXX)
|
||||
|
||||
# Misc tools and flags
|
||||
SHELL = /bin/sh
|
||||
MKLIB = $(SHELL) $(TOP)/bin/mklib
|
||||
MKLIB_OPTIONS =
|
||||
MKDEP = makedepend
|
||||
MKDEP_OPTIONS = -fdepend
|
||||
MAKE = make
|
||||
FLEX = flex
|
||||
BISON = bison
|
||||
PKG_CONFIG = pkg-config
|
||||
|
||||
# Use MINSTALL for installing libraries, INSTALL for everything else
|
||||
MINSTALL = $(SHELL) $(TOP)/bin/minstall
|
||||
INSTALL = $(MINSTALL)
|
||||
|
||||
# Tools for regenerating glapi (generally only needed by the developers)
|
||||
PYTHON2 = python
|
||||
PYTHON_FLAGS = -t -O -O
|
||||
INDENT = indent
|
||||
INDENT_FLAGS = -i4 -nut -br -brs -npcs -ce -T GLubyte -T GLbyte -T Bool
|
||||
|
||||
# Library names (base name)
|
||||
GL_LIB = GL
|
||||
GLU_LIB = GLU
|
||||
GLW_LIB = GLw
|
||||
OSMESA_LIB = OSMesa
|
||||
EGL_LIB = EGL
|
||||
GLESv1_CM_LIB = GLESv1_CM
|
||||
GLESv2_LIB = GLESv2
|
||||
VG_LIB = OpenVG
|
||||
GLAPI_LIB = glapi
|
||||
|
||||
# Library names (actual file names)
|
||||
GL_LIB_NAME = lib$(GL_LIB).so
|
||||
GLU_LIB_NAME = lib$(GLU_LIB).so
|
||||
GLW_LIB_NAME = lib$(GLW_LIB).so
|
||||
OSMESA_LIB_NAME = lib$(OSMESA_LIB).so
|
||||
EGL_LIB_NAME = lib$(EGL_LIB).so
|
||||
GLESv1_CM_LIB_NAME = lib$(GLESv1_CM_LIB).so
|
||||
GLESv2_LIB_NAME = lib$(GLESv2_LIB).so
|
||||
VG_LIB_NAME = lib$(VG_LIB).so
|
||||
GLAPI_LIB_NAME = lib$(GLAPI_LIB).so
|
||||
|
||||
# globs used to install the lib and all symlinks
|
||||
GL_LIB_GLOB = $(GL_LIB_NAME)*
|
||||
GLU_LIB_GLOB = $(GLU_LIB_NAME)*
|
||||
GLW_LIB_GLOB = $(GLW_LIB_NAME)*
|
||||
EGL_LIB_GLOB = $(EGL_LIB_NAME)*
|
||||
GLESv1_CM_LIB_GLOB = $(GLESv1_CM_LIB_NAME)*
|
||||
GLESv2_LIB_GLOB = $(GLESv2_LIB_NAME)*
|
||||
VG_LIB_GLOB = $(VG_LIB_NAME)*
|
||||
GLAPI_LIB_GLOB = $(GLAPI_LIB_NAME)*
|
||||
|
||||
# Optional assembly language optimization files for libGL
|
||||
MESA_ASM_FILES =
|
||||
|
||||
# GLw widget sources (Append "GLwMDrawA.c" here and add -lXm to GLW_LIB_DEPS in
|
||||
# order to build the Motif widget too)
|
||||
GLW_SOURCES = GLwDrawA.c
|
||||
MOTIF_CFLAGS = -I/usr/include/Motif1.2
|
||||
|
||||
|
||||
# Directories to build
|
||||
LIB_DIR = lib
|
||||
SRC_DIRS = glsl mapi/glapi mapi/vgapi mesa \
|
||||
gallium egl gallium/winsys gallium/targets
|
||||
DRIVER_DIRS = x11 osmesa
|
||||
|
||||
# Gallium directories and
|
||||
GALLIUM_DIRS = auxiliary drivers state_trackers
|
||||
GALLIUM_AUXILIARIES = $(TOP)/src/gallium/auxiliary/libgallium.a
|
||||
GALLIUM_DRIVERS_DIRS = softpipe trace rbug noop identity galahad i915 svga r300 nvfx nv50
|
||||
GALLIUM_DRIVERS = $(foreach DIR,$(GALLIUM_DRIVERS_DIRS),$(TOP)/src/gallium/drivers/$(DIR)/lib$(DIR).a)
|
||||
GALLIUM_WINSYS_DIRS = sw sw/xlib
|
||||
GALLIUM_TARGET_DIRS = libgl-xlib
|
||||
GALLIUM_STATE_TRACKERS_DIRS = glx vega
|
||||
|
||||
# native platforms EGL should support
|
||||
EGL_PLATFORMS = x11
|
||||
EGL_CLIENT_APIS = $(GL_LIB)
|
||||
|
||||
# Library dependencies
|
||||
#EXTRA_LIB_PATH ?=
|
||||
GL_LIB_DEPS = -lX11 -lXext -lm -lpthread
|
||||
EGL_LIB_DEPS = -ldl -lpthread
|
||||
OSMESA_LIB_DEPS = -L$(TOP)/$(LIB_DIR) -l$(GL_LIB)
|
||||
GLU_LIB_DEPS = -L$(TOP)/$(LIB_DIR) -l$(GL_LIB) -lm
|
||||
GLW_LIB_DEPS = -L$(TOP)/$(LIB_DIR) -l$(GL_LIB) -lXt -lX11
|
||||
GLESv1_CM_LIB_DEPS = -lpthread
|
||||
GLESv2_LIB_DEPS = -lpthread
|
||||
VG_LIB_DEPS = -lpthread
|
||||
GLAPI_LIB_DEPS = -lpthread
|
||||
|
||||
# Program dependencies - specific GL libraries added in Makefiles
|
||||
X11_LIBS = -lX11
|
||||
|
||||
DLOPEN_LIBS = -ldl
|
||||
|
||||
# Installation directories (for make install)
|
||||
INSTALL_DIR = /usr/local
|
||||
INSTALL_LIB_DIR = $(INSTALL_DIR)/$(LIB_DIR)
|
||||
INSTALL_INC_DIR = $(INSTALL_DIR)/include
|
||||
DRI_DRIVER_INSTALL_DIR = $(INSTALL_LIB_DIR)/dri
|
||||
|
||||
# Where libGL will look for DRI hardware drivers
|
||||
DRI_DRIVER_SEARCH_DIR = $(DRI_DRIVER_INSTALL_DIR)
|
||||
|
||||
# EGL driver install directory
|
||||
EGL_DRIVER_INSTALL_DIR = $(INSTALL_LIB_DIR)/egl
|
||||
|
||||
# Xorg driver install directory (for xorg state-tracker)
|
||||
XORG_DRIVER_INSTALL_DIR = $(INSTALL_LIB_DIR)/xorg/modules/drivers
|
||||
|
||||
# pkg-config substitutions
|
||||
GL_PC_REQ_PRIV =
|
||||
GL_PC_LIB_PRIV =
|
||||
GL_PC_CFLAGS =
|
||||
DRI_PC_REQ_PRIV =
|
||||
GLU_PC_REQ = gl
|
||||
GLU_PC_REQ_PRIV =
|
||||
GLU_PC_LIB_PRIV =
|
||||
GLU_PC_CFLAGS =
|
||||
GLW_PC_REQ_PRIV =
|
||||
GLW_PC_LIB_PRIV =
|
||||
GLW_PC_CFLAGS =
|
||||
OSMESA_PC_REQ =
|
||||
OSMESA_PC_LIB_PRIV =
|
||||
GLESv1_CM_PC_REQ_PRIV =
|
||||
GLESv1_CM_PC_LIB_PRIV =
|
||||
GLESv1_CM_PC_CFLAGS =
|
||||
GLESv2_PC_REQ_PRIV =
|
||||
GLESv2_PC_LIB_PRIV =
|
||||
GLESv2_PC_CFLAGS =
|
||||
VG_PC_REQ_PRIV =
|
||||
VG_PC_LIB_PRIV =
|
||||
VG_PC_CFLAGS =
|
||||
|
||||
# default targets
|
||||
# this helps reduce the mismatch between our automake Makefiles and the old
|
||||
# custom Makefiles while we transition.
|
||||
|
||||
all: default
|
||||
|
||||
am--refresh:
|
||||
|
||||
distclean: clean
|
||||
|
||||
check:
|
||||
test:
|
2188
configure.ac
2188
configure.ac
File diff suppressed because it is too large
Load Diff
325
docs/GL3.txt
325
docs/GL3.txt
@@ -7,235 +7,154 @@ infrastructure is complete but it may be the case that few (if any) drivers
|
||||
implement the features.
|
||||
|
||||
|
||||
OpenGL Core and Compatibility context support
|
||||
|
||||
OpenGL 3.1 and later versions are only supported with the Core profile.
|
||||
There are no plans to support GL_ARB_compatibility. The last supported OpenGL
|
||||
version with all deprecated features is 3.0. Some of the later GL features
|
||||
are exposed in the 3.0 context as extensions.
|
||||
|
||||
|
||||
Feature Status
|
||||
----------------------------------------------------- ------------------------
|
||||
|
||||
GL 3.0, GLSL 1.30 --- all DONE: i965, nv50, nvc0, r600, radeonsi, llvmpipe, softpipe
|
||||
GL 3.0:
|
||||
|
||||
glBindFragDataLocation, glGetFragDataLocation DONE
|
||||
Conditional rendering (GL_NV_conditional_render) DONE ()
|
||||
Map buffer subranges (GL_ARB_map_buffer_range) DONE ()
|
||||
Clamping controls (GL_ARB_color_buffer_float) DONE ()
|
||||
Float textures, renderbuffers (GL_ARB_texture_float) DONE ()
|
||||
GL_EXT_packed_float DONE ()
|
||||
GL_EXT_texture_shared_exponent DONE ()
|
||||
Float depth buffers (GL_ARB_depth_buffer_float) DONE ()
|
||||
Framebuffer objects (GL_ARB_framebuffer_object) DONE ()
|
||||
GL_ARB_half_float_pixel DONE (all drivers)
|
||||
GL_ARB_half_float_vertex DONE ()
|
||||
GL_EXT_texture_integer DONE ()
|
||||
GL_EXT_texture_array DONE ()
|
||||
Per-buffer blend and masks (GL_EXT_draw_buffers2) DONE ()
|
||||
GL_EXT_texture_compression_rgtc DONE ()
|
||||
GL_ARB_texture_rg DONE ()
|
||||
Transform feedback (GL_EXT_transform_feedback) DONE ()
|
||||
Vertex array objects (GL_ARB_vertex_array_object) DONE ()
|
||||
sRGB framebuffer format (GL_EXT_framebuffer_sRGB) DONE ()
|
||||
glClearBuffer commands DONE
|
||||
glGetStringi command DONE
|
||||
glTexParameterI, glGetTexParameterI commands DONE
|
||||
glVertexAttribI commands DONE
|
||||
Depth format cube textures DONE ()
|
||||
GLX_ARB_create_context (GLX 1.4 is required) DONE
|
||||
Multisample anti-aliasing DONE (llvmpipe (*), softpipe (*))
|
||||
|
||||
(*) llvmpipe and softpipe have fake Multisample anti-aliasing support
|
||||
GLSL 1.30 DONE
|
||||
glBindFragDataLocation, glGetFragDataLocation DONE
|
||||
Conditional rendering (GL_NV_conditional_render) DONE (i965, r300, r600, swrast)
|
||||
Map buffer subranges (GL_ARB_map_buffer_range) DONE (i965, r300, r600, swrast)
|
||||
Clamping controls (GL_ARB_color_buffer_float) DONE (i965, r300, r600)
|
||||
Float textures, renderbuffers (GL_ARB_texture_float) DONE (i965, r300, r600)
|
||||
GL_EXT_packed_float DONE (i965, r600)
|
||||
GL_EXT_texture_shared_exponent DONE (i965, r600, swrast)
|
||||
Float depth buffers (GL_ARB_depth_buffer_float) DONE (i965, r600)
|
||||
Framebuffer objects (GL_ARB_framebuffer_object) DONE (i965, r300, r600, swrast)
|
||||
Half-float DONE
|
||||
Non-normalized Integer texture/framebuffer formats DONE (i965, r600)
|
||||
1D/2D Texture arrays DONE
|
||||
Per-buffer blend and masks (GL_EXT_draw_buffers2) DONE (i965, r600, swrast)
|
||||
GL_EXT_texture_compression_rgtc DONE (i965, r300, r600, swrast)
|
||||
Red and red/green texture formats DONE (i965, swrast, gallium)
|
||||
Transform feedback (GL_EXT_transform_feedback) DONE (i965, r600)
|
||||
Vertex array objects (GL_APPLE_vertex_array_object) DONE (i965, r300, r600, swrast)
|
||||
sRGB framebuffer format (GL_EXT_framebuffer_sRGB) DONE (i965, r600)
|
||||
glClearBuffer commands DONE
|
||||
glGetStringi command DONE
|
||||
glTexParameterI, glGetTexParameterI commands DONE
|
||||
glVertexAttribI commands DONE
|
||||
Depth format cube textures DONE
|
||||
GLX_ARB_create_context (GLX 1.4 is required) DONE
|
||||
|
||||
|
||||
GL 3.1, GLSL 1.40 --- all DONE: i965, nv50, nvc0, r600, radeonsi, llvmpipe, softpipe
|
||||
GL 3.1:
|
||||
|
||||
Forward compatible context support/deprecations DONE ()
|
||||
Instanced drawing (GL_ARB_draw_instanced) DONE ()
|
||||
Buffer copying (GL_ARB_copy_buffer) DONE ()
|
||||
Primitive restart (GL_NV_primitive_restart) DONE ()
|
||||
16 vertex texture image units DONE ()
|
||||
Texture buffer objs (GL_ARB_texture_buffer_object) DONE for OpenGL 3.1 contexts ()
|
||||
Rectangular textures (GL_ARB_texture_rectangle) DONE ()
|
||||
Uniform buffer objs (GL_ARB_uniform_buffer_object) DONE ()
|
||||
Signed normalized textures (GL_EXT_texture_snorm) DONE ()
|
||||
GLSL 1.40 DONE (i965)
|
||||
Forward compatibile context support/deprecations DONE (i965)
|
||||
Instanced drawing (GL_ARB_draw_instanced) DONE (i965, gallium, swrast)
|
||||
Buffer copying (GL_ARB_copy_buffer) DONE (i965, r300, r600, swrast)
|
||||
Primitive restart (GL_NV_primitive_restart) DONE (i965, r600)
|
||||
16 vertex texture image units DONE
|
||||
Texture buffer objs (GL_ARB_texture_buffer_object) DONE for OpenGL 3.1 contexts (i965)
|
||||
Rectangular textures (GL_ARB_texture_rectangle) DONE (i965, r300, r600, swrast)
|
||||
Uniform buffer objs (GL_ARB_uniform_buffer_object) DONE (i965)
|
||||
Signed normalized textures (GL_EXT_texture_snorm) DONE (i965, r300, r600)
|
||||
|
||||
|
||||
GL 3.2, GLSL 1.50 --- all DONE: i965, nv50, nvc0, r600, radeonsi, llvmpipe, softpipe
|
||||
GL 3.2:
|
||||
|
||||
Core/compatibility profiles DONE
|
||||
Geometry shaders DONE ()
|
||||
BGRA vertex order (GL_ARB_vertex_array_bgra) DONE ()
|
||||
Base vertex offset(GL_ARB_draw_elements_base_vertex) DONE ()
|
||||
Frag shader coord (GL_ARB_fragment_coord_conventions) DONE ()
|
||||
Provoking vertex (GL_ARB_provoking_vertex) DONE ()
|
||||
Seamless cubemaps (GL_ARB_seamless_cube_map) DONE ()
|
||||
Multisample textures (GL_ARB_texture_multisample) DONE ()
|
||||
Frag depth clamp (GL_ARB_depth_clamp) DONE ()
|
||||
Fence objects (GL_ARB_sync) DONE ()
|
||||
GLX_ARB_create_context_profile DONE
|
||||
Core/compatibility profiles DONE
|
||||
GLSL 1.50 not started
|
||||
Geometry shaders (GL_ARB_geometry_shader4) partially done (Zack)
|
||||
BGRA vertex order (GL_ARB_vertex_array_bgra) DONE (i965, r300, r600, swrast)
|
||||
Base vertex offset(GL_ARB_draw_elements_base_vertex) DONE (i965, r300, r600, swrast)
|
||||
Frag shader coord (GL_ARB_fragment_coord_conventions) DONE (i965, r300, r600, swrast)
|
||||
Provoking vertex (GL_ARB_provoking_vertex) DONE (i965, r300, r600, swrast)
|
||||
Seamless cubemaps (GL_ARB_seamless_cube_map) DONE (i965, r600)
|
||||
Multisample textures (GL_ARB_texture_multisample) not started
|
||||
Frag depth clamp (GL_ARB_depth_clamp) DONE (i965, r600, swrast)
|
||||
Fence objects (GL_ARB_sync) DONE (i965, r300, r600, swrast)
|
||||
GLX_ARB_create_context_profile DONE
|
||||
|
||||
|
||||
GL 3.3, GLSL 3.30 --- all DONE: i965, nv50, nvc0, r600, radeonsi, llvmpipe, softpipe
|
||||
GL 3.3:
|
||||
|
||||
GL_ARB_blend_func_extended DONE ()
|
||||
GL_ARB_explicit_attrib_location DONE (all drivers that support GLSL)
|
||||
GL_ARB_occlusion_query2 DONE ()
|
||||
GL_ARB_sampler_objects DONE (all drivers)
|
||||
GL_ARB_shader_bit_encoding DONE ()
|
||||
GL_ARB_texture_rgb10_a2ui DONE ()
|
||||
GL_ARB_texture_swizzle DONE ()
|
||||
GL_ARB_timer_query DONE ()
|
||||
GL_ARB_instanced_arrays DONE ()
|
||||
GL_ARB_vertex_type_2_10_10_10_rev DONE ()
|
||||
GLSL 3.30 new features in this version pretty much done
|
||||
GL_ARB_blend_func_extended DONE (i965, r600, softpipe)
|
||||
GL_ARB_explicit_attrib_location DONE (i915, i965, r300, r600, swrast)
|
||||
GL_ARB_occlusion_query2 DONE (i965, r300, r600, swrast)
|
||||
GL_ARB_sampler_objects DONE (i965, r300, r600)
|
||||
GL_ARB_shader_bit_encoding DONE
|
||||
GL_ARB_texture_rgb10_a2ui DONE (i965, r600)
|
||||
GL_ARB_texture_swizzle DONE (same as EXT version) (i965, r300, r600, swrast)
|
||||
GL_ARB_timer_query DONE (i965, r600)
|
||||
GL_ARB_instanced_arrays DONE (i965, r300, r600)
|
||||
GL_ARB_vertex_type_2_10_10_10_rev DONE (i965, r600)
|
||||
|
||||
|
||||
GL 4.0, GLSL 4.00:
|
||||
GL 4.0:
|
||||
|
||||
GL_ARB_draw_buffers_blend DONE (i965, nv50, nvc0, r600, radeonsi, llvmpipe, softpipe)
|
||||
GL_ARB_draw_indirect DONE (i965, nvc0, r600, radeonsi, llvmpipe, softpipe)
|
||||
GL_ARB_gpu_shader5 DONE (i965, nvc0)
|
||||
- 'precise' qualifier DONE
|
||||
- Dynamically uniform sampler array indices DONE (r600)
|
||||
- Dynamically uniform UBO array indices DONE (r600)
|
||||
- Implicit signed -> unsigned conversions DONE
|
||||
- Fused multiply-add DONE ()
|
||||
- Packing/bitfield/conversion functions DONE (r600, radeonsi)
|
||||
- Enhanced textureGather DONE (r600, radeonsi)
|
||||
- Geometry shader instancing DONE (r600)
|
||||
- Geometry shader multiple streams DONE ()
|
||||
- Enhanced per-sample shading DONE (r600, radeonsi)
|
||||
- Interpolation functions DONE (r600)
|
||||
- New overload resolution rules DONE
|
||||
GL_ARB_gpu_shader_fp64 DONE (nvc0, softpipe)
|
||||
GL_ARB_sample_shading DONE (i965, nv50, nvc0, r600, radeonsi)
|
||||
GL_ARB_shader_subroutine started (Dave)
|
||||
GL_ARB_tessellation_shader started (Chris, Ilia)
|
||||
GL_ARB_texture_buffer_object_rgb32 DONE (i965, nvc0, r600, radeonsi, llvmpipe, softpipe)
|
||||
GL_ARB_texture_cube_map_array DONE (i965, nv50, nvc0, r600, radeonsi, llvmpipe, softpipe)
|
||||
GL_ARB_texture_gather DONE (i965, nv50, nvc0, r600, radeonsi, llvmpipe)
|
||||
GL_ARB_texture_query_lod DONE (i965, nv50, nvc0, r600, radeonsi)
|
||||
GL_ARB_transform_feedback2 DONE (i965, nv50, nvc0, r600, radeonsi, llvmpipe, softpipe)
|
||||
GL_ARB_transform_feedback3 DONE (i965, nv50, nvc0, r600, radeonsi, llvmpipe, softpipe)
|
||||
GLSL 4.0 not started
|
||||
GL_ARB_texture_query_lod not started
|
||||
GL_ARB_draw_buffers_blend DONE (i965, r600, softpipe)
|
||||
GL_ARB_draw_indirect not started
|
||||
GL_ARB_gpu_shader5 not started
|
||||
GL_ARB_gpu_shader_fp64 not started
|
||||
GL_ARB_sample_shading not started
|
||||
GL_ARB_shader_subroutine not started
|
||||
GL_ARB_tessellation_shader not started
|
||||
GL_ARB_texture_buffer_object_rgb32 DONE (softpipe)
|
||||
GL_ARB_texture_cube_map_array DONE (i965, softpipe)
|
||||
GL_ARB_texture_gather not started
|
||||
GL_ARB_transform_feedback2 DONE
|
||||
GL_ARB_transform_feedback3 DONE
|
||||
|
||||
|
||||
GL 4.1, GLSL 4.10:
|
||||
GL 4.1:
|
||||
|
||||
GL_ARB_ES2_compatibility DONE (i965, nv50, nvc0, r600, radeonsi, llvmpipe, softpipe)
|
||||
GL_ARB_get_program_binary DONE (0 binary formats)
|
||||
GL_ARB_separate_shader_objects DONE (all drivers)
|
||||
GL_ARB_shader_precision started (Micah)
|
||||
GL_ARB_vertex_attrib_64bit DONE (nvc0, softpipe)
|
||||
GL_ARB_viewport_array DONE (i965, nv50, nvc0, r600, llvmpipe)
|
||||
GLSL 4.1 not started
|
||||
GL_ARB_ES2_compatibility DONE (i965, r300, r600)
|
||||
GL_ARB_get_program_binary not started
|
||||
GL_ARB_separate_shader_objects some infrastructure done
|
||||
GL_ARB_shader_precision not started
|
||||
GL_ARB_vertex_attrib_64bit not started
|
||||
GL_ARB_viewport_array not started
|
||||
|
||||
|
||||
GL 4.2, GLSL 4.20:
|
||||
GL 4.2:
|
||||
|
||||
GL_ARB_texture_compression_bptc DONE (i965, nvc0, r600, radeonsi)
|
||||
GL_ARB_compressed_texture_pixel_storage DONE (all drivers)
|
||||
GL_ARB_shader_atomic_counters DONE (i965)
|
||||
GL_ARB_texture_storage DONE (all drivers)
|
||||
GL_ARB_transform_feedback_instanced DONE (i965, nv50, nvc0, r600, radeonsi, llvmpipe, softpipe)
|
||||
GL_ARB_base_instance DONE (i965, nv50, nvc0, r600, radeonsi, llvmpipe, softpipe)
|
||||
GL_ARB_shader_image_load_store in progress (curro)
|
||||
GL_ARB_conservative_depth DONE (all drivers that support GLSL 1.30)
|
||||
GL_ARB_shading_language_420pack DONE (all drivers that support GLSL 1.30)
|
||||
GL_ARB_shading_language_packing DONE (all drivers)
|
||||
GL_ARB_internalformat_query DONE (i965, nv50, nvc0, r600, radeonsi, llvmpipe, softpipe)
|
||||
GL_ARB_map_buffer_alignment DONE (all drivers)
|
||||
GLSL 4.2 not started
|
||||
GL_ARB_texture_compression_bptc not started
|
||||
GL_ARB_compressed_texture_pixel_storage not started
|
||||
GL_ARB_shader_atomic_counters not started
|
||||
GL_ARB_texture_storage DONE (r300, r600, swrast, gallium)
|
||||
GL_ARB_transform_feedback_instanced DONE
|
||||
GL_ARB_base_instance DONE (nv50, nvc0, r600, radeonsi)
|
||||
GL_ARB_shader_image_load_store not started
|
||||
GL_ARB_conservative_depth DONE (softpipe)
|
||||
GL_ARB_shading_language_420pack not started
|
||||
GL_ARB_internalformat_query not started
|
||||
GL_ARB_map_buffer_alignment DONE (r300, r600, radeonsi)
|
||||
|
||||
|
||||
GL 4.3, GLSL 4.30:
|
||||
GL 4.3:
|
||||
|
||||
GL_ARB_arrays_of_arrays started (Timothy)
|
||||
GL_ARB_ES3_compatibility DONE (all drivers that support GLSL 3.30)
|
||||
GL_ARB_clear_buffer_object DONE (all drivers)
|
||||
GL_ARB_compute_shader in progress (jljusten)
|
||||
GL_ARB_copy_image DONE (i965)
|
||||
GL_KHR_debug DONE (all drivers)
|
||||
GL_ARB_explicit_uniform_location DONE (all drivers that support GLSL)
|
||||
GL_ARB_fragment_layer_viewport DONE (nv50, nvc0, r600, llvmpipe)
|
||||
GL_ARB_framebuffer_no_attachments not started
|
||||
GL_ARB_internalformat_query2 not started
|
||||
GL_ARB_invalidate_subdata DONE (all drivers)
|
||||
GL_ARB_multi_draw_indirect DONE (i965, nvc0, r600, radeonsi, llvmpipe, softpipe)
|
||||
GL_ARB_program_interface_query DONE (all drivers)
|
||||
GL_ARB_robust_buffer_access_behavior not started
|
||||
GL_ARB_shader_image_size in progress (Martin Peres)
|
||||
GL_ARB_shader_storage_buffer_object not started
|
||||
GL_ARB_stencil_texturing DONE (i965/gen8+, nv50, nvc0, r600, radeonsi, llvmpipe, softpipe)
|
||||
GL_ARB_texture_buffer_range DONE (nv50, nvc0, i965, r600, radeonsi, llvmpipe)
|
||||
GL_ARB_texture_query_levels DONE (all drivers that support GLSL 1.30)
|
||||
GL_ARB_texture_storage_multisample DONE (all drivers that support GL_ARB_texture_multisample)
|
||||
GL_ARB_texture_view DONE (i965, nv50, nvc0, llvmpipe, softpipe)
|
||||
GL_ARB_vertex_attrib_binding DONE (all drivers)
|
||||
GLSL 4.3 not started
|
||||
ARB_arrays_of_arrays not started
|
||||
ARB_ES3_compatibility not started
|
||||
ARB_clear_buffer_object not started
|
||||
ARB_compute_shader started (gallium)
|
||||
ARB_copy_image not started
|
||||
KHR_debug some work done (ARB_debug_output)
|
||||
ARB_explicit_uniform_location not started
|
||||
ARB_fragment_layer_viewport not started
|
||||
ARB_framebuffer_no_attachments not started
|
||||
ARB_internalformat_query2 not started
|
||||
ARB_invalidate_subdata not started
|
||||
ARB_multi_draw_indirect not started
|
||||
ARB_program_interface_query not started
|
||||
ARB_robust_buffer_access_behavior not started
|
||||
ARB_shader_image_size not started
|
||||
ARB_shader_storage_buffer_object not started
|
||||
ARB_stencil_texturing not started
|
||||
ARB_texture_buffer_range not started
|
||||
ARB_texture_query_levels not started
|
||||
ARB_texture_storage_multisample not started
|
||||
ARB_texture_view not started
|
||||
ARB_vertex_attrib_binding not started
|
||||
|
||||
|
||||
GL 4.4, GLSL 4.40:
|
||||
|
||||
GL_MAX_VERTEX_ATTRIB_STRIDE DONE (all drivers)
|
||||
GL_ARB_buffer_storage DONE (i965, nv50, nvc0, r600, radeonsi)
|
||||
GL_ARB_clear_texture DONE (i965)
|
||||
GL_ARB_enhanced_layouts not started
|
||||
GL_ARB_multi_bind DONE (all drivers)
|
||||
GL_ARB_query_buffer_object not started
|
||||
GL_ARB_texture_mirror_clamp_to_edge DONE (i965, nv50, nvc0, r600, radeonsi, llvmpipe, softpipe)
|
||||
GL_ARB_texture_stencil8 DONE (nv50, nvc0, r600, radeonsi, llvmpipe, softpipe)
|
||||
GL_ARB_vertex_type_10f_11f_11f_rev DONE (i965, nv50, nvc0, r600, radeonsi, llvmpipe, softpipe)
|
||||
|
||||
GL 4.5, GLSL 4.50:
|
||||
|
||||
GL_ARB_ES3_1_compatibility not started
|
||||
GL_ARB_clip_control DONE (i965, nv50, nvc0, r600, radeonsi, llvmpipe, softpipe)
|
||||
GL_ARB_conditional_render_inverted DONE (i965, nv50, nvc0, llvmpipe, softpipe)
|
||||
GL_ARB_cull_distance not started
|
||||
GL_ARB_derivative_control DONE (i965, nv50, nvc0, r600)
|
||||
GL_ARB_direct_state_access DONE (all drivers)
|
||||
- Transform Feedback object DONE
|
||||
- Buffer object DONE
|
||||
- Framebuffer object DONE
|
||||
- Renderbuffer object DONE
|
||||
- Texture object DONE
|
||||
- Vertex array object DONE
|
||||
- Sampler object DONE
|
||||
- Program Pipeline object DONE
|
||||
- Query object DONE (will require changes when GL_ARB_query_buffer_object lands)
|
||||
GL_ARB_get_texture_sub_image started (Brian Paul)
|
||||
GL_ARB_shader_texture_image_samples not started
|
||||
GL_ARB_texture_barrier DONE (nv50, nvc0, r600, radeonsi)
|
||||
GL_KHR_context_flush_control DONE (all - but needs GLX/EXT extension to be useful)
|
||||
GL_KHR_robust_buffer_access_behavior not started
|
||||
GL_KHR_robustness 90% done (the ARB variant)
|
||||
GL_EXT_shader_integer_mix DONE (all drivers that support GLSL)
|
||||
|
||||
These are the extensions cherry-picked to make GLES 3.1
|
||||
GLES3.1, GLSL ES 3.1
|
||||
GL_ARB_arrays_of_arrays started (Timothy)
|
||||
GL_ARB_compute_shader in progress (jljusten)
|
||||
GL_ARB_draw_indirect DONE (i965, nvc0, r600, radeonsi, llvmpipe, softpipe)
|
||||
GL_ARB_explicit_uniform_location DONE (all drivers that support GLSL)
|
||||
GL_ARB_framebuffer_no_attachments not started
|
||||
GL_ARB_program_interface_query DONE (all drivers)
|
||||
GL_ARB_shader_atomic_counters DONE (i965)
|
||||
GL_ARB_shader_image_load_store in progress (curro)
|
||||
GL_ARB_shader_image_size in progress (Martin Peres)
|
||||
GL_ARB_shader_storage_buffer_object not started
|
||||
GL_ARB_shading_language_packing DONE (all drivers)
|
||||
GL_ARB_separate_shader_objects DONE (all drivers)
|
||||
GL_ARB_stencil_texturing DONE (i965/gen8+, nv50, nvc0, r600, radeonsi, llvmpipe, softpipe)
|
||||
Multisample textures (GL_ARB_texture_multisample) DONE (i965, nv50, nvc0, r600, radeonsi, llvmpipe, softpipe)
|
||||
GL_ARB_texture_storage_multisample DONE (all drivers that support GL_ARB_texture_multisample)
|
||||
GL_ARB_vertex_attrib_binding DONE (all drivers)
|
||||
GS5 Enhanced textureGather DONE (i965, nvc0, r600, radeonsi)
|
||||
GS5 Packing/bitfield/conversion functions DONE (i965, nvc0, r600, radeonsi)
|
||||
GL_EXT_shader_integer_mix DONE (all drivers that support GLSL)
|
||||
|
||||
Additional functions not covered above:
|
||||
glMemoryBarrierByRegion
|
||||
glGetTexLevelParameter[fi]v - needs updates to restrict to GLES enums
|
||||
glGetBooleani_v - needs updates to restrict to GLES enums
|
||||
|
||||
More info about these features and the work involved can be found at
|
||||
http://dri.freedesktop.org/wiki/MissingFunctionality
|
||||
|
@@ -12,7 +12,7 @@ Contact
|
||||
|
||||
Status
|
||||
|
||||
Obsolete.
|
||||
Shipping (since Mesa version 2.2)
|
||||
|
||||
Version
|
||||
|
@@ -16,7 +16,7 @@ IP Status
|
||||
|
||||
Status
|
||||
|
||||
DEPRECATED - Support removed in Mesa 10.1.
|
||||
Shipping in Mesa 7.1
|
||||
|
||||
Version
|
||||
|
256
docs/README.CYGWIN
Normal file
256
docs/README.CYGWIN
Normal file
@@ -0,0 +1,256 @@
|
||||
|
||||
Mesa Cygwin/X11 Information
|
||||
|
||||
|
||||
WARNING
|
||||
=======
|
||||
|
||||
If you installed X11 (packages xorg-x11-devel and xorg-x11-bin-dlls ) with the
|
||||
latest setup.exe from Cygwin the GL (Mesa) libraries and include are already
|
||||
installed in /usr/X11R6.
|
||||
|
||||
The following will explain how to "replace" them.
|
||||
|
||||
Installation
|
||||
============
|
||||
|
||||
How to compile Mesa on Cygwin/X11 systems:
|
||||
|
||||
1. Shared libs:
|
||||
type 'make cygwin-sl'.
|
||||
|
||||
When finished, the Mesa DLL will be in the Mesa-x.y/lib/ and
|
||||
Mesa-x.y/bin directories.
|
||||
|
||||
|
||||
2. Static libs:
|
||||
type 'make cygwin-static'.
|
||||
When finished, the Mesa libraries will be in the Mesa-x.y/lib/ directory.
|
||||
|
||||
Header and library files:
|
||||
After you've compiled Mesa and tried the demos I recommend the following
|
||||
procedure for "installing" Mesa.
|
||||
|
||||
Copy the Mesa include/GL directory to /usr/X11R6/include:
|
||||
cp -a include/GL /usr/X11R6/include
|
||||
|
||||
Copy the Mesa library files to /usr/X11R6/lib:
|
||||
cp -a lib/* /usr/X11R6ocal/lib
|
||||
|
||||
Copy the Mesa bin files (used by the DLL stuff) to /usr/X11R6/bin:
|
||||
cp -a lib/cyg* /usr/X11R6/bin
|
||||
|
||||
Xt/Motif widgets:
|
||||
If you want to use Mesa or OpenGL in your Xt/Motif program you can build
|
||||
the widgets found in either the widgets-mesa or widgets-sgi directories.
|
||||
The former were written for Mesa and the later are the original SGI
|
||||
widgets. Look in those directories for more information.
|
||||
For the Motif widgets you must have downloaded the lesstif package.
|
||||
|
||||
|
||||
Using the library
|
||||
=================
|
||||
|
||||
Configuration options:
|
||||
The file src/mesa/main/config.h has many parameters which you can adjust
|
||||
such as maximum number of lights, clipping planes, maximum texture size,
|
||||
etc. In particular, you may want to change DEPTH_BITS from 16 to 32
|
||||
if a 16-bit depth buffer isn't precise enough for your application.
|
||||
|
||||
|
||||
Shared libraries:
|
||||
If you compile shared libraries (Win32 DLLS) you may have to set an
|
||||
environment variable to specify where the Mesa libraries are located.
|
||||
Set the PATH variable to include /your-dir/Mesa-2.6/bin.
|
||||
Otherwise, when you try to run a demo it may fail with a message saying
|
||||
that one or more DLL couldn't be found.
|
||||
|
||||
|
||||
Xt/Motif Widgets:
|
||||
Two versions of the Xt/Motif OpenGL drawing area widgets are included:
|
||||
|
||||
widgets-sgi/ SGI's stock widgets
|
||||
widgets-mesa/ Mesa-tuned widgets
|
||||
|
||||
Look in those directories for details
|
||||
|
||||
|
||||
Togl:
|
||||
Togl is an OpenGL/Mesa widget for Tcl/Tk.
|
||||
See http://togl.sourceforge.net for more information.
|
||||
|
||||
|
||||
|
||||
X Display Modes:
|
||||
Mesa supports RGB(A) rendering into almost any X visual type and depth.
|
||||
|
||||
The glXChooseVisual function tries its best to pick an appropriate visual
|
||||
for the given attribute list. However, if this doesn't suit your needs
|
||||
you can force Mesa to use any X visual you want (any supported by your
|
||||
X server that is) by setting the MESA_RGB_VISUAL and MESA_CI_VISUAL
|
||||
environment variables. When an RGB visual is requested, glXChooseVisual
|
||||
will first look if the MESA_RGB_VISUAL variable is defined. If so, it
|
||||
will try to use the specified visual. Similarly, when a color index
|
||||
visual is requested, glXChooseVisual will look for the MESA_CI_VISUAL
|
||||
variable.
|
||||
|
||||
The format of accepted values is: <visual-class> <depth>
|
||||
Here are some examples:
|
||||
|
||||
using the C-shell:
|
||||
% setenv MESA_RGB_VISUAL "TrueColor 8" // 8-bit TrueColor
|
||||
% setenv MESA_CI_VISUAL "PseudoColor 12" // 12-bit PseudoColor
|
||||
% setenv MESA_RGB_VISUAL "PseudoColor 8" // 8-bit PseudoColor
|
||||
|
||||
using the KornShell:
|
||||
$ export MESA_RGB_VISUAL="TrueColor 8"
|
||||
$ export MESA_CI_VISUAL="PseudoColor 12"
|
||||
$ export MESA_RGB_VISUAL="PseudoColor 8"
|
||||
|
||||
|
||||
Double buffering:
|
||||
Mesa can use either an X Pixmap or XImage as the backbuffer when in
|
||||
double buffer mode. Using GLX, the default is to use an XImage. The
|
||||
MESA_BACK_BUFFER environment variable can override this. The valid
|
||||
values for MESA_BACK_BUFFER are: Pixmap and XImage (only the first
|
||||
letter is checked, case doesn't matter).
|
||||
|
||||
A pixmap is faster when drawing simple lines and polygons while an
|
||||
XImage is faster when Mesa has to do pixel-by-pixel rendering. If you
|
||||
need depth buffering the XImage will almost surely be faster. Exper-
|
||||
iment with the MESA_BACK_BUFFER variable to see which is faster for
|
||||
your application.
|
||||
|
||||
|
||||
Colormaps:
|
||||
When using Mesa directly or with GLX, it's up to the application writer
|
||||
to create a window with an appropriate colormap. The aux, tk, and GLUT
|
||||
toolkits try to minimize colormap "flashing" by sharing colormaps when
|
||||
possible. Specifically, if the visual and depth of the window matches
|
||||
that of the root window, the root window's colormap will be shared by
|
||||
the Mesa window. Otherwise, a new, private colormap will be allocated.
|
||||
|
||||
When sharing the root colormap, Mesa may be unable to allocate the colors
|
||||
it needs, resulting in poor color quality. This can happen when a
|
||||
large number of colorcells in the root colormap are already allocated.
|
||||
To prevent colormap sharing in aux, tk and GLUT, define the environment
|
||||
variable MESA_PRIVATE_CMAP. The value isn't significant.
|
||||
|
||||
|
||||
Gamma correction:
|
||||
To compensate for the nonlinear relationship between pixel values
|
||||
and displayed intensities, there is a gamma correction feature in
|
||||
Mesa. Some systems, such as Silicon Graphics, support gamma
|
||||
correction in hardware (man gamma) so you won't need to use Mesa's
|
||||
gamma facility. Other systems, however, may need gamma adjustment
|
||||
to produce images which look correct. If in the past you thought
|
||||
Mesa's images were too dim, read on.
|
||||
|
||||
Gamma correction is controlled with the MESA_GAMMA environment
|
||||
variable. Its value is of the form "Gr Gg Gb" or just "G" where
|
||||
Gr is the red gamma value, Gg is the green gamma value, Gb is the
|
||||
blue gamma value and G is one gamma value to use for all three
|
||||
channels. Each value is a positive real number typically in the
|
||||
range 1.0 to 2.5. The defaults are all 1.0, effectively disabling
|
||||
gamma correction. Examples using csh:
|
||||
|
||||
% setenv MESA_GAMMA "2.3 2.2 2.4" // separate R,G,B values
|
||||
% setenv MESA_GAMMA "2.0" // same gamma for R,G,B
|
||||
|
||||
The demos/gamma.c program may help you to determine reasonable gamma
|
||||
value for your display. With correct gamma values, the color intensities
|
||||
displayed in the top row (drawn by dithering) should nearly match those
|
||||
in the bottom row (drawn as grays).
|
||||
|
||||
Alex De Bruyn reports that gamma values of 1.6, 1.6 and 1.9 work well
|
||||
on HP displays using the HP-ColorRecovery technology.
|
||||
|
||||
Mesa implements gamma correction with a lookup table which translates
|
||||
a "linear" pixel value to a gamma-corrected pixel value. There is a
|
||||
small performance penalty. Gamma correction only works in RGB mode.
|
||||
Also be aware that pixel values read back from the frame buffer will
|
||||
not be "un-corrected" so glReadPixels may not return the same data
|
||||
drawn with glDrawPixels.
|
||||
|
||||
For more information about gamma correction see:
|
||||
http://www.inforamp.net/~poynton/notes/colour_and_gamma/GammaFAQ.html
|
||||
|
||||
|
||||
Overlay Planes
|
||||
|
||||
Overlay planes in the frame buffer are supported by Mesa but require
|
||||
hardware and X server support. To determine if your X server has
|
||||
overlay support you can test for the SERVER_OVERLAY_VISUALS property:
|
||||
|
||||
xprop -root | grep SERVER_OVERLAY_VISUALS
|
||||
|
||||
|
||||
HPCR glClear(GL_COLOR_BUFFER_BIT) dithering
|
||||
|
||||
If you set the MESA_HPCR_CLEAR environment variable then dithering
|
||||
will be used when clearing the color buffer. This is only applicable
|
||||
to HP systems with the HPCR (Color Recovery) system.
|
||||
|
||||
|
||||
Extensions
|
||||
==========
|
||||
There are three Mesa-specific GLX extensions at this time.
|
||||
|
||||
GLX_MESA_pixmap_colormap
|
||||
|
||||
This extension adds the GLX function:
|
||||
|
||||
GLXPixmap glXCreateGLXPixmapMESA( Display *dpy, XVisualInfo *visual,
|
||||
Pixmap pixmap, Colormap cmap )
|
||||
|
||||
It is an alternative to the standard glXCreateGLXPixmap() function.
|
||||
Since Mesa supports RGB rendering into any X visual, not just True-
|
||||
Color or DirectColor, Mesa needs colormap information to convert RGB
|
||||
values into pixel values. An X window carries this information but a
|
||||
pixmap does not. This function associates a colormap to a GLX pixmap.
|
||||
See the xdemos/glxpixmap.c file for an example of how to use this
|
||||
extension.
|
||||
|
||||
GLX_MESA_release_buffers
|
||||
|
||||
Mesa associates a set of ancillary (depth, accumulation, stencil and
|
||||
alpha) buffers with each X window it draws into. These ancillary
|
||||
buffers are allocated for each X window the first time the X window
|
||||
is passed to glXMakeCurrent(). Mesa, however, can't detect when an
|
||||
X window has been destroyed in order to free the ancillary buffers.
|
||||
|
||||
The best it can do is to check for recently destroyed windows whenever
|
||||
the client calls the glXCreateContext() or glXDestroyContext()
|
||||
functions. This may not be sufficient in all situations though.
|
||||
|
||||
The GLX_MESA_release_buffers extension allows a client to explicitly
|
||||
deallocate the ancillary buffers by calling glxReleaseBuffersMESA()
|
||||
just before an X window is destroyed. For example:
|
||||
|
||||
#ifdef GLX_MESA_release_buffers
|
||||
glXReleaseBuffersMESA( dpy, window );
|
||||
#endif
|
||||
XDestroyWindow( dpy, window );
|
||||
|
||||
This extension is new in Mesa 2.0.
|
||||
|
||||
GLX_MESA_copy_sub_buffer
|
||||
|
||||
This extension adds the glXCopySubBufferMESA() function. It works
|
||||
like glXSwapBuffers() but only copies a sub-region of the window
|
||||
instead of the whole window.
|
||||
|
||||
This extension is new in Mesa version 2.6
|
||||
|
||||
|
||||
|
||||
Summary of X-related environment variables:
|
||||
MESA_RGB_VISUAL - specifies the X visual and depth for RGB mode (X only)
|
||||
MESA_CI_VISUAL - specifies the X visual and depth for CI mode (X only)
|
||||
MESA_BACK_BUFFER - specifies how to implement the back color buffer (X only)
|
||||
MESA_PRIVATE_CMAP - force aux/tk libraries to use private colormaps (X only)
|
||||
MESA_GAMMA - gamma correction coefficients (X only)
|
||||
|
||||
|
||||
----------------------------------------------------------------------
|
||||
README.CYGWIN - lassauge April 2004 - based on README.X11
|
102
docs/README.MITS
Normal file
102
docs/README.MITS
Normal file
@@ -0,0 +1,102 @@
|
||||
|
||||
Mesa 3.0 MITS Information
|
||||
|
||||
|
||||
This software is distributed under the terms of the GNU Library
|
||||
General Public License, see the LICENSE file for details.
|
||||
|
||||
|
||||
This document is a preliminary introduction to help you get
|
||||
started. For more detaile information consult the web page.
|
||||
|
||||
http://10-dencies.zkm.de/~mesa/
|
||||
|
||||
|
||||
|
||||
Version 0.1 (Yes it's very alpha code so be warned!)
|
||||
Contributors:
|
||||
Emil Briggs (briggs@bucky.physics.ncsu.edu)
|
||||
David Bucciarelli (tech.hmw@plus.it)
|
||||
Andreas Schiffler (schiffler@zkm.de)
|
||||
|
||||
|
||||
|
||||
1. Requirements:
|
||||
Mesa 3.0.
|
||||
An SMP capable machine running Linux 2.x
|
||||
libpthread installed on your machine.
|
||||
|
||||
|
||||
2. What does MITS stand for?
|
||||
MITS stands for Mesa Internal Threading System. By adding
|
||||
internal threading to Mesa it should be possible to improve
|
||||
performance of OpenGL applications on SMP machines.
|
||||
|
||||
|
||||
3. Do applications have to be recoded to take advantage of MITS?
|
||||
No. The threading is internal to Mesa and transparent to
|
||||
applications.
|
||||
|
||||
|
||||
4. Will all applications benefit from the current implementation of MITS?
|
||||
No. This implementation splits the processing of the vertex buffer
|
||||
over two threads. There is a certain amount of overhead involved
|
||||
with the thread synchronization and if there is not enough work
|
||||
to be done the extra overhead outweighs any speedup from using
|
||||
dual processors. You will not for example see any speedup when
|
||||
running Quake because it uses GL_POLYGON and there is only one
|
||||
polygon for each vertex buffer processed. Test results on a
|
||||
dual 200 Mhz. Pentium Pro system show that one needs around
|
||||
100-200 vertices in the vertex buffer before any there is any
|
||||
appreciable benefit from the threading.
|
||||
|
||||
|
||||
5. Are there any parameters that I can tune to try to improve performance.
|
||||
Yes. You can try to vary the size of the vertex buffer which is
|
||||
define in VB_MAX located in the file src/vb.h from your top level
|
||||
Mesa distribution. The number needs to be a multiple of 12 and
|
||||
the optimum value will probably depend on the capabilities of
|
||||
your machine and the particular application you are running.
|
||||
|
||||
|
||||
6. Are there any ways I can modify the application to improve its
|
||||
performance with the MITS?
|
||||
Yes. Try to use as many vertices between each Begin/End pair
|
||||
as possbile. This will reduce the thread synchronization
|
||||
overhead.
|
||||
|
||||
|
||||
7. What sort of speedups can I expect?
|
||||
On some benchmarks performance gains of up to 30% have been
|
||||
observerd. Others may see no gain at all and in a few rare
|
||||
cases even some degradation.
|
||||
|
||||
|
||||
8. What still needs to be done?
|
||||
Lots of testing and benchmarking.
|
||||
A portable implementation that works within the Mesa thread API.
|
||||
Threading of additional areas of Mesa to improve performance
|
||||
even more.
|
||||
|
||||
|
||||
|
||||
Installation:
|
||||
|
||||
1. This assumes that you already have a working Mesa 3.0 installation
|
||||
from source.
|
||||
2. Place the tarball MITS.tar.gz in your top level Mesa directory.
|
||||
3. Unzip it and untar it. It will replace the following files in
|
||||
your Mesa source tree so back them up if you want to save them.
|
||||
|
||||
|
||||
README.MITS
|
||||
Make-config
|
||||
Makefile
|
||||
mklib.glide
|
||||
src/vbxform.c
|
||||
src/vb.h
|
||||
|
||||
4. Rebuild Mesa using the command
|
||||
|
||||
make linux-386-glide-mits
|
||||
|
207
docs/README.QUAKE
Normal file
207
docs/README.QUAKE
Normal file
@@ -0,0 +1,207 @@
|
||||
|
||||
Info on using Mesa 3.0 with Linux Quake I and Quake II
|
||||
|
||||
|
||||
|
||||
Disclaimer
|
||||
----------
|
||||
|
||||
I am _not_ a Quake expert by any means. I pretty much only run it to
|
||||
test Mesa. There have been a lot of questions about Linux Quake and
|
||||
Mesa so I'm trying to provide some useful info here. If this file
|
||||
doesn't help you then you should look elsewhere for help. The Mesa
|
||||
mailing list or the news://news.3dfx.com/3dfx.linux.glide newsgroup
|
||||
might be good.
|
||||
|
||||
Again, all the information I have is in this file. Please don't email
|
||||
me with questions.
|
||||
|
||||
If you have information to contribute to this file please send it to
|
||||
me at brianp@elastic.avid.com
|
||||
|
||||
|
||||
|
||||
Linux Quake
|
||||
-----------
|
||||
|
||||
You can get Linux Quake from http://www.idsoftware.com/
|
||||
|
||||
Quake I and II for Linux were tested with, and include, Mesa 2.6. You
|
||||
shouldn't have too many problems if you simply follow the instructions
|
||||
in the Quake distribution.
|
||||
|
||||
|
||||
|
||||
RedHat 5.0 Linux problems
|
||||
-------------------------
|
||||
|
||||
RedHat Linux 5.x uses the GNU C library ("glibc" or "libc6") whereas
|
||||
previous RedHat and other Linux distributions use "libc5" for its
|
||||
runtime C library.
|
||||
|
||||
Linux Quake I and II were compiled for libc5. If you compile Mesa
|
||||
on a RedHat 5.x system the resulting libMesaGL.so file will not work
|
||||
with Linux Quake because of the different C runtime libraries.
|
||||
The symptom of this is a segmentation fault soon after starting Quake.
|
||||
|
||||
If you want to use a newer version of Mesa (like 3.x) with Quake on
|
||||
RedHat 5.x then read on.
|
||||
|
||||
The solution to the C library problem is to force Mesa to use libc5.
|
||||
libc5 is in /usr/i486-linux-libc5/lib on RedHat 5.x systems.
|
||||
|
||||
Emil Briggs (briggs@tick.physics.ncsu.edu) nicely gave me the following
|
||||
info:
|
||||
|
||||
> I only know what works on a RedHat 5.0 distribution. RH5 includes
|
||||
> a full set of libraries for both libc5 and glibc. The loader ld.so
|
||||
> uses the libc5 libraries in /usr/i486-linux-libc5/lib for programs
|
||||
> linked against libc5 while it uses the glibc libraries in /lib and
|
||||
> /usr/lib for programs linked against glibc.
|
||||
>
|
||||
> Anyway I changed line 41 of mklib.glide to
|
||||
> GLIDELIBS="-L/usr/local/glide/lib -lglide2x -L/usr/i486-linux-libc5/lib"
|
||||
>
|
||||
> And I started quake2 up with a script like this
|
||||
> #!/bin/csh
|
||||
> setenv LD_LIBRARY_PATH /usr/i486-linux-libc5/lib
|
||||
> setenv MESA_GLX_FX f
|
||||
> ./quake2 +set vid_ref gl
|
||||
> kbd_mode -a
|
||||
> reset
|
||||
|
||||
|
||||
I've already patched the mklib.glide file. You'll have to start Quake
|
||||
with the script shown above though.
|
||||
|
||||
|
||||
|
||||
**********************
|
||||
|
||||
Daryll Strauss writes:
|
||||
|
||||
Here's my thoughts on the problem. On a RH 5.x system, you can NOT build
|
||||
a libc5 executable or library. Red Hat just doesn't include the right
|
||||
stuff to do it.
|
||||
|
||||
Since Quake is a libc5 based application, you are in trouble. You need
|
||||
libc5 libraries.
|
||||
|
||||
What can you do about it? Well there's a package called gcc5 that does
|
||||
MOST of the right stuff to compile with libc5. (It brings back older
|
||||
header files, makes appropriate symbolic links for libraries, and sets
|
||||
up the compiler to use the correct directories) You can find gcc5 here:
|
||||
ftp://ecg.mit.edu/pub/linux/gcc5-1.0-1.i386.rpm
|
||||
|
||||
No, this isn't quite enough. There are still a few tricks to getting
|
||||
Mesa to compile as a libc5 application. First you have to make sure that
|
||||
every compile uses gcc5 instead of gcc. Second, in some cases the link
|
||||
line actually lists -L/usr/lib which breaks gcc5 (because it forces you
|
||||
to use the glibc version of things)
|
||||
|
||||
If you get all the stuff correctly compiled with gcc5 it should work.
|
||||
I've run Mesa 3.0B6 and its demos in a window with my Rush on a Red Hat
|
||||
5.1 system. It is a big hassle, but it can be done. I've only made Quake
|
||||
segfault, but I think that's from my libRush using the wrong libc.
|
||||
|
||||
Yes, mixing libc5 and glibc is a major pain. I've been working to get
|
||||
all my libraries compiling correctly with this setup. Someone should
|
||||
make an RPM out of it and feed changes back to Brian once they get it
|
||||
all working. If no one else has done so by the time I get the rest of my
|
||||
stuff straightened out, I'll try to do it myself.
|
||||
|
||||
- |Daryll
|
||||
|
||||
|
||||
|
||||
*********************
|
||||
|
||||
David Bucciarelli (tech.hmw@plus.it) writes:
|
||||
|
||||
I'm using the Mesa-3.0beta7 and the RedHat 5.1 and QuakeII is
|
||||
working fine for me. I had only to make a small change to the
|
||||
Mesa-3.0/mklib.glide file, from:
|
||||
|
||||
|
||||
GLIDELIBS="-L/usr/local/glide/lib -lglide2x
|
||||
-L/usr/i486-linux-libc5/lib -lm"
|
||||
|
||||
to:
|
||||
|
||||
GLIDELIBS="-L/usr/i486-linux-libc5/lib -lglide2x"
|
||||
|
||||
and to make two symbolic links:
|
||||
|
||||
[david@localhost Mesa]$ ln -s libMesaGL.so libMesaGL.so.2
|
||||
[david@localhost Mesa]$ ln -s libMesaGLU.so libMesaGLU.so.2
|
||||
|
||||
I'm using the Daryll's Linux glide rpm for the Voodoo2 and glibc (it
|
||||
includes also the Glide for the libc5). I'm not using the /dev/3Dfx and
|
||||
running QuakeII as root with the following env. var:
|
||||
|
||||
export
|
||||
LD_LIBRARY_PATH=/dsk1/home/david/src/gl/Mesa/lib:/usr/i486-linux-libc5/lib
|
||||
|
||||
I think that all problems are related to the glibc, Quake will never
|
||||
work if you get the following output:
|
||||
|
||||
[david@localhost Mesa]$ ldd lib/libMesaGL.so
|
||||
libglide2x.so => /usr/lib/libglide2x.so (0x400f8000)
|
||||
libm.so.6 => /lib/libm.so.6 (0x40244000)
|
||||
libc.so.6 => /lib/libc.so.6 (0x4025d000)
|
||||
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x00000000)
|
||||
|
||||
You must get the following outputs:
|
||||
|
||||
[david@localhost Mesa]# ldd lib/libMesaGL.so
|
||||
libglide2x.so => /usr/i486-linux-libc5/lib/libglide2x.so
|
||||
(0x400f3000)
|
||||
|
||||
[root@localhost quake2]# ldd quake2
|
||||
libdl.so.1 => /lib/libdl.so.1 (0x40005000)
|
||||
libm.so.5 => /usr/i486-linux-libc5/lib/libm.so.5 (0x40008000)
|
||||
libc.so.5 => /usr/i486-linux-libc5/lib/libc.so.5 (0x40010000)
|
||||
|
||||
[root@localhost quake2]# ldd ref_gl.so
|
||||
libMesaGL.so.2 =>
|
||||
/dsk1/home/david/src/gl/Mesa/lib/libMesaGL.so.2 (0x400eb000)
|
||||
libglide2x.so => /usr/i486-linux-libc5/lib/libglide2x.so
|
||||
(0x401d9000)
|
||||
libX11.so.6 => /usr/i486-linux-libc5/lib/libX11.so.6
|
||||
(0x40324000)
|
||||
libXext.so.6 => /usr/i486-linux-libc5/lib/libXext.so.6
|
||||
(0x403b7000)
|
||||
libvga.so.1 => /usr/i486-linux-libc5/lib/libvga.so.1
|
||||
(0x403c1000)
|
||||
libm.so.5 => /usr/i486-linux-libc5/lib/libm.so.5 (0x403f5000)
|
||||
libc.so.5 => /usr/i486-linux-libc5/lib/libc.so.5 (0x403fd000)
|
||||
|
||||
|
||||
***********************
|
||||
|
||||
Steve Davies (steve@one47.demon.co.uk) writes:
|
||||
|
||||
|
||||
Try using:
|
||||
|
||||
export LD_LIBRARY_PATH=/usr/i486-linux-libc5/lib
|
||||
./quake2 +set vid_ref gl
|
||||
|
||||
to start the game... Works for me, but assumes that you have the
|
||||
compatability libc5 RPMs installed.
|
||||
|
||||
|
||||
***************************
|
||||
|
||||
WWW resources - you may find additional Linux Quake help at these URLs:
|
||||
|
||||
|
||||
http://quake.medina.net/howto
|
||||
|
||||
http://webpages.mr.net/bobz
|
||||
|
||||
http://www.linuxgames.com/quake2/
|
||||
|
||||
|
||||
|
||||
----------------------------------------------------------------------
|
52
docs/README.THREADS
Normal file
52
docs/README.THREADS
Normal file
@@ -0,0 +1,52 @@
|
||||
|
||||
|
||||
Mesa Threads README
|
||||
-------------------
|
||||
|
||||
Thread safety was introduced in Mesa 2.6 by John Stone and
|
||||
Christoph Poliwoda.
|
||||
|
||||
It was redesigned in Mesa 3.3 so that thread safety is
|
||||
supported by default (on systems which support threads,
|
||||
that is). There is no measurable penalty on single
|
||||
threaded applications.
|
||||
|
||||
NOTE that the only _driver_ which is thread safe at this time
|
||||
is the OS/Mesa driver!
|
||||
|
||||
|
||||
At present the mthreads code supports three thread APIS:
|
||||
1) POSIX threads (aka pthreads).
|
||||
2) Solaris / Unix International threads.
|
||||
3) Win32 threads (Win 95/NT).
|
||||
|
||||
Support for other thread libraries can be added src/glthread.[ch]
|
||||
|
||||
|
||||
In order to guarantee proper operation, it is
|
||||
necessary for both Mesa and application code to use the same threads API.
|
||||
So, if your application uses Sun's thread API, then you should build Mesa
|
||||
using one of the targets for Sun threads.
|
||||
|
||||
The mtdemos directory contains some example programs which use
|
||||
multiple threads to render to osmesa rendering context(s).
|
||||
|
||||
Linux users should be aware that there exist many different POSIX
|
||||
threads packages. The best solution is the linuxthreads package
|
||||
(http://pauillac.inria.fr/~xleroy/linuxthreads/) as this package is the
|
||||
only one that really supports multiprocessor machines (AFAIK). See
|
||||
http://pauillac.inria.fr/~xleroy/linuxthreads/README for further
|
||||
information about the usage of linuxthreads.
|
||||
|
||||
If you are interested in helping with thread safety work in Mesa
|
||||
join the Mesa developers mailing list and post your proposal.
|
||||
|
||||
|
||||
Regards,
|
||||
John Stone -- j.stone@acm.org johns@cs.umr.edu
|
||||
Christoph Poliwoda -- poliwoda@volumegraphics.com
|
||||
|
||||
|
||||
Version info:
|
||||
Mesa 2.6 - initial thread support.
|
||||
Mesa 3.3 - thread support mostly rewritten (Brian Paul)
|
@@ -1,44 +0,0 @@
|
||||
The software may implement third party technologies (e.g. third party
|
||||
libraries) that are not licensed to you by AMD and for which you may need
|
||||
to obtain licenses from other parties. Unless explicitly stated otherwise,
|
||||
these third party technologies are not licensed hereunder. Such third
|
||||
party technologies include, but are not limited, to H.264, MPEG-2, MPEG-4,
|
||||
AVC, and VC-1.
|
||||
|
||||
For MPEG-2 Encoding Products ANY USE OF THIS PRODUCT IN ANY MANNER OTHER
|
||||
THAN PERSONAL USE THAT COMPLIES WITH THE MPEG-2 STANDARD FOR ENCODING VIDEO
|
||||
INFORMATION FOR PACKAGED MEDIA IS EXPRESSLY PROHIBITED WITHOUT A LICENSE
|
||||
UNDER APPLICABLE PATENTS IN THE MPEG-2 PATENT PORTFOLIO, WHICH LICENSES IS
|
||||
AVAILABLE FROM MPEG LA, LLC, 6312 S. Fiddlers Green Circle, Suite 400E,
|
||||
Greenwood Village, Colorado 80111 U.S.A.
|
||||
|
||||
WARRANTY DISCLAIMER: THE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
|
||||
KIND. AMD DISCLAIMS ALL WARRANTIES, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING
|
||||
BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
|
||||
PARTICULAR PURPOSE, TITLE, NON-INFRINGEMENT, THAT THE SOFTWARE WILL RUN
|
||||
UNINTERRUPTED OR ERROR-FREE OR WARRANTIES ARISING FROM CUSTOM OF TRADE OR
|
||||
COURSE OF USAGE. THE ENTIRE RISK ASSOCIATED WITH THE USE OF THE SOFTWARE IS
|
||||
ASSUMED BY YOU. Some jurisdictions do not allow the exclusion of implied
|
||||
warranties, so the above exclusion may not apply to You.
|
||||
|
||||
LIMITATION OF LIABILITY AND INDEMNIFICATION: AMD AND ITS LICENSORS WILL NOT,
|
||||
UNDER ANY CIRCUMSTANCES BE LIABLE FOR ANY PUNITIVE, DIRECT, INCIDENTAL,
|
||||
INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING FROM USE OF THE SOFTWARE OR
|
||||
THIS AGREEMENT EVEN IF AMD AND ITS LICENSORS HAVE BEEN ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGES. In no event shall AMD's total liability to You
|
||||
for all damages, losses, and causes of action (whether in contract, tort
|
||||
(including negligence) or otherwise) exceed the amount of $100 USD. You agree
|
||||
to defend, indemnify and hold harmless AMD and its licensors, and any of their
|
||||
directors, officers, employees, affiliates or agents from and against any and
|
||||
all loss, damage, liability and other expenses (including reasonable
|
||||
attorneys' fees), resulting from Your use of the Software or violation of the
|
||||
terms and conditions of this Agreement.
|
||||
|
||||
U.S. GOVERNMENT RESTRICTED RIGHTS: The Software is provided with "RESTRICTED
|
||||
RIGHTS." Use, duplication, or disclosure by the Government is subject to the
|
||||
restrictions as set forth in FAR 52.227-14 and DFAR252.227-7013, et seq., or
|
||||
its successor. Use of the Software by the Government constitutes
|
||||
acknowledgement of AMD's proprietary rights in them.
|
||||
|
||||
EXPORT RESTRICTIONS: The Software may be subject to export restrictions as
|
||||
stated in the Software License Agreement.
|
@@ -1,43 +0,0 @@
|
||||
The software may implement third party technologies (e.g. third party
|
||||
libraries) that are not licensed to you by AMD and for which you may need
|
||||
to obtain licenses from other parties. Unless explicitly stated otherwise,
|
||||
these third party technologies are not licensed hereunder. Such third
|
||||
party technologies include, but are not limited, to H.264, MPEG-2, MPEG-4,
|
||||
AVC, and VC-1.
|
||||
|
||||
For MPEG-2 Intermediate Products: ANY USE OF THIS PRODUCT IN ANY MANNER OTHER
|
||||
THAN PERSONAL USE THAT COMPLIES WITH THE MPEG-2 STANDARD IS EXPRESSLY
|
||||
PROHIBITED WITHOUT A LICENSE UNDER APPLICABLE PATENTS IN THE MPEG-2 PATENT
|
||||
PORTFOLIO, WHICH LICENSES IS AVAILABLE FROM MPEG LA, LLC, 6312 S. Fiddlers
|
||||
Green Circle, Suite 400E, Greenwood Village, Colorado 80111 U.S.A.
|
||||
|
||||
WARRANTY DISCLAIMER: THE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
|
||||
KIND. AMD DISCLAIMS ALL WARRANTIES, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING
|
||||
BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
|
||||
PARTICULAR PURPOSE, TITLE, NON-INFRINGEMENT, THAT THE SOFTWARE WILL RUN
|
||||
UNINTERRUPTED OR ERROR-FREE OR WARRANTIES ARISING FROM CUSTOM OF TRADE OR
|
||||
COURSE OF USAGE. THE ENTIRE RISK ASSOCIATED WITH THE USE OF THE SOFTWARE IS
|
||||
ASSUMED BY YOU. Some jurisdictions do not allow the exclusion of implied
|
||||
warranties, so the above exclusion may not apply to You.
|
||||
|
||||
LIMITATION OF LIABILITY AND INDEMNIFICATION: AMD AND ITS LICENSORS WILL NOT,
|
||||
UNDER ANY CIRCUMSTANCES BE LIABLE FOR ANY PUNITIVE, DIRECT, INCIDENTAL,
|
||||
INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING FROM USE OF THE SOFTWARE OR
|
||||
THIS AGREEMENT EVEN IF AMD AND ITS LICENSORS HAVE BEEN ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGES. In no event shall AMD's total liability to You
|
||||
for all damages, losses, and causes of action (whether in contract, tort
|
||||
(including negligence) or otherwise) exceed the amount of $100 USD. You agree
|
||||
to defend, indemnify and hold harmless AMD and its licensors, and any of their
|
||||
directors, officers, employees, affiliates or agents from and against any and
|
||||
all loss, damage, liability and other expenses (including reasonable
|
||||
attorneys' fees), resulting from Your use of the Software or violation of the
|
||||
terms and conditions of this Agreement.
|
||||
|
||||
U.S. GOVERNMENT RESTRICTED RIGHTS: The Software is provided with "RESTRICTED
|
||||
RIGHTS." Use, duplication, or disclosure by the Government is subject to the
|
||||
restrictions as set forth in FAR 52.227-14 and DFAR252.227-7013, et seq., or
|
||||
its successor. Use of the Software by the Government constitutes
|
||||
acknowledgement of AMD's proprietary rights in them.
|
||||
|
||||
EXPORT RESTRICTIONS: The Software may be subject to export restrictions as
|
||||
stated in the Software License Agreement.
|
@@ -1,6 +1,6 @@
|
||||
File: docs/README.WIN32
|
||||
|
||||
Last updated: 21 June 2013
|
||||
Last updated: 23 April 2011
|
||||
|
||||
|
||||
Quick Start
|
||||
@@ -11,6 +11,10 @@ no longer shipped or supported.
|
||||
|
||||
Run
|
||||
|
||||
scons osmesa mesagdi
|
||||
|
||||
to build classic mesa Windows GDI drivers; or
|
||||
|
||||
scons libgl-gdi
|
||||
|
||||
to build gallium based GDI driver.
|
||||
@@ -26,21 +30,6 @@ At this time, only the gallium GDI driver is known to work.
|
||||
Source code also exists in the tree for other drivers in
|
||||
src/mesa/drivers/windows, but the status of this code is unknown.
|
||||
|
||||
Recipe
|
||||
------
|
||||
|
||||
Building on windows requires several open-source packages. These are
|
||||
steps that work as of this writing.
|
||||
|
||||
- install python 2.7
|
||||
- install scons (latest)
|
||||
- install mingw, flex, and bison
|
||||
- install pywin32 from here: http://www.lfd.uci.edu/~gohlke/pythonlibs
|
||||
get pywin32-218.4.win-amd64-py2.7.exe
|
||||
- install git
|
||||
- download mesa from git
|
||||
see http://www.mesa3d.org/repository.html
|
||||
- run scons
|
||||
|
||||
General
|
||||
-------
|
||||
|
279
docs/RELNOTES-5.1
Normal file
279
docs/RELNOTES-5.1
Normal file
@@ -0,0 +1,279 @@
|
||||
|
||||
Mesa 5.1 release notes
|
||||
|
||||
December 17, 2003
|
||||
|
||||
PLEASE READ!!!!
|
||||
|
||||
|
||||
|
||||
Introduction
|
||||
------------
|
||||
|
||||
Mesa uses an even/odd version number scheme like the Linux kernel.
|
||||
Even-numbered versions (such as 5.0) designate stable releases.
|
||||
Odd-numbered versions (such as 5.1) designate new developmental releases.
|
||||
|
||||
|
||||
Bug fixes
|
||||
---------
|
||||
See the VERSIONS file for a list of bugs fixed in this release.
|
||||
|
||||
|
||||
|
||||
New Features in Mesa 5.1
|
||||
------------------------
|
||||
|
||||
GL_ARB_vertex_program / GL_ARB_fragment_program
|
||||
Michal Krol and Karl Rasche implemented these extensions. Thanks!
|
||||
Be aware that there may be some rough edges and lurking bugs.
|
||||
|
||||
GL_ATI_texture_env_combine3 extension
|
||||
This adds a few new texture combine modes.
|
||||
Contributed by Ian Romanick.
|
||||
|
||||
GL_SGI_texture_color_table
|
||||
Adds a color table lookup to the RGBA texture path. There's a separate
|
||||
color table for each texture unit.
|
||||
Contributed by Eric Plante.
|
||||
|
||||
GL_NV_fragment_program
|
||||
NVIDIA's fragment-level programming feature.
|
||||
Possible lurking bugs:
|
||||
- the DDX and DDY commands aren't fully tested
|
||||
- there may be bugs in the parser
|
||||
- the TEX and TXP instructions both do perspective correction
|
||||
- the pack/unpack instructions may not be correct
|
||||
|
||||
GL_EXT_depth_bounds_test
|
||||
This extension adds a scissor-like test for the Z axis. It's used to
|
||||
optimize stencil-volume shadow algorithms.
|
||||
|
||||
GL_NV_light_max_exponent
|
||||
Lifts the 128 limit for max light exponent.
|
||||
|
||||
GL_EXT_texture_rectangle
|
||||
Identical to GL_NV_texture_rectangle
|
||||
|
||||
GL_ARB_occlusion_query
|
||||
Useful for visibility-based culling.
|
||||
|
||||
GL_ARB_texture_non_power_of_two
|
||||
Removes the restriction that texture dimensions must be powers of two.
|
||||
|
||||
GL_ARB_vertex_buffer_object
|
||||
Allows server-side vertex arrays, optimized host/card data transfers, etc.
|
||||
|
||||
GL_ARB_point_sprite
|
||||
ARB-approved version of GL_NV_point_sprite. Basically allows textures
|
||||
to be applied to points.
|
||||
|
||||
GL_IBM_multimode_draw_arrays
|
||||
Allows multiple vertex arrays to be drawn with one call, including arrays
|
||||
of different types of primitives.
|
||||
|
||||
GL_SUN_multi_draw_arrays
|
||||
An alias for GL_EXT_multi_draw_arrays, standard in OpenGL 1.4.
|
||||
|
||||
Faster glDrawPixels / glCopyPixels in X11 driver
|
||||
If your X screen is 32bpp, glDrawPixels to the front color buffer will
|
||||
be accelerated (via XPutImage()) if the image format is GL_BGRA and the
|
||||
type is GL_UNSIGNED_BYTE. No raster operations, such as depth test,
|
||||
blend, fog, etc. can be enabled.
|
||||
|
||||
If your X screen is 16bpp, glDrawPixels to the front color buffer will
|
||||
be accelerated (via XPutImage()) if the image format is GL_RGB and the
|
||||
type is GL_UNSIGNED_SHORT_5_6_5. No raster operations, such as depth
|
||||
test, blend, fog, etc. can be enabled.
|
||||
|
||||
glCopyPixels() calls for the front color buffer will be accelerated
|
||||
(via XCopyArea()) if no raster operations, such as depth test, blend,
|
||||
fog, pixel zoom, etc. are enabled.
|
||||
|
||||
The speed-up over typical software rendering is a factor of 10 for
|
||||
glDrawPixels and 100 for glCopyPixels.
|
||||
|
||||
|
||||
With the addition of GL_ARB_occlusion_query, GL_ARB_vertex_buffer_object,
|
||||
GL_ARB_texture_non_power_of_two and GL_EXT_shadow_funcs, Mesa 5.1 supports
|
||||
all the new features of OpenGL 1.5. Mesa 6.0 (the next stable release)
|
||||
will advertise GL_VERSION = "1.5".
|
||||
|
||||
|
||||
|
||||
Vertex/Fragment program debugger
|
||||
--------------------------------
|
||||
|
||||
GL_MESA_program_debug is an experimental extension to support
|
||||
interactive debugging of vertex and fragment programs. See the
|
||||
docs/MESA_program_debug.spec file for details.
|
||||
|
||||
The bulk of the vertex/fragment program debugger is implemented
|
||||
outside of Mesa. The GL_MESA_program_debug extension just has minimal
|
||||
hooks for stopping running programs and inspecting programs.
|
||||
|
||||
The progs/tests/debugger.c (only in CVS) program is an example of how
|
||||
the extension can be used. Presently, the debugger code and demo code
|
||||
is in the same file. Eventually the debugger code should be moved
|
||||
into a reusable module.
|
||||
|
||||
As it is now, the demo lets you set breakpoings in vertex/fragment
|
||||
programs, single step, and print intermediate register values. It's
|
||||
basically just a proof of concept.
|
||||
|
||||
|
||||
|
||||
Directory tree reorganization
|
||||
-----------------------------
|
||||
|
||||
The directory structure for Mesa has been overhauled to improve its layout.
|
||||
All source code for Mesa, GLU, GLUT, etc is now under the src/ directory
|
||||
in appropriate subdirectories.
|
||||
|
||||
The Mesa source code and drivers has been reorganized under src/mesa/.
|
||||
|
||||
All demonstration programs and tests are now in subdirectories under progs/.
|
||||
|
||||
|
||||
|
||||
Build System Changes
|
||||
--------------------
|
||||
|
||||
The GNU automake/autoconf support has been removed. As it was, it seldom
|
||||
worked on anything but Linux. The Mesa developers aren't big fans of
|
||||
automake/autoconf/libtool and didn't have the time to maintain it.
|
||||
If someone wants to contribute new automake/autoconf support (and is
|
||||
willing to maintain it), it may be re-incorporated into Mesa, subject
|
||||
to some requirements.
|
||||
|
||||
The "old style" makefile system has been updated:
|
||||
1. Make-config has been trimmed down to fewer, modern configurations.
|
||||
2. Most of the bin/mklib.* scripts have been rolled into a new "mklib"
|
||||
script that works on all sorts of systems. There are probably some
|
||||
bugs in it, but it's been tested on Linux, SunOS 5.8 and IRIX 6.5.
|
||||
Improvements/contributes are greatly appreciated.
|
||||
3. The Makefile.X11 files have been cleaned up in various ways
|
||||
|
||||
|
||||
|
||||
Source File Changes
|
||||
-------------------
|
||||
|
||||
The mmath.[ch] files are obsolete. Their contents have been moved
|
||||
into the imports.[ch] and macros.[ch] files.
|
||||
|
||||
The files related to vertex and fragment programming have changed.
|
||||
Old files:
|
||||
vpexec.[ch]
|
||||
vpparse.[ch]
|
||||
vpstate.[ch]
|
||||
New files:
|
||||
program.[ch] - generic ARB/NV program code
|
||||
arbprogram.[ch] - ARB program API functions
|
||||
arbfragparse.[ch] - ARB fragment program parsing
|
||||
arbvertparse.[ch] - ARB vertex program parsing
|
||||
arbparse.[ch] - ARB vertex/fragment parsing
|
||||
arbparse_syn.h - vertex/fragment program syntax
|
||||
nvprogram.[ch] - NV program API functions
|
||||
nvvertprog.h - NV vertex program definitions
|
||||
nvfragprog.h - NV fragment program definitions
|
||||
nvvertparse.[ch] - NV vertex program parser
|
||||
nvfragparse.[ch] - NV fragment program parser
|
||||
nvvertexec.[ch] - NV vertex program execution
|
||||
swrast/s_nvfragprog.[ch] - NV fragment program execution
|
||||
|
||||
The files related to per-vertex handling have changed.
|
||||
Old files:
|
||||
tnl/t_eval_api.c - old per-vertex code
|
||||
tnl/t_imm_alloc.c - old per-vertex code
|
||||
tnl/t_imm_api.c - old per-vertex code
|
||||
tnl/t_imm_debug.c - old per-vertex code
|
||||
tnl/t_imm_dlist.c - old per-vertex code
|
||||
tnl/t_imm_elt.c - old per-vertex code
|
||||
tnl/t_imm_eval.c - old per-vertex code
|
||||
tnl/t_imm_exec.c - old per-vertex code
|
||||
tnl/t_imm_fixup.c - old per-vertex code
|
||||
tnl/t_vtx_sse.c - old per-vertex code
|
||||
tnl/t_vtx_x86.c - old per-vertex code
|
||||
New files:
|
||||
tnl/t_save_api.c - new per-vertex code
|
||||
tnl/t_save_loopback.c - new per-vertex code
|
||||
tnl/t_save_playback.c - new per-vertex code
|
||||
tnl/t_vtx_eval.c - old per-vertex code
|
||||
|
||||
Other new files:
|
||||
bufferobj.[ch] - GL_ARB_vertex_buffer_object functions
|
||||
version.h - defines the Mesa version info
|
||||
|
||||
Other removed files:
|
||||
swrast/s_histogram.[ch] - moved into src/histogram.c
|
||||
|
||||
|
||||
|
||||
Other Changes
|
||||
-------------
|
||||
|
||||
The ctx->Driver.CreateTexture function has been removed - it wasn't used.
|
||||
|
||||
New device driver hook functions:
|
||||
NewTextureObject - used to allocate struct gl_texture_objects
|
||||
NewTextureImage - used to allocate struct gl_texture_images
|
||||
|
||||
New ctx->Texture._EnabledCoordUnits field:
|
||||
With the addition of GL_NV_fragment_program we may need to interpolate
|
||||
various sets of texture coordinates even when the corresponding texture
|
||||
unit is not enabled. That is, glEnable(GL_TEXTURE_xD) may never get
|
||||
called but we still may have to interpolate texture coordinates across
|
||||
triangles so that the fragment program will get them.
|
||||
This new field indicates which sets of texture coordinates are needed.
|
||||
If a bit is set in the ctx->Texture._EnabledUnits bitmask is set, the
|
||||
same bit MUST be set in ctx->Texture._EnabledCoordUnits.
|
||||
|
||||
The ctx->_TriangleCaps field is deprecated.
|
||||
Instead of testing the DD_* bits in _TriangleCaps, you should instead
|
||||
directly test the relevant state variables, or use one of the helper
|
||||
functions like NEED_SECONDARY_COLOR() at the bottom of context.h
|
||||
While testing _TriangleCaps bits was fast, it was kludgey, and setting
|
||||
the bits in the first place could be error prone.
|
||||
|
||||
New vertex processing code.
|
||||
The code behind glBegin, glEnd, glVertex, glNormal, etc. has been
|
||||
totally rewritten. It's a cleaner implementation now and should use
|
||||
less memory. (Keith)
|
||||
|
||||
|
||||
|
||||
To Do
|
||||
-----
|
||||
Add screen-awareness to fakeglx.c
|
||||
|
||||
|
||||
|
||||
|
||||
Device Driver Status
|
||||
--------------------
|
||||
|
||||
A number of Mesa's software drivers haven't been actively maintained for
|
||||
some time. We rely on volunteers to maintain many of these drivers.
|
||||
Here's the current status of all included drivers:
|
||||
|
||||
|
||||
Driver Status
|
||||
---------------------- ---------------------
|
||||
XMesa (Xlib) implements OpenGL 1.4
|
||||
OSMesa (off-screen) implements OpenGL 1.4
|
||||
FX (3dfx Voodoo1/2) implements OpenGL 1.3
|
||||
SVGA implements OpenGL 1.3
|
||||
Wind River UGL implements OpenGL 1.3
|
||||
Windows/Win32 implements OpenGL 1.4
|
||||
DJGPP implements OpenGL 1.4
|
||||
GGI implements OpenGL 1.3
|
||||
BeOS implements OpenGL 1.4
|
||||
Allegro needs updating
|
||||
D3D needs updating
|
||||
|
||||
Note: supporting OpenGL 1.4 (vs. 1.3 or 1.2) usually only requires that the
|
||||
driver call the _mesa_enable_1_4_extensions() function.
|
||||
|
||||
|
||||
----------------------------------------------------------------------
|
@@ -103,7 +103,7 @@ Mesa Version History
|
||||
- Stencil-related functions now work in display lists
|
||||
Changes:
|
||||
- renamed aux.h as glaux.h (MS-DOS names can't start with aux)
|
||||
- most filenames are in 8.3 format to accommodate MS-DOS
|
||||
- most filenames are in 8.3 format to accomodate MS-DOS
|
||||
- use GLubytes to store arrays of colors instead of GLints
|
||||
|
||||
1.2.2 August 2, 1995
|
||||
@@ -1007,7 +1007,7 @@ Mesa Version History
|
||||
- glGetTexImage was using pixel unpacking instead of packing params
|
||||
- auto-mipmap generation for cube maps was incorrect
|
||||
Changes:
|
||||
- max texture units reduced to six to accommodate texture rectangles
|
||||
- max texture units reduced to six to accomodate texture rectangles
|
||||
- removed unfinished GL_MESA_sprite_point extension code
|
||||
|
||||
|
||||
|
@@ -17,7 +17,7 @@ Status
|
||||
|
||||
Version
|
||||
|
||||
Version 5, July 16, 2013
|
||||
Version 1, March 1, 2011
|
||||
|
||||
Number
|
||||
|
||||
@@ -57,7 +57,7 @@ New Procedures and Functions
|
||||
struct wl_display *display);
|
||||
|
||||
EGLBoolean eglQueryWaylandBufferWL(EGLDisplay dpy,
|
||||
struct wl_resource *buffer,
|
||||
struct wl_buffer *buffer,
|
||||
EGLint attribute, EGLint *value);
|
||||
|
||||
New Tokens
|
||||
@@ -76,11 +76,6 @@ New Tokens
|
||||
EGL_TEXTURE_Y_UV_WL 0x31D8
|
||||
EGL_TEXTURE_Y_XUXV_WL 0x31D9
|
||||
|
||||
Accepted in the <attribute> parameter of eglQueryWaylandBufferWL:
|
||||
|
||||
EGL_TEXTURE_FORMAT 0x3080
|
||||
EGL_WAYLAND_Y_INVERTED_WL 0x31DB
|
||||
|
||||
|
||||
Additions to the EGL 1.4 Specification:
|
||||
|
||||
@@ -162,16 +157,6 @@ Additions to the EGL 1.4 Specification:
|
||||
Further, eglQueryWaylandBufferWL accepts attributes EGL_WIDTH and
|
||||
EGL_HEIGHT to query the width and height of the wl_buffer.
|
||||
|
||||
Also, eglQueryWaylandBufferWL may accept
|
||||
EGL_WAYLAND_Y_INVERTED_WL attribute to query orientation of
|
||||
wl_buffer. If EGL_WAYLAND_Y_INVERTED_WL is supported
|
||||
eglQueryWaylandBufferWL returns EGL_TRUE and value is a boolean
|
||||
that tells if wl_buffer is y-inverted or not. If
|
||||
EGL_WAYLAND_Y_INVERTED_WL is not supported
|
||||
eglQueryWaylandBufferWL returns EGL_FALSE, in that case
|
||||
wl_buffer should be treated as if value of
|
||||
EGL_WAYLAND_Y_INVERTED_WL was EGL_TRUE.
|
||||
|
||||
Issues
|
||||
|
||||
Revision History
|
||||
@@ -188,10 +173,3 @@ Revision History
|
||||
Use EGL_TEXTURE_FORMAT, EGL_TEXTURE_RGB, and EGL_TEXTURE_RGBA,
|
||||
and just define the new YUV texture formats. Add support for
|
||||
EGL_WIDTH and EGL_HEIGHT in the query attributes (Kristian Høgsberg)
|
||||
Version 5, July 16, 2013
|
||||
Change eglQueryWaylandBufferWL to take a resource pointer to the
|
||||
buffer instead of a pointer to a struct wl_buffer, as the latter has
|
||||
been deprecated. (Ander Conselvan de Oliveira)
|
||||
Version 6, September 16, 2013
|
||||
Add EGL_WAYLAND_Y_INVERTED_WL attribute to allow specifying
|
||||
wl_buffer's orientation.
|
@@ -1,83 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||
<title>Application Issues</title>
|
||||
<link rel="stylesheet" type="text/css" href="mesa.css">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="header">
|
||||
<h1>The Mesa 3D Graphics Library</h1>
|
||||
</div>
|
||||
|
||||
<iframe src="contents.html"></iframe>
|
||||
<div class="content">
|
||||
|
||||
<h1>Application Issues</h1>
|
||||
|
||||
<p>
|
||||
This page documents known issues with some OpenGL applications.
|
||||
</p>
|
||||
|
||||
|
||||
<h2>Topogun</h2>
|
||||
|
||||
<p>
|
||||
<a href="http://www.topogun.com/">Topogun</a> for Linux (version 2, at least)
|
||||
creates a GLX visual without requesting a depth buffer.
|
||||
This causes bad rendering if the OpenGL driver happens to choose a visual
|
||||
without a depth buffer.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Mesa 9.1.2 and later (will) support a DRI configuration option to work around
|
||||
this issue.
|
||||
Using the <a href="http://dri.freedesktop.org/wiki/DriConf">driconf</a> tool,
|
||||
set the "Create all visuals with a depth buffer" option before running Topogun.
|
||||
Then, all GLX visuals will be created with a depth buffer.
|
||||
</p>
|
||||
|
||||
|
||||
<h2>Old OpenGL games</h2>
|
||||
|
||||
<p>
|
||||
Some old OpenGL games (approx. ten years or older) may crash during
|
||||
start-up because of an extension string buffer-overflow problem.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The problem is a modern OpenGL driver will return a very long string
|
||||
for the glGetString(GL_EXTENSIONS) query and if the application
|
||||
naively copies the string into a fixed-size buffer it can overflow the
|
||||
buffer and crash the application.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The work-around is to set the MESA_EXTENSION_MAX_YEAR environment variable
|
||||
to the approximate release year of the game.
|
||||
This will cause the glGetString(GL_EXTENSIONS) query to only report extensions
|
||||
older than the given year.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
For example, if the game was released in 2001, do
|
||||
<pre>
|
||||
export MESA_EXTENSION_MAX_YEAR=2001
|
||||
</pre>
|
||||
before running the game.
|
||||
</p>
|
||||
|
||||
|
||||
|
||||
<h2>Viewperf</h2>
|
||||
|
||||
<p>
|
||||
See the <a href="viewperf.html">Viewperf issues</a> page for a detailed list
|
||||
of Viewperf issues.
|
||||
</p>
|
||||
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@@ -97,22 +97,20 @@ shared libraries in a single pass.</p>
|
||||
<dt><code>CC, CFLAGS, CXX, CXXFLAGS</code></dt>
|
||||
<dd><p>These environment variables
|
||||
control the C and C++ compilers used during the build. By default,
|
||||
<code>gcc</code> and <code>g++</code> are used and the debug/optimisation
|
||||
level is left unchanged.</p>
|
||||
<code>gcc</code> and <code>g++</code> are used with the options
|
||||
<code>"-g -O2"</code>.</p>
|
||||
</dd>
|
||||
|
||||
<dt><code>LDFLAGS</code></dt>
|
||||
<dd><p>An environment variable specifying flags to
|
||||
pass when linking programs. These should be empty and
|
||||
<code>PKG_CONFIG_PATH</code> is recommended to be used instead. If needed
|
||||
it can be used to direct the linker to use libraries in nonstandard
|
||||
directories. For example, <code>LDFLAGS="-L/usr/X11R6/lib"</code>.</p>
|
||||
pass when linking programs. These are normally empty, but can be used
|
||||
to direct the linker to use libraries in nonstandard directories. For
|
||||
example, <code>LDFLAGS="-L/usr/X11R6/lib"</code>.</p>
|
||||
</dd>
|
||||
|
||||
<dt><code>PKG_CONFIG_PATH</code></dt>
|
||||
<dd><p>The
|
||||
<code>pkg-config</code> utility is a hard requirement for cofiguring and
|
||||
building mesa. It is used to search for external libraries
|
||||
<dd><p>When available, the
|
||||
<code>pkg-config</code> utility is used to search for external libraries
|
||||
on the system. This environment variable is used to control the search
|
||||
path for <code>pkg-config</code>. For instance, setting
|
||||
<code>PKG_CONFIG_PATH=/usr/X11R6/lib/pkgconfig</code> will search for
|
||||
@@ -125,6 +123,24 @@ directories.</p>
|
||||
There are also a few general options for altering the Mesa build:
|
||||
</p>
|
||||
<dl>
|
||||
<dt><code>--with-x</code></dt>
|
||||
<dd><p>When the X11 development libraries are
|
||||
needed, the <code>pkg-config</code> utility <a href="#pkg-config">will
|
||||
be used</a> for locating them. If they cannot be found through
|
||||
<code>pkg-config</code> a fallback routing using <code>imake</code> will
|
||||
be used. In this case, the <code>--with-x</code>,
|
||||
<code>--x-includes</code> and <code>--x-libraries</code> options can
|
||||
control the use of X for Mesa.</p>
|
||||
</dd>
|
||||
|
||||
<dt><code>--enable-gl-osmesa</code></dt>
|
||||
<dd><p>The <a href="osmesa.html">OSMesa
|
||||
library</a> can be built on top of libGL for drivers that provide it.
|
||||
This option controls whether to build libOSMesa. By default, this is
|
||||
enabled for the Xlib driver and disabled otherwise. Note that this
|
||||
option is different than using OSMesa as the driver.</p>
|
||||
</dd>
|
||||
|
||||
<dt><code>--enable-debug</code></dt>
|
||||
<dd><p>This option will enable compiler
|
||||
options and macros to aid in debugging the Mesa libraries.</p>
|
||||
@@ -137,32 +153,14 @@ one of these architectures is detected. This option ensures that
|
||||
assembly will not be used.</p>
|
||||
</dd>
|
||||
|
||||
<dt><code>--build=</code></dt>
|
||||
<dt><code>--host=</code></dt>
|
||||
<dd><p>By default, the build will compile code for the architecture that
|
||||
it's running on. In order to build cross-compile Mesa on a x86-64 machine
|
||||
that is to run on a i686, one would need to set the options to:</p>
|
||||
|
||||
<p><code>--build=x86_64-pc-linux-gnu --host=i686-pc-linux-gnu</code></p>
|
||||
|
||||
Note that these can vary from distribution to distribution. For more
|
||||
information check with the
|
||||
<a href="https://www.gnu.org/savannah-checkouts/gnu/autoconf/manual/autoconf-2.69/html_node/Specifying-Target-Triplets.html">
|
||||
autoconf manual</a>.
|
||||
Note that you will need to correctly set <code>PKG_CONFIG_PATH</code> as well.
|
||||
|
||||
|
||||
<p>In some cases a single compiler is capable of handling both architectures
|
||||
(multilib) in that case one would need to set the <code>CC,CXX</code> variables
|
||||
appending the correct machine options. Seek your compiler documentation for
|
||||
further information -
|
||||
<a href="https://gcc.gnu.org/onlinedocs/gcc/Submodel-Options.html"> gcc
|
||||
machine dependent options</a></p>
|
||||
|
||||
<p>In addition to specifying correct <code>PKG_CONFIG_PATH</code> for the target
|
||||
architecture, the following should be sufficient to configure multilib Mesa</p>
|
||||
|
||||
<code>./configure CC="gcc -m32" CXX="g++ -m32" --build=x86_64-pc-linux-gnu --host=i686-pc-linux-gnu ...</code>
|
||||
<dt><code>--enable-32-bit</code></dt>
|
||||
<dt><code>--enable-64-bit</code></dt>
|
||||
<dd><p>By default, the
|
||||
build will compile code as directed by the environment variables
|
||||
<code>CC</code>, <code>CFLAGS</code>, etc. If the compiler is
|
||||
<code>gcc</code>, these options offer a helper to add the compiler flags
|
||||
to force 32- or 64-bit code generation as used on the x86 and x86_64
|
||||
architectures.</p>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
@@ -173,19 +171,19 @@ architecture, the following should be sufficient to configure multilib Mesa</p>
|
||||
There are several different driver modes that Mesa can use. These are
|
||||
described in more detail in the <a href="install.html">basic
|
||||
installation instructions</a>. The Mesa driver is controlled through the
|
||||
configure options <code>--enable-xlib-glx</code>, <code>--enable-osmesa</code>,
|
||||
and <code>--enable-dri</code>.
|
||||
configure option --with-driver. There are currently three supported
|
||||
options in the configure script.
|
||||
</p>
|
||||
|
||||
<h3 id="xlib">Xlib</h3><p>
|
||||
<h3 id="xlib">Xlib</h3><p>This is the default mode for building Mesa.
|
||||
It uses Xlib as a software renderer to do all rendering. It corresponds
|
||||
to the option <code>--enable-xlib-glx</code>. The libX11 and libXext
|
||||
to the option <code>--with-driver=xlib</code>. The libX11 and libXext
|
||||
libraries, as well as the X11 development headers, will be need to
|
||||
support the Xlib driver.
|
||||
|
||||
<h3 id="dri">DRI</h3><p>This mode uses the DRI hardware drivers for
|
||||
accelerated OpenGL rendering. Enable the DRI drivers with the option
|
||||
<code>--enable-dri</code>. See the <a href="install.html">basic
|
||||
<code>--with-driver=dri</code>. See the <a href="install.html">basic
|
||||
installation instructions</a> for details on prerequisites for the DRI
|
||||
drivers.
|
||||
|
||||
@@ -214,9 +212,7 @@ kernel DRM modules are not available.
|
||||
<dt><code>--enable-glx-tls</code> <dd><p>
|
||||
Enable Thread Local Storage (TLS) in
|
||||
GLX.
|
||||
<dt><code>--with-expat=DIR</code>
|
||||
<dd><p><strong>DEPRECATED</strong>, use <code>PKG_CONFIG_PATH</code> instead.</p>
|
||||
<p>The DRI-enabled libGL uses expat to
|
||||
<dt><code>--with-expat=DIR</code> <dd> The DRI-enabled libGL uses expat to
|
||||
parse the DRI configuration files in <code>/etc/drirc</code> and
|
||||
<code>~/.drirc</code>. This option allows a specific expat installation
|
||||
to be used. For example, <code>--with-expat=/usr/local</code> will
|
||||
@@ -227,8 +223,7 @@ and <code>/usr/local/lib</code>, respectively.
|
||||
<h3 id="osmesa">OSMesa </h3><p> No libGL is built in this
|
||||
mode. Instead, the driver code is built into the Off-Screen Mesa
|
||||
(OSMesa) library. See the <a href="osmesa.html">Off-Screen Rendering</a>
|
||||
page for more details. It corresponds to the option
|
||||
<code>--enable-osmesa</code>.
|
||||
page for more details.
|
||||
|
||||
<!-- OSMesa specific options -->
|
||||
<dl>
|
||||
|
@@ -19,7 +19,7 @@
|
||||
<p>
|
||||
The SGI OpenGL conformance tests verify correct operation of OpenGL
|
||||
implementations. I, Brian Paul, have been given a copy of the tests
|
||||
for testing Mesa. The tests are not publicly available.
|
||||
for testing Mesa. The tests are not publically available.
|
||||
</p>
|
||||
<p>
|
||||
This file has the latest results of testing Mesa with the OpenGL 1.2
|
||||
|
@@ -61,6 +61,7 @@
|
||||
<li><a href="shading.html" target="_parent">Shading Language</a>
|
||||
<li><a href="egl.html" target="_parent">EGL</a>
|
||||
<li><a href="opengles.html" target="_parent">OpenGL ES</a>
|
||||
<li><a href="openvg.html" target="_parent">OpenVG / Vega</a>
|
||||
<li><a href="envvars.html" target="_parent">Environment Variables</a>
|
||||
<li><a href="osmesa.html" target="_parent">Off-Screen Rendering</a>
|
||||
<li><a href="debugging.html" target="_parent">Debugging Tips</a>
|
||||
@@ -70,7 +71,6 @@
|
||||
<li><a href="llvmpipe.html" target="_parent">Gallium llvmpipe driver</a>
|
||||
<li><a href="vmware-guest.html" target="_parent">VMware SVGA3D guest driver</a>
|
||||
<li><a href="postprocess.html" target="_parent">Gallium post-processing</a>
|
||||
<li><a href="application-issues.html" target="_parent">Application Issues</a>
|
||||
<li><a href="viewperf.html" target="_parent">Viewperf Issues</a>
|
||||
</ul>
|
||||
|
||||
|
@@ -17,7 +17,7 @@
|
||||
<h1>Development Notes</h1>
|
||||
|
||||
|
||||
<h2>Adding Extensions</h2>
|
||||
<h2>Adding Extentions</h2>
|
||||
|
||||
<p>
|
||||
To add a new GL extension to Mesa you have to do at least the following.
|
||||
@@ -36,7 +36,7 @@ To add a new GL extension to Mesa you have to do at least the following.
|
||||
</pre>
|
||||
</li>
|
||||
<li>
|
||||
In the src/mapi/glapi/gen/ directory, add the new extension functions and
|
||||
In the src/mesa/glapi/ directory, add the new extension functions and
|
||||
enums to the gl_API.xml file.
|
||||
Then, a bunch of source files must be regenerated by executing the
|
||||
corresponding Python scripts.
|
||||
@@ -56,11 +56,6 @@ To add a new GL extension to Mesa you have to do at least the following.
|
||||
If the new extension adds new GL state, the functions in get.c, enable.c
|
||||
and attrib.c will most likely require new code.
|
||||
</li>
|
||||
<li>
|
||||
The dispatch tests check_table.cpp and dispatch_sanity.cpp
|
||||
should be updated with details about the new extensions functions. These
|
||||
tests are run using 'make check'
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -160,29 +155,6 @@ of <tt>bool</tt>, <tt>true</tt>, and
|
||||
src/mesa/state_tracker/st_glsl_to_tgsi.cpp can serve as examples.
|
||||
</p>
|
||||
|
||||
<h2>Submitting patches</h2>
|
||||
|
||||
<p>
|
||||
You should always run the Mesa Testsuite before submitting patches.
|
||||
The Testsuite can be run using the 'make check' command. All tests
|
||||
must pass before patches will be accepted, this may mean you have
|
||||
to update the tests themselves.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Patches should be sent to the Mesa mailing list for review.
|
||||
When submitting a patch make sure to use git send-email rather than attaching
|
||||
patches to emails. Sending patches as attachments prevents people from being
|
||||
able to provide in-line review comments.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
When submitting follow-up patches you can use --in-reply-to to make v2, v3,
|
||||
etc patches show up as replies to the originals. This usually works well
|
||||
when you're sending out updates to individual patches (as opposed to
|
||||
re-sending the whole series). Using --in-reply-to makes
|
||||
it harder for reviewers to accidentally review old patches.
|
||||
</p>
|
||||
|
||||
<h2>Marking a commit as a candidate for a stable branch</h2>
|
||||
|
||||
@@ -195,116 +167,18 @@ you should add an appropriate note to the commit message.
|
||||
Here are some examples of such a note:
|
||||
</p>
|
||||
<ul>
|
||||
<li>CC: <mesa-stable@lists.freedesktop.org></li>
|
||||
<li>CC: "9.2 10.0" <mesa-stable@lists.freedesktop.org></li>
|
||||
<li>CC: "10.0" <mesa-stable@lists.freedesktop.org></li>
|
||||
<li>NOTE: This is a candidate for the 9.0 branch.</li>
|
||||
<li>NOTE: This is a candidate for the 8.0 and 9.0 branches.</li>
|
||||
<li>NOTE: This is a candidate for the stable branches.</li>
|
||||
</ul>
|
||||
|
||||
Simply adding the CC to the mesa-stable list address is adequate to nominate
|
||||
the commit for the most-recently-created stable branch. It is only necessary
|
||||
to specify a specific branch name, (such as "9.2 10.0" or "10.0" in the
|
||||
examples above), if you want to nominate the commit for an older stable
|
||||
branch. And, as in these examples, you can nominate the commit for the older
|
||||
branch in addition to the more recent branch, or nominate the commit
|
||||
exclusively for the older branch.
|
||||
|
||||
This "CC" syntax for patch nomination will cause patches to automatically be
|
||||
copied to the mesa-stable@ mailing list when you use "git send-email" to send
|
||||
patches to the mesa-dev@ mailing list. Also, if you realize that a commit
|
||||
should be nominated for the stable branch after it has already been committed,
|
||||
you can send a note directly to the mesa-stable@lists.freedesktop.org where
|
||||
the Mesa stable-branch maintainers will receive it. Be sure to mention the
|
||||
commit ID of the commit of interest (as it appears in the mesa master branch).
|
||||
<h2>Cherry-picking candidates for a stable branch</h2>
|
||||
|
||||
The latest set of patches that have been nominated, accepted, or rejected for
|
||||
the upcoming stable release can always be seen on the
|
||||
<a href="http://cworth.org/~cworth/mesa-stable-queue/">Mesa Stable Queue</a>
|
||||
page.
|
||||
|
||||
<h2>Criteria for accepting patches to the stable branch</h2>
|
||||
|
||||
Mesa has a designated release manager for each stable branch, and the release
|
||||
manager is the only developer that should be pushing changes to these
|
||||
branches. Everyone else should simply nominate patches using the mechanism
|
||||
described above.
|
||||
|
||||
The stable-release manager will work with the list of nominated patches, and
|
||||
for each patch that meets the crtieria below will cherry-pick the patch with:
|
||||
<code>git cherry-pick -x <commit></code>. The <code>-x</code> option is
|
||||
important so that the picked patch references the comit ID of the original
|
||||
patch.
|
||||
|
||||
The stable-release manager may at times need to force-push changes to the
|
||||
stable branches, for example, to drop a previously-picked patch that was later
|
||||
identified as causing a regression). These force-pushes may cause changes to
|
||||
be lost from the stable branch if developers push things directly. Consider
|
||||
yourself warned.
|
||||
|
||||
The stable-release manager is also given broad discretion in rejecting patches
|
||||
that have been nominated for the stable branch. The most basic rule is that
|
||||
the stable branch is for bug fixes only, (no new features, no
|
||||
regressions). Here is a non-exhaustive list of some reasons that a patch may
|
||||
be rejected:
|
||||
|
||||
<ul>
|
||||
<li>Patch introduces a regression. Any reported build breakage or other
|
||||
regression caused by a particular patch, (game no longer work, piglit test
|
||||
changes from PASS to FAIL), is justification for rejecting a patch.</li>
|
||||
|
||||
<li>Patch is too large, (say, larger than 100 lines)</li>
|
||||
|
||||
<li>Patch is not a fix. For example, a commit that moves code around with no
|
||||
functional change should be rejected.</li>
|
||||
|
||||
<li>Patch fix is not clearly described. For example, a commit message
|
||||
of only a single line, no description of the bug, no mention of bugzilla,
|
||||
etc.</li>
|
||||
|
||||
<li>Patch has not obviously been reviewed, For example, the commit message
|
||||
has no Reviewed-by, Signed-off-by, nor Tested-by tags from anyone but the
|
||||
author.</li>
|
||||
|
||||
<li>Patch has not already been merged to the master branch. As a rule, bug
|
||||
fixes should never be applied first to a stable branch. Patches should land
|
||||
first on the master branch and then be cherry-picked to a stable
|
||||
branch. (This is to avoid future releases causing regressions if the patch
|
||||
is not also applied to master.) The only things that might look like
|
||||
exceptions would be backports of patches from master that happen to look
|
||||
significantly different.</li>
|
||||
|
||||
<li>Patch depends on too many other patches. Ideally, all stable-branch
|
||||
patches should be self-contained. It sometimes occurs that a single, logical
|
||||
bug-fix occurs as two separate patches on master, (such as an original
|
||||
patch, then a subsequent fix-up to that patch). In such a case, these two
|
||||
patches should be squashed into a single, self-contained patch for the
|
||||
stable branch. (Of course, if the squashing makes the patch too large, then
|
||||
that could be a reason to reject the patch.)</li>
|
||||
|
||||
<li>Patch includes new feature development, not bug fixes. New OpenGL
|
||||
features, extensions, etc. should be applied to Mesa master and included in
|
||||
the next major release. Stable releases are intended only for bug fixes.
|
||||
|
||||
Note: As an exception to this rule, the stable-release manager may accept
|
||||
hardware-enabling "features". For example, backports of new code to support
|
||||
a newly-developed hardware product can be accepted if they can be reasonably
|
||||
determined to not have effects on other hardware.</li>
|
||||
|
||||
<li>Patch is a performance optimization. As a rule, performance patches are
|
||||
not candidates for the stable branch. The only exception might be a case
|
||||
where an application's performance was recently severely impacted so as to
|
||||
become unusable. The fix for this performance regression could then be
|
||||
considered for a stable branch. The optimization must also be
|
||||
non-controversial and the patches still need to meet the other criteria of
|
||||
being simple and self-contained</li>
|
||||
|
||||
<li>Patch introduces a new failure mode (such as an assert). While the new
|
||||
assert might technically be correct, for example to make Mesa more
|
||||
conformant, this is not the kind of "bug fix" we want in a stable
|
||||
release. The potential problem here is that an OpenGL program that was
|
||||
previously working, (even if technically non-compliant with the
|
||||
specification), could stop working after this patch. So that would be a
|
||||
regression that is unaacceptable for the stable branch.</li>
|
||||
</ul>
|
||||
<p>
|
||||
Please use <code>git cherry-pick -x <commit></code> for cherry-picking a commit
|
||||
from master to a stable branch.
|
||||
</p>
|
||||
|
||||
<h2>Making a New Mesa Release</h2>
|
||||
|
||||
@@ -315,205 +189,71 @@ These are the instructions for making a new Mesa release.
|
||||
<h3>Get latest source files</h3>
|
||||
<p>
|
||||
Use git to get the latest Mesa files from the git repository, from whatever
|
||||
branch is relevant. This document uses the convention X.Y.Z for the release
|
||||
being created, which should be created from a branch named X.Y.
|
||||
branch is relevant.
|
||||
</p>
|
||||
|
||||
<h3>Perform basic testing</h3>
|
||||
|
||||
<h3>Verify and update version info</h3>
|
||||
|
||||
<dl>
|
||||
<dt>configs/default</dt>
|
||||
<dd>MESA_MAJOR, MESA_MINOR and MESA_TINY</dd>
|
||||
<dt>Makefile.am</dt>
|
||||
<dd>PACKAGE_VERSION</dd>
|
||||
<dt>configure.ac</dt>
|
||||
<dd>AC_INIT</dd>
|
||||
<dt>src/mesa/main/version.h</dt>
|
||||
<dd>MESA_MAJOR, MESA_MINOR, MESA_PATCH and MESA_VERSION_STRING</dd>
|
||||
</dl>
|
||||
|
||||
<p>
|
||||
The release manager should, at the very least, test the code by compiling it,
|
||||
installing it, and running the latest piglit to ensure that no piglit tests
|
||||
have regressed since the previous release.
|
||||
Create a docs/relnotes-x.y.z.html file.
|
||||
The bin/shortlog_mesa.sh script can be used to create a HTML-formatted list
|
||||
of changes to include in the file.
|
||||
Link the new docs/relnotes-x.y.z.html file into the main <a href="relnotes.html">relnotes.html</a> file.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The release manager should do this testing with at least one hardware driver,
|
||||
(say, whatever is contained in the local development machine), as well as on
|
||||
both Gallium and non-Gallium software drivers. The software testing can be
|
||||
performed by running piglit with the following environment-variable set:
|
||||
Update <a href="index.html">docs/index.html</a>.
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
LIBGL_ALWAYS_SOFTWARE=1
|
||||
</pre>
|
||||
<p>
|
||||
Tag the files with the release name (in the form <b>mesa-x.y</b>)
|
||||
with: <code>git tag -a mesa-x.y</code>
|
||||
Then: <code>git push origin mesa-x.y</code>
|
||||
</p>
|
||||
|
||||
And Gallium vs. non-Gallium software drivers can be obtained by using the
|
||||
following configure flags on separate builds:
|
||||
|
||||
<h3>Make the tarballs</h3>
|
||||
<p>
|
||||
Make the distribution files. From inside the Mesa directory:
|
||||
<pre>
|
||||
--with-dri-drivers=swrast
|
||||
--with-gallium-drivers=swrast
|
||||
make tarballs
|
||||
</pre>
|
||||
|
||||
<p>
|
||||
Note: If both options are given in one build, both swrast_dri.so drivers will
|
||||
be compiled, but only one will be installed. The following command can be used
|
||||
to ensure the correct driver is being tested:
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
LIBGL_ALWAYS_SOFTWARE=1 glxinfo | grep "renderer string"
|
||||
</pre>
|
||||
|
||||
If any regressions are found in this testing with piglit, stop here, and do
|
||||
not perform a release until regressions are fixed.
|
||||
|
||||
<h3>Update version in file VERSION</h3>
|
||||
|
||||
<p>
|
||||
Increment the version contained in the file VERSION at Mesa's top-level, then
|
||||
commit this change.
|
||||
</p>
|
||||
|
||||
<h3>Create release notes for the new release</h3>
|
||||
|
||||
<p>
|
||||
Create a new file docs/relnotes/X.Y.Z.html, (follow the style of the previous
|
||||
release notes). Note that the sha256sums section of the release notes should
|
||||
be empty at this point.
|
||||
After the tarballs are created, the md5 checksums for the files will
|
||||
be computed.
|
||||
Add them to the docs/relnotes-x.y.html file.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Two scripts are available to help generate portions of the release notes:
|
||||
|
||||
<pre>
|
||||
./bin/bugzilla_mesa.sh
|
||||
./bin/shortlog_mesa.sh
|
||||
</pre>
|
||||
Copy the distribution files to a temporary directory, unpack them,
|
||||
compile everything, and run some demos to be sure everything works.
|
||||
</p>
|
||||
|
||||
<h3>Update the website and announce the release</h3>
|
||||
<p>
|
||||
The first script identifies commits that reference bugzilla bugs and obtains
|
||||
the descriptions of those bugs from bugzilla. The second script generates a
|
||||
log of all commits. In both cases, HTML-formatted lists are printed to stdout
|
||||
to be included in the release notes.
|
||||
Follow the directions on SourceForge for creating a new "release" and
|
||||
uploading the tarballs.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Commit these changes
|
||||
</p>
|
||||
|
||||
<h3>Make the release archives, signatures, and the release tag</h3>
|
||||
<p>
|
||||
From inside the Mesa directory:
|
||||
<pre>
|
||||
./autogen.sh
|
||||
make -j1 tarballs
|
||||
</pre>
|
||||
|
||||
<p>
|
||||
After the tarballs are created, the sha256 checksums for the files will
|
||||
be computed and printed. These will be used in a step below.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
It's important at this point to also verify that the constructed tar file
|
||||
actually builds:
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
tar xjf MesaLib-X.Y.Z.tar.bz2
|
||||
cd Mesa-X.Y.Z
|
||||
./configure --enable-gallium-llvm
|
||||
make -j6
|
||||
make install
|
||||
</pre>
|
||||
|
||||
<p>
|
||||
Some touch testing should also be performed at this point, (run glxgears or
|
||||
more involved OpenGL programs against the installed Mesa).
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Create detached GPG signatures for each of the archive files created above:
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
gpg --sign --detach MesaLib-X.Y.Z.tar.gz
|
||||
gpg --sign --detach MesaLib-X.Y.Z.tar.bz2
|
||||
gpg --sign --detach MesaLib-X.Y.Z.zip
|
||||
</pre>
|
||||
|
||||
<p>
|
||||
Tag the commit used for the build:
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
git tag -s mesa-X.Y.X -m "Mesa X.Y.Z release"
|
||||
</pre>
|
||||
|
||||
<p>
|
||||
Note: It would be nice to investigate and fix the issue that causes the
|
||||
tarballs target to fail with multiple build process, such as with "-j4". It
|
||||
would also be nice to incorporate all of the above commands into a single
|
||||
makefile target. And instead of a custom "tarballs" target, we should
|
||||
incorporate things into the standard "make dist" and "make distcheck" targets.
|
||||
</p>
|
||||
|
||||
<h3>Add the sha256sums to the release notes</h3>
|
||||
|
||||
<p>
|
||||
Edit docs/relnotes/X.Y.Z.html to add the sha256sums printed as part of "make
|
||||
tarballs" in the previous step. Commit this change.
|
||||
</p>
|
||||
|
||||
<h3>Push all commits and the tag creates above</h3>
|
||||
|
||||
<p>
|
||||
This is the first step that cannot easily be undone. The release is going
|
||||
forward from this point:
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
git push origin X.Y --tags
|
||||
</pre>
|
||||
|
||||
<h3>Install the release files and signatures on the distribution server</h3>
|
||||
|
||||
<p>
|
||||
The following commands can be used to copy the release archive files and
|
||||
signatures to the freedesktop.org server:
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
scp MesaLib-X.Y.Z* people.freedesktop.org:
|
||||
ssh people.freedesktop.org
|
||||
cd /srv/ftp.freedesktop.org/pub/mesa
|
||||
mkdir X.Y.Z
|
||||
cd X.Y.Z
|
||||
mv ~/MesaLib-X.Y.Z* .
|
||||
</pre>
|
||||
|
||||
<h3>Back on mesa master, andd the new release notes into the tree</h3>
|
||||
|
||||
<p>
|
||||
Something like the following steps will do the trick:
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
cp docs/relnotes/X.Y.Z.html /tmp
|
||||
git checkout master
|
||||
cp /tmp/X.Y.Z.html docs/relnotes
|
||||
git add docs/relnotes/X.Y.Z.html
|
||||
</pre>
|
||||
|
||||
<p>
|
||||
Also, edit docs/relnotes.html to add a link to the new release notes, and edit
|
||||
docs/index.html to add a news entry. Then commit and push:
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
git commit -a -m "docs: Import X.Y.Z release notes, add news item."
|
||||
git push origin
|
||||
</pre>
|
||||
|
||||
<h3>Update the mesa3d.org website</h3>
|
||||
|
||||
<p>
|
||||
NOTE: The recent release managers have not been performing this step
|
||||
themselves, but leaving this to Brian Paul, (who has access to the
|
||||
sourceforge.net hosting for mesa3d.org). Brian is more than willing to grant
|
||||
the permission necessary to future release managers to do this step on their
|
||||
own.
|
||||
Basically, to upload the tarball files with:
|
||||
<br>
|
||||
<code>
|
||||
rsync -avP ssh Mesa*-X.Y.* USERNAME@frs.sourceforge.net:uploads/
|
||||
</code>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
@@ -525,22 +265,13 @@ sftp USERNAME,mesa3d@web.sourceforge.net
|
||||
</code>
|
||||
</p>
|
||||
|
||||
|
||||
<h3>Announce the release</h3>
|
||||
<p>
|
||||
Make an announcement on the mailing lists:
|
||||
|
||||
<em>mesa-dev@lists.freedesktop.org</em>,
|
||||
<em>m</em><em>e</em><em>s</em><em>a</em><em>-</em><em>d</em><em>e</em><em>v</em><em>@</em><em>l</em><em>i</em><em>s</em><em>t</em><em>s</em><em>.</em><em>f</em><em>r</em><em>e</em><em>e</em><em>d</em><em>e</em><em>s</em><em>k</em><em>t</em><em>o</em><em>p</em><em>.</em><em>o</em><em>r</em><em>g</em>,
|
||||
<em>m</em><em>e</em><em>s</em><em>a</em><em>-</em><em>u</em><em>s</em><em>e</em><em>r</em><em>s</em><em>@</em><em>l</em><em>i</em><em>s</em><em>t</em><em>s</em><em>.</em><em>f</em><em>r</em><em>e</em><em>e</em><em>d</em><em>e</em><em>s</em><em>k</em><em>t</em><em>o</em><em>p</em><em>.</em><em>o</em><em>r</em><em>g</em>
|
||||
and
|
||||
<em>mesa-announce@lists.freedesktop.org</em>
|
||||
|
||||
Follow the template of previously-sent release announcements. The following
|
||||
command can be used to generate the log of changes to be included in the
|
||||
release announcement:
|
||||
|
||||
<pre>
|
||||
git shortlog mesa-X.Y.Z-1..mesa-X.Y.Z
|
||||
</pre>
|
||||
<em>m</em><em>e</em><em>s</em><em>a</em><em>-</em><em>a</em><em>n</em><em>n</em><em>o</em><em>u</em><em>n</em><em>c</em><em>e</em><em>@</em><em>l</em><em>i</em><em>s</em><em>t</em><em>s</em><em>.</em><em>f</em><em>r</em><em>e</em><em>e</em><em>d</em><em>e</em><em>s</em><em>k</em><em>t</em><em>o</em><em>p</em><em>.</em><em>o</em><em>r</em><em>g</em>
|
||||
</p>
|
||||
|
||||
</div>
|
||||
|
@@ -25,7 +25,7 @@ href="#overview">overview of Mesa's implementation</a>.</p>
|
||||
<h2>1. Complexity of GL Dispatch</h2>
|
||||
|
||||
<p>Every GL application has at least one object called a GL <em>context</em>.
|
||||
This object, which is an implicit parameter to every GL function, stores all
|
||||
This object, which is an implicit parameter to ever GL function, stores all
|
||||
of the GL related state for the application. Every texture, every buffer
|
||||
object, every enable, and much, much more is stored in the context. Since
|
||||
an application can have more than one context, the context to be used is
|
||||
@@ -51,7 +51,7 @@ example, <tt>glFogCoordf</tt> may operate differently depending on whether
|
||||
or not fog is enabled.</p>
|
||||
|
||||
<p>In multi-threaded environments, it is possible for each thread to have a
|
||||
different GL context current. This means that poor old <tt>glVertex3fv</tt>
|
||||
differnt GL context current. This means that poor old <tt>glVertex3fv</tt>
|
||||
has to know which GL context is current in the thread where it is being
|
||||
called.</p>
|
||||
|
||||
@@ -204,15 +204,16 @@ terribly relevant.</p>
|
||||
few preprocessor defines.</p>
|
||||
|
||||
<ul>
|
||||
<li>If <tt>GLX_USE_TLS</tt> is defined, method #3 is used.</li>
|
||||
<li>If <tt>HAVE_PTHREAD</tt> is defined, method #2 is used.</li>
|
||||
<li>If none of the preceding are defined, method #1 is used.</li>
|
||||
<li>If <tt>GLX_USE_TLS</tt> is defined, method #4 is used.</li>
|
||||
<li>If <tt>HAVE_PTHREAD</tt> is defined, method #3 is used.</li>
|
||||
<li>If <tt>WIN32_THREADS</tt> is defined, method #2 is used.</li>
|
||||
<li>If none of the preceeding are defined, method #1 is used.</li>
|
||||
</ul>
|
||||
|
||||
<p>Two different techniques are used to handle the various different cases.
|
||||
On x86 and SPARC, a macro called <tt>GL_STUB</tt> is used. In the preamble
|
||||
of the assembly source file different implementations of the macro are
|
||||
selected based on the defined preprocessor variables. The assembly code
|
||||
selected based on the defined preprocessor variables. The assmebly code
|
||||
then consists of a series of invocations of the macros such as:
|
||||
|
||||
<blockquote>
|
||||
@@ -241,7 +242,7 @@ first technique, is to insert <tt>#ifdef</tt> within the assembly
|
||||
implementation of each function. This makes the assembly file considerably
|
||||
larger (e.g., 29,332 lines for <tt>glapi_x86-64.S</tt> versus 1,155 lines for
|
||||
<tt>glapi_x86.S</tt>) and causes simple changes to the function
|
||||
implementation to generate many lines of diffs. Since the assembly files
|
||||
implementation to generate many lines of diffs. Since the assmebly files
|
||||
are typically generated by scripts (see <a href="#autogen">below</a>), this
|
||||
isn't a significant problem.</p>
|
||||
|
||||
|
@@ -77,22 +77,26 @@ drivers will be installed to <code>${libdir}/egl</code>.</p>
|
||||
|
||||
</dd>
|
||||
|
||||
<dt><code>--enable-gallium-egl</code></dt>
|
||||
<dd>
|
||||
|
||||
<p>Enable the optional <code>egl_gallium</code> driver.</p>
|
||||
|
||||
</dd>
|
||||
|
||||
<dt><code>--with-egl-platforms</code></dt>
|
||||
<dd>
|
||||
|
||||
<p>List the platforms (window systems) to support. Its argument is a comma
|
||||
separated string such as <code>--with-egl-platforms=x11,drm</code>. It decides
|
||||
seprated string such as <code>--with-egl-platforms=x11,drm</code>. It decides
|
||||
the platforms a driver may support. The first listed platform is also used by
|
||||
the main library to decide the native platform: the platform the EGL native
|
||||
types such as <code>EGLNativeDisplayType</code> or
|
||||
<code>EGLNativeWindowType</code> defined for.</p>
|
||||
|
||||
<p>The available platforms are <code>x11</code>, <code>drm</code>,
|
||||
<code>wayland</code>, <code>null</code>, <code>android</code>,
|
||||
<code>haiku</code>, and <code>gdi</code>. The <code>android</code> platform
|
||||
can only be built as a system component, part of AOSP, while the
|
||||
<code>haiku</code> and <code>gdi</code> platforms can only be built with SCons.
|
||||
Unless for special needs, the build system should
|
||||
<code>fbdev</code>, and <code>gdi</code>. The <code>gdi</code> platform can
|
||||
only be built with SCons. Unless for special needs, the build system should
|
||||
select the right platforms automatically.</p>
|
||||
|
||||
</dd>
|
||||
@@ -115,6 +119,13 @@ is required if applications mix OpenGL and OpenGL ES.</p>
|
||||
|
||||
</dd>
|
||||
|
||||
<dt><code>--enable-openvg</code></dt>
|
||||
<dd>
|
||||
|
||||
<p>OpenVG must be explicitly enabled by this option.</p>
|
||||
|
||||
</dd>
|
||||
|
||||
</dl>
|
||||
|
||||
<h2>Use EGL</h2>
|
||||
@@ -183,6 +194,14 @@ probably required only for some of the demos found in mesa/demo repository.</p>
|
||||
values are: <code>debug</code>, <code>info</code>, <code>warning</code>, and
|
||||
<code>fatal</code>.</p>
|
||||
|
||||
</dd>
|
||||
|
||||
<dt><code>EGL_SOFTWARE</code></dt>
|
||||
<dd>
|
||||
|
||||
<p>For drivers that support both hardware and software rendering, setting this
|
||||
variable to true forces the use of software rendering.</p>
|
||||
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
@@ -200,15 +219,52 @@ the X server directly using (XCB-)DRI2 protocol.</p>
|
||||
|
||||
</dd>
|
||||
|
||||
<dt><code>egl_gallium</code></dt>
|
||||
<dd>
|
||||
|
||||
<p>This driver is based on Gallium3D. It supports all rendering APIs and
|
||||
hardwares supported by Gallium3D. It is the only driver that supports OpenVG.
|
||||
The supported platforms are X11, DRM, FBDEV, and GDI.</p>
|
||||
|
||||
<p>This driver comes with its own hardware drivers
|
||||
(<code>pipe_<hw></code>) and client API modules
|
||||
(<code>st_<api></code>).</p>
|
||||
|
||||
</dd>
|
||||
|
||||
<dt><code>egl_glx</code></dt>
|
||||
<dd>
|
||||
|
||||
<p>This driver provides a wrapper to GLX. It uses exclusively GLX to implement
|
||||
the EGL API. It supports both direct and indirect rendering when the GLX does.
|
||||
It is accelerated when the GLX is. As such, it cannot provide functions that
|
||||
is not available in GLX or GLX extensions.</p>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
<h2>Packaging</h2>
|
||||
|
||||
<p>The ABI between the main library and its drivers are not stable. Nor is
|
||||
there a plan to stabilize it at the moment.</p>
|
||||
there a plan to stabilize it at the moment. Of the EGL drivers,
|
||||
<code>egl_gallium</code> has its own hardware drivers and client API modules.
|
||||
They are considered internal to <code>egl_gallium</code> and there is also no
|
||||
stable ABI between them. These should be kept in mind when packaging for
|
||||
distribution.</p>
|
||||
|
||||
<p>Generally, <code>egl_dri2</code> is preferred over <code>egl_gallium</code>
|
||||
when the system already has DRI drivers. As <code>egl_gallium</code> is loaded
|
||||
before <code>egl_dri2</code> when both are available, <code>egl_gallium</code>
|
||||
is disabled by default.</p>
|
||||
|
||||
<h2>Developers</h2>
|
||||
|
||||
<p>The sources of the main library and drivers can be found at
|
||||
<code>src/egl/</code>.</p>
|
||||
<p>The sources of the main library and the classic drivers can be found at
|
||||
<code>src/egl/</code>. The sources of the <code>egl</code> state tracker can
|
||||
be found at <code>src/gallium/state_trackers/egl/</code>.</p>
|
||||
|
||||
<p>The suggested way to learn to write a EGL driver is to see how other drivers
|
||||
are written. <code>egl_glx</code> should be a good reference. It works in any
|
||||
environment that has GLX support, and it is simpler than most drivers.</p>
|
||||
|
||||
<h3>Lifetime of Display Resources</h3>
|
||||
|
||||
@@ -217,8 +273,8 @@ longer than the display that creates them.</p>
|
||||
|
||||
<p>In EGL, when a display is terminated through <code>eglTerminate</code>, all
|
||||
display resources should be destroyed. Similarly, when a thread is released
|
||||
through <code>eglReleaseThread</code>, all current display resources should be
|
||||
released. Another way to destroy or release resources is through functions
|
||||
throught <code>eglReleaseThread</code>, all current display resources should be
|
||||
released. Another way to destory or release resources is through functions
|
||||
such as <code>eglDestroySurface</code> or <code>eglMakeCurrent</code>.</p>
|
||||
|
||||
<p>When a resource that is current to some thread is destroyed, the resource
|
||||
|
@@ -32,9 +32,6 @@ sometimes be useful for debugging end-user issues.
|
||||
<li>LIBGL_ALWAYS_INDIRECT - forces an indirect rendering context/connection.
|
||||
<li>LIBGL_ALWAYS_SOFTWARE - if set, always use software rendering
|
||||
<li>LIBGL_NO_DRAWARRAYS - if set do not use DrawArrays GLX protocol (for debugging)
|
||||
<li>LIBGL_SHOW_FPS - print framerate to stdout based on the number of glXSwapBuffers
|
||||
calls per second.
|
||||
<li>LIBGL_DRI3_DISABLE - disable DRI3 if set (the value does not matter)
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -48,7 +45,7 @@ sometimes be useful for debugging end-user issues.
|
||||
<li>MESA_NO_SSE - if set, disables Intel SSE optimizations
|
||||
<li>MESA_DEBUG - if set, error messages are printed to stderr. For example,
|
||||
if the application generates a GL_INVALID_ENUM error, a corresponding error
|
||||
message indicating where the error occurred, and possibly why, will be
|
||||
message indicating where the error occured, and possibly why, will be
|
||||
printed to stderr.<br>
|
||||
If the value of MESA_DEBUG is 'FP' floating point arithmetic errors will
|
||||
generate exceptions.
|
||||
@@ -122,38 +119,10 @@ See the <a href="xlibdriver.html">Xlib software driver page</a> for details.
|
||||
<h2>i945/i965 driver environment variables (non-Gallium)</h2>
|
||||
|
||||
<ul>
|
||||
<li>INTEL_NO_HW - if set to 1, prevents batches from being submitted to the hardware.
|
||||
This is useful for debugging hangs, etc.</li>
|
||||
<li>INTEL_DEBUG - a comma-separated list of named flags, which do various things:
|
||||
<ul>
|
||||
<li>tex - emit messages about textures.</li>
|
||||
<li>state - emit messages about state flag tracking</li>
|
||||
<li>blit - emit messages about blit operations</li>
|
||||
<li>miptree - emit messages about miptrees</li>
|
||||
<li>perf - emit messages about performance issues</li>
|
||||
<li>perfmon - emit messages about AMD_performance_monitor</li>
|
||||
<li>bat - emit batch information</li>
|
||||
<li>pix - emit messages about pixel operations</li>
|
||||
<li>buf - emit messages about buffer objects</li>
|
||||
<li>reg - emit messages about regions</li>
|
||||
<li>fbo - emit messages about framebuffers</li>
|
||||
<li>fs - dump shader assembly for fragment shaders</li>
|
||||
<li>gs - dump shader assembly for geometry shaders</li>
|
||||
<li>sync - emit messages about synchronization</li>
|
||||
<li>prim - emit messages about drawing primitives</li>
|
||||
<li>vert - emit messages about vertex assembly</li>
|
||||
<li>dri - emit messages about the DRI interface</li>
|
||||
<li>sf - emit messages about the strips & fans unit (for old gens, includes the SF program)</li>
|
||||
<li>stats - enable statistics counters. you probably actually want perfmon or intel_gpu_top instead.</li>
|
||||
<li>urb - emit messages about URB setup</li>
|
||||
<li>vs - dump shader assembly for vertex shaders</li>
|
||||
<li>clip - emit messages about the clip unit (for old gens, includes the CLIP program)</li>
|
||||
<li>aub - dump batches into an AUB trace for use with simulation tools</li>
|
||||
<li>shader_time - record how much GPU time is spent in each shader</li>
|
||||
<li>no16 - suppress generation of 16-wide fragment shaders. useful for debugging broken shaders</li>
|
||||
<li>blorp - emit messages about the blorp operations (blits & clears)</li>
|
||||
<li>nodualobj - suppress generation of dual-object geometry shader code</li>
|
||||
</ul>
|
||||
<li>INTEL_STRICT_CONFORMANCE - if set to 1, enable sw fallbacks to improve
|
||||
OpenGL conformance. If set to 2, always use software rendering.
|
||||
<li>INTEL_NO_BLIT - if set, disable hardware-accelerated glBitmap,
|
||||
glCopyPixels, glDrawPixels.
|
||||
</ul>
|
||||
|
||||
|
||||
@@ -175,13 +144,14 @@ Mesa EGL supports different sets of environment variables. See the
|
||||
<h2>Gallium environment variables</h2>
|
||||
|
||||
<ul>
|
||||
<li>GALLIUM_HUD - draws various information on the screen, like framerate,
|
||||
cpu load, driver statistics, performance counters, etc.
|
||||
Set GALLIUM_HUD=help and run e.g. glxgears for more info.
|
||||
<li>GALLIUM_LOG_FILE - specifies a file for logging all errors, warnings, etc.
|
||||
rather than stderr.
|
||||
<li>GALLIUM_PRINT_OPTIONS - if non-zero, print all the Gallium environment
|
||||
variables which are used, and their current values.
|
||||
<li>GALLIUM_NOSSE - if non-zero, do not use SSE runtime code generation for
|
||||
shader execution
|
||||
<li>GALLIUM_NOPPC - if non-zero, do not use PPC runtime code generation for
|
||||
shader execution
|
||||
<li>GALLIUM_DUMP_CPU - if non-zero, print information about the CPU on start-up
|
||||
<li>TGSI_PRINT_SANITY - if set, do extra sanity checking on TGSI shaders and
|
||||
print any errors to stderr.
|
||||
@@ -189,9 +159,6 @@ Mesa EGL supports different sets of environment variables. See the
|
||||
<LI>DRAW_NO_FSE - ???
|
||||
<li>DRAW_USE_LLVM - if set to zero, the draw module will not use LLVM to execute
|
||||
shaders, vertex fetch, etc.
|
||||
<li>ST_DEBUG - controls debug output from the Mesa/Gallium state tracker.
|
||||
Setting to "tgsi", for example, will print all the TGSI shaders.
|
||||
See src/mesa/state_tracker/st_debug.c for other options.
|
||||
</ul>
|
||||
|
||||
<h3>Softpipe driver environment variables</h3>
|
||||
@@ -202,14 +169,14 @@ See src/mesa/state_tracker/st_debug.c for other options.
|
||||
to stderr
|
||||
<li>SOFTPIPE_NO_RAST - if set, rasterization is no-op'd. For profiling purposes.
|
||||
<li>SOFTPIPE_USE_LLVM - if set, the softpipe driver will try to use LLVM JIT for
|
||||
vertex shading processing.
|
||||
vertex shading procesing.
|
||||
</ul>
|
||||
|
||||
|
||||
<h3>LLVMpipe driver environment variables</h3>
|
||||
<ul>
|
||||
<li>LP_NO_RAST - if set LLVMpipe will no-op rasterization
|
||||
<li>LP_DEBUG - a comma-separated list of debug options is accepted. See the
|
||||
<li>LP_DEBUG - a comma-separated list of debug options is acceptec. See the
|
||||
source code for details.
|
||||
<li>LP_PERF - a comma-separated list of options to selectively no-op various
|
||||
parts of the driver. See the source code for details.
|
||||
@@ -218,16 +185,6 @@ See src/mesa/state_tracker/st_debug.c for other options.
|
||||
cores present.
|
||||
</ul>
|
||||
|
||||
<h3>VMware SVGA driver environment variables</h3>
|
||||
<ul>
|
||||
<li>SVGA_FORCE_SWTNL - force use of software vertex transformation
|
||||
<li>SVGA_NO_SWTNL - don't allow software vertex transformation fallbacks
|
||||
(will often result in incorrect rendering).
|
||||
<li>SVGA_DEBUG - for dumping shaders, constant buffers, etc. See the code
|
||||
for details.
|
||||
<li>See the driver code for other, lesser-used variables.
|
||||
</ul>
|
||||
|
||||
|
||||
<p>
|
||||
Other Gallium drivers have their own environment variables. These may change
|
||||
|
@@ -23,27 +23,19 @@ The specifications follow.
|
||||
|
||||
|
||||
<ul>
|
||||
<li><a href="specs/MESA_agp_offset.spec">MESA_agp_offset.spec</a>
|
||||
<li><a href="specs/MESA_copy_sub_buffer.spec">MESA_copy_sub_buffer.spec</a>
|
||||
<li><a href="specs/MESA_drm_image.spec">MESA_drm_image.spec</a>
|
||||
<li><a href="specs/MESA_multithread_makecurrent.spec">MESA_multithread_makecurrent.spec</a>
|
||||
<li><a href="specs/OLD/MESA_packed_depth_stencil.spec">MESA_packed_depth_stencil.spec</a> (obsolete)
|
||||
<li><a href="specs/MESA_pack_invert.spec">MESA_pack_invert.spec</a>
|
||||
<li><a href="specs/MESA_pixmap_colormap.spec">MESA_pixmap_colormap.spec</a>
|
||||
<li><a href="specs/OLD/MESA_program_debug.spec">MESA_program_debug.spec</a> (obsolete)
|
||||
<li><a href="specs/MESA_release_buffers.spec">MESA_release_buffers.spec</a>
|
||||
<li><a href="specs/OLD/MESA_resize_buffers.spec">MESA_resize_buffers.spec</a> (obsolete)
|
||||
<li><a href="specs/MESA_set_3dfx_mode.spec">MESA_set_3dfx_mode.spec</a>
|
||||
<li><a href="specs/MESA_shader_debug.spec">MESA_shader_debug.spec</a>
|
||||
<li><a href="specs/OLD/MESA_sprite_point.spec">MESA_sprite_point.spec</a> (obsolete)
|
||||
<li><a href="specs/MESA_swap_control.spec">MESA_swap_control.spec</a>
|
||||
<li><a href="specs/MESA_swap_frame_usage.spec">MESA_swap_frame_usage.spec</a>
|
||||
<li><a href="specs/MESA_texture_array.spec">MESA_texture_array.spec</a>
|
||||
<li><a href="specs/MESA_texture_signed_rgba.spec">MESA_texture_signed_rgba.spec</a>
|
||||
<li><a href="specs/OLD/MESA_trace.spec">MESA_trace.spec</a> (obsolete)
|
||||
<li><a href="specs/MESA_window_pos.spec">MESA_window_pos.spec</a>
|
||||
<li><a href="specs/MESA_ycbcr_texture.spec">MESA_ycbcr_texture.spec</a>
|
||||
<li><a href="specs/WL_bind_wayland_display.spec">WL_bind_wayland_display.spec</a>
|
||||
<li><a href="MESA_agp_offset.spec">MESA_agp_offset.spec</a>
|
||||
<li><a href="MESA_copy_sub_buffer.spec">MESA_copy_sub_buffer.spec</a>
|
||||
<li><a href="MESA_packed_depth_stencil.spec">MESA_packed_depth_stencil.spec</a>
|
||||
<li><a href="MESA_pack_invert.spec">MESA_pack_invert.spec</a>
|
||||
<li><a href="MESA_pixmap_colormap.spec">MESA_pixmap_colormap.spec</a>
|
||||
<li><a href="MESA_release_buffers.spec">MESA_release_buffers.spec</a>
|
||||
<li><a href="MESA_resize_buffers.spec">MESA_resize_buffers.spec</a>
|
||||
<li><a href="MESA_set_3dfx_mode.spec">MESA_set_3dfx_mode.spec</a>
|
||||
<li><a href="MESA_sprite_point.spec">MESA_sprite_point.spec</a> (obsolete)
|
||||
<li><a href="MESA_texture_signed_rgba.spec">MESA_texture_signed_rgba.spec</a>
|
||||
<li><a href="MESA_trace.spec">MESA_trace.spec</a> (obsolete)
|
||||
<li><a href="MESA_window_pos.spec">MESA_window_pos.spec</a>
|
||||
<li><a href="MESA_ycbcr_texture.spec">MESA_ycbcr_texture.spec</a>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
|
@@ -137,7 +137,7 @@ Just follow the Mesa <a href="install.html">compilation instructions</a>.
|
||||
<h2>1.6 Are there other open-source implementations of OpenGL?</h2>
|
||||
<p>
|
||||
Yes, SGI's <a href="http://oss.sgi.com/projects/ogl-sample/index.html">
|
||||
OpenGL Sample Implementation (SI)</a> is available.
|
||||
OpenGL Sample Implemenation (SI)</a> is available.
|
||||
The SI was written during the time that OpenGL was originally designed.
|
||||
Unfortunately, development of the SI has stagnated.
|
||||
Mesa is much more up to date with modern features and extensions.
|
||||
@@ -327,6 +327,19 @@ Basically, applying a translation of (0.375, 0.375, 0.0) to your coordinates
|
||||
will fix the problem.
|
||||
</p>
|
||||
|
||||
<h2>3.6 How can I change the maximum framebuffer size in Mesa's
|
||||
<tt>swrast</tt> backend?</h2>
|
||||
<p>
|
||||
These can be overridden by using the <tt>--with-max-width</tt> and
|
||||
<tt>--with-max-height</tt> options. The two need not be equal.
|
||||
</p><p>
|
||||
Do note that Mesa uses these values to size some internal buffers,
|
||||
so increasing these sizes will cause Mesa to require additional
|
||||
memory. Furthermore, increasing these limits beyond <tt>4096</tt>
|
||||
may introduce rasterization artifacts; see the leading comments in
|
||||
<tt>src/mesa/swrast/s_tritemp.h</tt>.
|
||||
</p>
|
||||
|
||||
<br>
|
||||
<br>
|
||||
|
||||
@@ -340,7 +353,7 @@ That's where Mesa development is discussed.
|
||||
</p>
|
||||
<p>
|
||||
The <a href="http://www.opengl.org/documentation">
|
||||
OpenGL Specification</a> is the bible for OpenGL implementation work.
|
||||
OpenGL Specification</a> is the bible for OpenGL implemention work.
|
||||
You should read it.
|
||||
</p>
|
||||
<p>Most of the Mesa development work involves implementing new OpenGL
|
||||
@@ -362,7 +375,7 @@ For a Gallium3D hardware driver, the r300g, r600g and the i915g are good example
|
||||
</p>
|
||||
<p>The DRI website has more information about writing hardware drivers.
|
||||
The process isn't well document because the Mesa driver interface changes
|
||||
over time, and we seldom have spare time for writing documentation.
|
||||
over time, and we seldome have spare time for writing documentation.
|
||||
That being said, many people have managed to figure out the process.
|
||||
</p>
|
||||
<p>
|
||||
@@ -377,7 +390,7 @@ The <a href="http://oss.sgi.com/projects/ogl-sample/registry/EXT/texture_compres
|
||||
indicates that there are intellectual property (IP) and/or patent issues
|
||||
to be dealt with.
|
||||
</p>
|
||||
<p>We've been unsuccessful in getting a response from S3 (or whoever owns
|
||||
<p>We've been unsucessful in getting a response from S3 (or whoever owns
|
||||
the IP nowadays) to indicate whether or not an open source project can
|
||||
implement the extension (specifically the compression/decompression
|
||||
algorithms).
|
||||
|
486
docs/index.html
486
docs/index.html
@@ -2,7 +2,7 @@
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||
<title>The Mesa 3D Graphics Library</title>
|
||||
<title>Mesa News</title>
|
||||
<link rel="stylesheet" type="text/css" href="mesa.css">
|
||||
</head>
|
||||
<body>
|
||||
@@ -16,394 +16,10 @@
|
||||
|
||||
<h1>News</h1>
|
||||
|
||||
<h2>May 11, 2015</h2>
|
||||
<p>
|
||||
<a href="relnotes/10.5.5.html">Mesa 10.5.5</a> is released.
|
||||
This is a bug-fix release.
|
||||
</p>
|
||||
|
||||
<h2>April 24, 2015</h2>
|
||||
<p>
|
||||
<a href="relnotes/10.5.4.html">Mesa 10.5.4</a> is released.
|
||||
This is a bug-fix release.
|
||||
</p>
|
||||
|
||||
<h2>April 12, 2015</h2>
|
||||
<p>
|
||||
<a href="relnotes/10.5.3.html">Mesa 10.5.3</a> is released.
|
||||
This is a bug-fix release.
|
||||
</p>
|
||||
|
||||
<h2>March 28, 2015</h2>
|
||||
<p>
|
||||
<a href="relnotes/10.5.2.html">Mesa 10.5.2</a> is released.
|
||||
This is a bug-fix release.
|
||||
</p>
|
||||
|
||||
<h2>March 20, 2015</h2>
|
||||
<p>
|
||||
<a href="relnotes/10.4.7.html">Mesa 10.4.7</a> is released.
|
||||
This is a bug-fix release.
|
||||
</p>
|
||||
|
||||
<h2>March 13, 2015</h2>
|
||||
<p>
|
||||
<a href="relnotes/10.5.1.html">Mesa 10.5.1</a> is released.
|
||||
This is a bug-fix release.
|
||||
</p>
|
||||
|
||||
<h2>March 06, 2015</h2>
|
||||
<p>
|
||||
<a href="relnotes/10.5.0.html">Mesa 10.5.0</a> is released. This is a new
|
||||
development release. See the release notes for more information about
|
||||
the release.
|
||||
</p>
|
||||
|
||||
<h2>March 06, 2015</h2>
|
||||
<p>
|
||||
<a href="relnotes/10.4.6.html">Mesa 10.4.6</a> is released.
|
||||
This is a bug-fix release.
|
||||
</p>
|
||||
|
||||
<h2>February 21, 2015</h2>
|
||||
<p>
|
||||
<a href="relnotes/10.4.5.html">Mesa 10.4.5</a> is released.
|
||||
This is a bug-fix release.
|
||||
</p>
|
||||
|
||||
<h2>February 06, 2015</h2>
|
||||
<p>
|
||||
<a href="relnotes/10.4.4.html">Mesa 10.4.4</a> is released.
|
||||
This is a bug-fix release.
|
||||
</p>
|
||||
|
||||
<h2>January 24, 2015</h2>
|
||||
<p>
|
||||
<a href="relnotes/10.4.3.html">Mesa 10.4.3</a> is released.
|
||||
This is a bug-fix release.
|
||||
</p>
|
||||
|
||||
<h2>January 12, 2015</h2>
|
||||
<p>
|
||||
<a href="relnotes/10.3.7.html">Mesa 10.3.7</a>
|
||||
and <a href="relnotes/10.4.2.html">Mesa 10.4.2</a> are released.
|
||||
|
||||
These are bug-fix releases from the 10.3 and 10.4 branches, respectively.
|
||||
<br>
|
||||
NOTE: It is anticipated that 10.3.7 will be the final release in the 10.3
|
||||
series. Users of 10.3 are encouraged to migrate to the 10.4 series in order
|
||||
to obtain future fixes.
|
||||
</p>
|
||||
|
||||
<h2>December 29, 2014</h2>
|
||||
<p>
|
||||
<a href="relnotes/10.3.6.html">Mesa 10.3.6</a>
|
||||
and <a href="relnotes/10.4.1.html">Mesa 10.4.1</a> are released.
|
||||
|
||||
These are bug-fix releases from the 10.3 and 10.4 branches, respectively.
|
||||
</p>
|
||||
|
||||
<h2>December 14, 2014</h2>
|
||||
<p>
|
||||
<a href="relnotes/10.4.html">Mesa 10.4</a> is released. This is a new
|
||||
development release. See the release notes for more information about
|
||||
the release.
|
||||
</p>
|
||||
|
||||
<h2>December 5, 2014</h2>
|
||||
<p>
|
||||
<a href="relnotes/10.3.5.html">Mesa 10.3.5</a> is released.
|
||||
This is a bug-fix release.
|
||||
</p>
|
||||
|
||||
<h2>November 21, 2014</h2>
|
||||
<p>
|
||||
<a href="relnotes/10.3.4.html">Mesa 10.3.4</a> is released.
|
||||
This is a bug-fix release.
|
||||
</p>
|
||||
|
||||
<h2>November 8, 2014</h2>
|
||||
<p>
|
||||
<a href="relnotes/10.3.3.html">Mesa 10.3.3</a> is released.
|
||||
This is a bug-fix release.
|
||||
</p>
|
||||
|
||||
<h2>October 24, 2014</h2>
|
||||
<p>
|
||||
<a href="relnotes/10.3.2.html">Mesa 10.3.2</a> is released.
|
||||
This is a bug-fix release.
|
||||
</p>
|
||||
|
||||
<h2>October 12, 2014</h2>
|
||||
<p>
|
||||
<a href="relnotes/10.2.9.html">Mesa 10.2.9</a>
|
||||
and <a href="relnotes/10.3.1.html">Mesa 10.3.1</a> are released.
|
||||
|
||||
These are bug-fix releases from the 10.2 and 10.3 branches, respectively.
|
||||
<br>
|
||||
NOTE: It is anticipated that 10.2.9 will be the final release in the 10.2
|
||||
series. Users of 10.2 are encouraged to migrate to the 10.3 series in order
|
||||
to obtain future fixes.
|
||||
</p>
|
||||
|
||||
<h2>September 19, 2014</h2>
|
||||
<p>
|
||||
<a href="relnotes/10.3.html">Mesa 10.3</a> is released. This is a new
|
||||
development release. See the release notes for more information about
|
||||
the release.
|
||||
</p>
|
||||
<p>
|
||||
Also, <a href="relnotes/10.2.8.html">Mesa 10.2.8</a> is released.
|
||||
This is a bug fix release from the 10.2 branch.
|
||||
</p>
|
||||
|
||||
<h2>September 6, 2014</h2>
|
||||
<p>
|
||||
<a href="relnotes/10.2.7.html">Mesa 10.2.7</a> is released.
|
||||
This is a bug-fix release.
|
||||
</p>
|
||||
|
||||
<h2>August 19, 2014</h2>
|
||||
<p>
|
||||
<a href="relnotes/10.2.6.html">Mesa 10.2.6</a> is released.
|
||||
This is a bug-fix release.
|
||||
</p>
|
||||
|
||||
<h2>August 2, 2014</h2>
|
||||
<p>
|
||||
<a href="relnotes/10.2.5.html">Mesa 10.2.5</a> is released.
|
||||
This is a bug-fix release.
|
||||
</p>
|
||||
|
||||
<h2>July 18, 2014</h2>
|
||||
<p>
|
||||
<a href="relnotes/10.2.4.html">Mesa 10.2.4</a> is released.
|
||||
This is a bug-fix release.
|
||||
</p>
|
||||
|
||||
<h2>July 7, 2014</h2>
|
||||
<p>
|
||||
<a href="relnotes/10.2.3.html">Mesa 10.2.3</a> is released.
|
||||
This is a bug-fix release.
|
||||
</p>
|
||||
|
||||
<h2>July 5, 2014</h2>
|
||||
|
||||
<p>
|
||||
Mesa demos 8.2.0 is released.
|
||||
See the <a href="http://lists.freedesktop.org/archives/mesa-announce/2014-July/000100.html">announcement</a> for more information about the release.
|
||||
You can download it from <a href="ftp://ftp.freedesktop.org/pub/mesa/demos/8.2.0/">ftp.freedesktop.org/pub/mesa/demos/8.2.0/</a>.
|
||||
</p>
|
||||
|
||||
<h2>June 24, 2014</h2>
|
||||
<p>
|
||||
<a href="relnotes/10.1.6.html">Mesa 10.1.6</a>
|
||||
and <a href="relnotes/10.2.2.html">Mesa 10.2.2</a> are released.
|
||||
|
||||
These are bug-fix releases from the 10.1 and 10.2 branches, respectively.
|
||||
</p>
|
||||
|
||||
<h2>June 6, 2014</h2>
|
||||
<p>
|
||||
<a href="relnotes/10.2.1.html">Mesa 10.2.1</a> is released. This release
|
||||
only fixes a build error in the radeonsi driver that was introduced between
|
||||
10.2-rc5 and the 10.2 final release.
|
||||
</p>
|
||||
|
||||
<h2>June 6, 2014</h2>
|
||||
<p>
|
||||
<a href="relnotes/10.2.html">Mesa 10.2</a> is released. This is a new
|
||||
development release. See the release notes for more information about
|
||||
the release.
|
||||
</p>
|
||||
<p>
|
||||
Also, <a href="relnotes/10.1.5.html">Mesa 10.1.5</a> is released.
|
||||
This is a bug fix release from the 10.1 branch.
|
||||
</p>
|
||||
|
||||
<h2>May 20, 2014</h2>
|
||||
<p>
|
||||
<a href="relnotes/10.1.4.html">Mesa 10.1.4</a> is released.
|
||||
This is a bug-fix release.
|
||||
</p>
|
||||
|
||||
<h2>May 9, 2014</h2>
|
||||
<p>
|
||||
<a href="relnotes/10.1.3.html">Mesa 10.1.3</a> is released.
|
||||
This is a bug-fix release, and is being released sooner than
|
||||
originally scheduled to fix a performance regression (vmware
|
||||
swapbuffers falling back to software) introduced to the
|
||||
10.1.2 release.
|
||||
</p>
|
||||
|
||||
<h2>May 5, 2014</h2>
|
||||
<p>
|
||||
<a href="relnotes/10.1.2.html">Mesa 10.1.2</a> is released.
|
||||
This is a bug-fix release.
|
||||
</p>
|
||||
|
||||
<h2>April 18, 2014</h2>
|
||||
<p>
|
||||
<a href="relnotes/10.1.1.html">Mesa 10.1.1</a> is released.
|
||||
This is a bug-fix release.
|
||||
</p>
|
||||
|
||||
<h2>April 18, 2014</h2>
|
||||
<p>
|
||||
<a href="relnotes/10.0.5.html">Mesa 10.0.5</a> is released.
|
||||
This is a bug-fix release.
|
||||
<br>
|
||||
NOTE: Since the 10.1.1 release is being released concurrently, it is
|
||||
anticipated that 10.0.5 will be the final release in the 10.0
|
||||
series. Users of 10.0 are encouraged to migrate to the 10.1 series in
|
||||
order to obtain future fixes.
|
||||
</p>
|
||||
|
||||
<h2>March 12, 2014</h2>
|
||||
<p>
|
||||
<a href="relnotes/10.0.4.html">Mesa 10.0.4</a> is released.
|
||||
This is a bug-fix release.
|
||||
</p>
|
||||
|
||||
<h2>March 4, 2014</h2>
|
||||
<p>
|
||||
<a href="relnotes/10.1.html">Mesa 10.1</a> is released.
|
||||
This is a new development release.
|
||||
See the release notes for more information about the release.
|
||||
</p>
|
||||
|
||||
<h2>February 3, 2014</h2>
|
||||
<p>
|
||||
<a href="relnotes/10.0.3.html">Mesa 10.0.3</a> is released.
|
||||
This is a bug-fix release.
|
||||
</p>
|
||||
|
||||
<h2>January 9, 2014</h2>
|
||||
<p>
|
||||
<a href="relnotes/10.0.2.html">Mesa 10.0.2</a> is released.
|
||||
This is a bug-fix release.
|
||||
</p>
|
||||
|
||||
<h2>December 12, 2013</h2>
|
||||
<p>
|
||||
<a href="relnotes/10.0.1.html">Mesa 10.0.1</a>
|
||||
and <a href="relnotes/9.2.5.html">Mesa 9.2.5</a> are released.
|
||||
These are both bug-fix releases.
|
||||
</p>
|
||||
|
||||
<h2>November 30, 2013</h2>
|
||||
<p>
|
||||
<a href="relnotes/10.0.html">Mesa 10.0</a> is released.
|
||||
This is a new development release.
|
||||
See the release notes for more information about the release.
|
||||
</p>
|
||||
|
||||
<h2>November 27, 2013</h2>
|
||||
<p>
|
||||
<a href="relnotes/9.2.4.html">Mesa 9.2.4</a> is released.
|
||||
This is a bug fix release.
|
||||
</p>
|
||||
|
||||
<h2>November 13, 2013</h2>
|
||||
<p>
|
||||
<a href="relnotes/9.2.3.html">Mesa 9.2.3</a> is released.
|
||||
This is a bug fix release.
|
||||
</p>
|
||||
|
||||
<h2>October 18, 2013</h2>
|
||||
<p>
|
||||
<a href="relnotes/9.2.2.html">Mesa 9.2.2</a> is released.
|
||||
This is a bug fix release.
|
||||
</p>
|
||||
|
||||
<h2>October 4, 2013</h2>
|
||||
<p>
|
||||
<a href="relnotes/9.2.1.html">Mesa 9.2.1</a> and
|
||||
<a href="relnotes/9.1.7.html">Mesa 9.1.7</a> are released,
|
||||
both bug-fix releases.
|
||||
</p>
|
||||
|
||||
<h2>August 27, 2013</h2>
|
||||
<p>
|
||||
<a href="relnotes/9.2.html">Mesa 9.2</a> is released.
|
||||
This is a new development release.
|
||||
See the release notes for more information about the release.
|
||||
</p>
|
||||
|
||||
<h2>August 1, 2013</h2>
|
||||
<p>
|
||||
<a href="relnotes/9.1.6.html">Mesa 9.1.6</a> is released.
|
||||
This is a bug fix release.
|
||||
</p>
|
||||
|
||||
<h2>July 17, 2013</h2>
|
||||
<p>
|
||||
<a href="relnotes/9.1.5.html">Mesa 9.1.5</a> is released.
|
||||
This is a bug fix release.
|
||||
</p>
|
||||
|
||||
<h2>July 1, 2013</h2>
|
||||
<p>
|
||||
<a href="relnotes/9.1.4.html">Mesa 9.1.4</a> is released.
|
||||
This is a bug fix release.
|
||||
</p>
|
||||
|
||||
<h2>May 21, 2013</h2>
|
||||
<p>
|
||||
<a href="relnotes/9.1.3.html">Mesa 9.1.3</a> is released.
|
||||
This is a bug fix release.
|
||||
</p>
|
||||
|
||||
<h2>April 30, 2013</h2>
|
||||
<p>
|
||||
<a href="relnotes/9.1.2.html">Mesa 9.1.2</a> is released.
|
||||
This is a bug fix release.
|
||||
</p>
|
||||
|
||||
<h2>March 19, 2013</h2>
|
||||
<p>
|
||||
<a href="relnotes/9.1.1.html">Mesa 9.1.1</a> is released.
|
||||
This is a bug fix release.
|
||||
</p>
|
||||
|
||||
<h2>February 24, 2013</h2>
|
||||
|
||||
<p>
|
||||
Mesa demos 8.1.0 is released.
|
||||
See the <a href="http://lists.freedesktop.org/archives/mesa-dev/2013-February/035180.html">announcement</a> for more information about the release.
|
||||
You can download it from <a href="ftp://ftp.freedesktop.org/pub/mesa/demos/8.1.0/">ftp.freedesktop.org/pub/mesa/demos/8.1.0/</a>.
|
||||
</p>
|
||||
|
||||
|
||||
<h2>February 22, 2013</h2>
|
||||
|
||||
<p>
|
||||
<a href="relnotes/9.1.html">Mesa 9.1</a> is released.
|
||||
This is a new development release.
|
||||
See the release notes for more information about the release.
|
||||
</p>
|
||||
|
||||
|
||||
<h2>February 21, 2013</h2>
|
||||
|
||||
<p>
|
||||
<a href="relnotes/9.0.3.html">Mesa 9.0.3</a> is released.
|
||||
This is a bug fix release.
|
||||
</p>
|
||||
|
||||
|
||||
<h2>January 22, 2013</h2>
|
||||
|
||||
<p>
|
||||
<a href="relnotes/9.0.2.html">Mesa 9.0.2</a> is released.
|
||||
This is a bug fix release.
|
||||
</p>
|
||||
|
||||
|
||||
<h2>November 16, 2012</h2>
|
||||
|
||||
<p>
|
||||
<a href="relnotes/9.0.1.html">Mesa 9.0.1</a> is released.
|
||||
<a href="relnotes-9.0.1.html">Mesa 9.0.1</a> is released.
|
||||
This is a bug fix release.
|
||||
</p>
|
||||
|
||||
@@ -411,7 +27,7 @@ This is a bug fix release.
|
||||
<h2>October 24, 2012</h2>
|
||||
|
||||
<p>
|
||||
<a href="relnotes/8.0.5.html">Mesa 8.0.5</a> is released.
|
||||
<a href="relnotes-8.0.5.html">Mesa 8.0.5</a> is released.
|
||||
This is a bug fix release.
|
||||
</p>
|
||||
|
||||
@@ -419,7 +35,7 @@ This is a bug fix release.
|
||||
<h2>October 8, 2012</h2>
|
||||
|
||||
<p>
|
||||
<a href="relnotes/9.0.html">Mesa 9.0</a> is released.
|
||||
<a href="relnotes-9.0.html">Mesa 9.0</a> is released.
|
||||
This is the first version of Mesa to support OpenGL 3.1 and GLSL 1.40
|
||||
(with the i965 driver).
|
||||
See the release notes for more information about the release.
|
||||
@@ -429,7 +45,7 @@ See the release notes for more information about the release.
|
||||
<h2>July 10, 2012</h2>
|
||||
|
||||
<p>
|
||||
<a href="relnotes/8.0.4.html">Mesa 8.0.4</a> is released.
|
||||
<a href="relnotes-8.0.4.html">Mesa 8.0.4</a> is released.
|
||||
This is a bug fix release.
|
||||
</p>
|
||||
|
||||
@@ -437,7 +53,7 @@ This is a bug fix release.
|
||||
<h2>May 18, 2012</h2>
|
||||
|
||||
<p>
|
||||
<a href="relnotes/8.0.3.html">Mesa 8.0.3</a> is released.
|
||||
<a href="relnotes-8.0.3.html">Mesa 8.0.3</a> is released.
|
||||
This is a bug fix release.
|
||||
</p>
|
||||
|
||||
@@ -445,7 +61,7 @@ This is a bug fix release.
|
||||
<h2>March 21, 2012</h2>
|
||||
|
||||
<p>
|
||||
<a href="relnotes/8.0.2.html">Mesa 8.0.2</a> is released.
|
||||
<a href="relnotes-8.0.2.html">Mesa 8.0.2</a> is released.
|
||||
This is a bug fix release.
|
||||
</p>
|
||||
|
||||
@@ -453,14 +69,14 @@ This is a bug fix release.
|
||||
<h2>February 16, 2012</h2>
|
||||
|
||||
<p>
|
||||
<a href="relnotes/8.0.1.html">Mesa 8.0.1</a> is released. This is a bug fix
|
||||
<a href="relnotes-8.0.1.html">Mesa 8.0.1</a> is released. This is a bug fix
|
||||
release. See the release notes for more information about the release.
|
||||
</p>
|
||||
|
||||
<h2>February 9, 2012</h2>
|
||||
|
||||
<p>
|
||||
<a href="relnotes/8.0.html">Mesa 8.0</a> is released.
|
||||
<a href="relnotes-8.0.html">Mesa 8.0</a> is released.
|
||||
This is the first version of Mesa to support OpenGL 3.0 and GLSL 1.30
|
||||
(with the i965 driver).
|
||||
See the release notes for more information about the release.
|
||||
@@ -470,7 +86,7 @@ See the release notes for more information about the release.
|
||||
<h2>November 27, 2011</h2>
|
||||
|
||||
<p>
|
||||
<a href="relnotes/7.11.2.html">Mesa 7.11.2</a> is released. This is a bug fix
|
||||
<a href="relnotes-7.11.2.html">Mesa 7.11.2</a> is released. This is a bug fix
|
||||
release. This release was made primarily to fix build problems with 7.11.1 on
|
||||
Mandriva and to fix problems related to glCopyTexImage to luminance-alpha
|
||||
textures. The later was believed to have been fixed in 7.11.1 but was not.
|
||||
@@ -479,36 +95,36 @@ textures. The later was believed to have been fixed in 7.11.1 but was not.
|
||||
<h2>November 17, 2011</h2>
|
||||
|
||||
<p>
|
||||
<a href="relnotes/7.11.1.html">Mesa 7.11.1</a> is released. This is a bug
|
||||
<a href="relnotes-7.11.1.html">Mesa 7.11.1</a> is released. This is a bug
|
||||
fix release.
|
||||
</p>
|
||||
|
||||
<h2>July 31, 2011</h2>
|
||||
|
||||
<p>
|
||||
<a href="relnotes/7.11.html">Mesa 7.11</a> (final) is released. This is a new
|
||||
<a href="relnotes-7.11.html">Mesa 7.11</a> (final) is released. This is a new
|
||||
development release.
|
||||
</p>
|
||||
|
||||
<h2>June 13, 2011</h2>
|
||||
|
||||
<p>
|
||||
<a href="relnotes/7.10.3.html">Mesa 7.10.3</a> is released. This is a bug
|
||||
<a href="relnotes-7.10.3.html">Mesa 7.10.3</a> is released. This is a bug
|
||||
fix release.
|
||||
</p>
|
||||
|
||||
<h2>April 6, 2011</h2>
|
||||
|
||||
<p>
|
||||
<a href="relnotes/7.10.2.html">Mesa 7.10.2</a> is released. This is a bug
|
||||
<a href="relnotes-7.10.2.html">Mesa 7.10.2</a> is released. This is a bug
|
||||
fix release.
|
||||
</p>
|
||||
|
||||
<h2>March 2, 2011</h2>
|
||||
|
||||
<p>
|
||||
<a href="relnotes/7.9.2.html">Mesa 7.9.2</a> and
|
||||
<a href="relnotes/7.10.1.html">Mesa 7.10.1</a> are released. These are
|
||||
<a href="relnotes-7.9.2.html">Mesa 7.9.2</a> and
|
||||
<a href="relnotes-7.10.1.html">Mesa 7.10.1</a> are released. These are
|
||||
stable releases containing bug fixes since the 7.9.1 and 7.10 releases.
|
||||
</p>
|
||||
|
||||
@@ -516,7 +132,7 @@ stable releases containing bug fixes since the 7.9.1 and 7.10 releases.
|
||||
<h2>October 4, 2010</h2>
|
||||
|
||||
<p>
|
||||
<a href="relnotes/7.9.html">Mesa 7.9</a> (final) is released. This is a new
|
||||
<a href="relnotes-7.9.html">Mesa 7.9</a> (final) is released. This is a new
|
||||
development release.
|
||||
</p>
|
||||
|
||||
@@ -524,7 +140,7 @@ development release.
|
||||
<h2>September 27, 2010</h2>
|
||||
|
||||
<p>
|
||||
<a href="relnotes/7.9.html">Mesa 7.9.0-rc1</a> is released. This is a
|
||||
<a href="relnotes-7.9.html">Mesa 7.9.0-rc1</a> is released. This is a
|
||||
release candidate for the 7.9 development release.
|
||||
</p>
|
||||
|
||||
@@ -532,7 +148,7 @@ release candidate for the 7.9 development release.
|
||||
<h2>June 16, 2010</h2>
|
||||
|
||||
<p>
|
||||
<a href="relnotes/7.8.2.html">Mesa 7.8.2</a> is released. This is a bug-fix
|
||||
<a href="relnotes-7.8.2.html">Mesa 7.8.2</a> is released. This is a bug-fix
|
||||
release collecting fixes since the 7.8.1 release.
|
||||
</p>
|
||||
|
||||
@@ -540,18 +156,18 @@ release collecting fixes since the 7.8.1 release.
|
||||
<h2>April 5, 2010</h2>
|
||||
|
||||
<p>
|
||||
<a href="relnotes/7.8.1.html">Mesa 7.8.1</a> is released. This is a bug-fix
|
||||
<a href="relnotes-7.8.1.html">Mesa 7.8.1</a> is released. This is a bug-fix
|
||||
release for a few critical issues in the 7.8 release.
|
||||
</p>
|
||||
|
||||
|
||||
<h2>March 28, 2010</h2>
|
||||
<p>
|
||||
<a href="relnotes/7.7.1.html">Mesa 7.7.1</a> is released. This is a bug-fix
|
||||
<a href="relnotes-7.7.1.html">Mesa 7.7.1</a> is released. This is a bug-fix
|
||||
release fixing issues found in the 7.7 release.
|
||||
</p>
|
||||
<p>
|
||||
Also, <a href="relnotes/7.8.html">Mesa 7.8</a> is released. This is a new
|
||||
Also, <a href="relnotes-7.8.html">Mesa 7.8</a> is released. This is a new
|
||||
development release.
|
||||
</p>
|
||||
|
||||
@@ -559,37 +175,37 @@ development release.
|
||||
|
||||
<h2>December 21, 2009</h2>
|
||||
<p>
|
||||
<a href="relnotes/7.6.1.html">Mesa 7.6.1</a> is released. This is a bug-fix
|
||||
<a href="relnotes-7.6.1.html">Mesa 7.6.1</a> is released. This is a bug-fix
|
||||
release fixing issues found in the 7.6 release.
|
||||
</p>
|
||||
<p>
|
||||
Also, <a href="relnotes/7.7.html">Mesa 7.7</a> is released. This is a new
|
||||
Also, <a href="relnotes-7.7.html">Mesa 7.7</a> is released. This is a new
|
||||
development release.
|
||||
</p>
|
||||
|
||||
|
||||
<h2>September 28, 2009</h2>
|
||||
<p>
|
||||
<a href="relnotes/7.6.html">Mesa 7.6</a> is released. This is a new feature
|
||||
<a href="relnotes-7.6.html">Mesa 7.6</a> is released. This is a new feature
|
||||
release. Those especially concerned about stability may want to wait for the
|
||||
follow-on 7.6.1 bug-fix release.
|
||||
</p>
|
||||
<p>
|
||||
<a href="relnotes/7.5.2.html">Mesa 7.5.2</a> is also released.
|
||||
<a href="relnotes-7.5.2.html">Mesa 7.5.2</a> is also released.
|
||||
This is a stable release fixing bugs since the 7.5.1 release.
|
||||
</p>
|
||||
|
||||
|
||||
<h2>September 3, 2009</h2>
|
||||
<p>
|
||||
<a href="relnotes/7.5.1.html">Mesa 7.5.1</a> is released.
|
||||
<a href="relnotes-7.5.1.html">Mesa 7.5.1</a> is released.
|
||||
This is a bug-fix release which fixes bugs found in version 7.5.
|
||||
</p>
|
||||
|
||||
|
||||
<h2>July 17, 2009</h2>
|
||||
<p>
|
||||
<a href="relnotes/7.5.html">Mesa 7.5</a> is released.
|
||||
<a href="relnotes-7.5.html">Mesa 7.5</a> is released.
|
||||
This is a new features release. People especially concerned about
|
||||
stability may want to wait for the follow-on 7.5.1 bug-fix release.
|
||||
</p>
|
||||
@@ -597,7 +213,7 @@ stability may want to wait for the follow-on 7.5.1 bug-fix release.
|
||||
|
||||
<h2>June 23, 2009</h2>
|
||||
<p>
|
||||
<a href="relnotes/7.4.4.html">Mesa 7.4.4</a> is released.
|
||||
<a href="relnotes-7.4.4.html">Mesa 7.4.4</a> is released.
|
||||
This is a stable release that fixes a regression in the i915/i965 drivers
|
||||
that slipped into the 7.4.3 release.
|
||||
</p>
|
||||
@@ -605,35 +221,35 @@ that slipped into the 7.4.3 release.
|
||||
|
||||
<h2>June 19, 2009</h2>
|
||||
<p>
|
||||
<a href="relnotes/7.4.3.html">Mesa 7.4.3</a> is released.
|
||||
<a href="relnotes-7.4.3.html">Mesa 7.4.3</a> is released.
|
||||
This is a stable release fixing bugs since the 7.4.2 release.
|
||||
</p>
|
||||
|
||||
|
||||
<h2>May 15, 2009</h2>
|
||||
<p>
|
||||
<a href="relnotes/7.4.2.html">Mesa 7.4.2</a> is released.
|
||||
<a href="relnotes-7.4.2.html">Mesa 7.4.2</a> is released.
|
||||
This is a stable release fixing bugs since the 7.4.1 release.
|
||||
</p>
|
||||
|
||||
|
||||
<h2>April 18, 2009</h2>
|
||||
<p>
|
||||
<a href="relnotes/7.4.1.html">Mesa 7.4.1</a> is released.
|
||||
<a href="relnotes-7.4.1.html">Mesa 7.4.1</a> is released.
|
||||
This is a stable release fixing bugs since the 7.4 release.
|
||||
</p>
|
||||
|
||||
|
||||
<h2>March 27, 2009</h2>
|
||||
<p>
|
||||
<a href="relnotes/7.4.html">Mesa 7.4</a> is released.
|
||||
<a href="relnotes-7.4.html">Mesa 7.4</a> is released.
|
||||
This is a stable release fixing bugs since the 7.3 release.
|
||||
</p>
|
||||
|
||||
|
||||
<h2>January 22, 2009</h2>
|
||||
<p>
|
||||
<a href="relnotes/7.3.html">Mesa 7.3</a> is released.
|
||||
<a href="relnotes-7.3.html">Mesa 7.3</a> is released.
|
||||
This is a new development release.
|
||||
Mesa 7.4 will follow and will have bug fixes relative to 7.3.
|
||||
</p>
|
||||
@@ -641,14 +257,14 @@ Mesa 7.4 will follow and will have bug fixes relative to 7.3.
|
||||
|
||||
<h2>September 20, 2008</h2>
|
||||
<p>
|
||||
<a href="relnotes/7.2.html">Mesa 7.2</a> is released.
|
||||
<a href="relnotes-7.2.html">Mesa 7.2</a> is released.
|
||||
This is a stable, bug-fix release.
|
||||
</p>
|
||||
|
||||
|
||||
<h2>August 26, 2008</h2>
|
||||
<p>
|
||||
<a href="relnotes/7.1.html">Mesa 7.1</a> is released.
|
||||
<a href="relnotes-7.1.html">Mesa 7.1</a> is released.
|
||||
This is a new development release.
|
||||
It should be relatively stable, but those especially concerned about
|
||||
stability should wait for the 7.2 release or use Mesa 7.0.4 (the
|
||||
@@ -658,14 +274,14 @@ previous stable release).
|
||||
|
||||
<h2>August 16, 2008</h2>
|
||||
<p>
|
||||
<a href="relnotes/7.0.4.html">Mesa 7.0.4</a> is released.
|
||||
<a href="relnotes-7.0.4.html">Mesa 7.0.4</a> is released.
|
||||
This is a bug-fix release.
|
||||
</p>
|
||||
|
||||
|
||||
<h2>April 4, 2008</h2>
|
||||
<p>
|
||||
<a href="relnotes/7.0.3.html">Mesa 7.0.3</a> is released.
|
||||
<a href="relnotes-7.0.3.html">Mesa 7.0.3</a> is released.
|
||||
This is a bug-fix release.
|
||||
</p>
|
||||
|
||||
@@ -694,28 +310,28 @@ but other drivers will be coming...
|
||||
|
||||
<h2>November 10, 2007</h2>
|
||||
<p>
|
||||
<a href="relnotes/7.0.2.html">Mesa 7.0.2</a> is released.
|
||||
<a href="relnotes-7.0.2.html">Mesa 7.0.2</a> is released.
|
||||
This is a bug-fix release.
|
||||
</p>
|
||||
|
||||
|
||||
<h2>August 3, 2007</h2>
|
||||
<p>
|
||||
<a href="relnotes/7.0.1.html">Mesa 7.0.1</a> is released.
|
||||
<a href="relnotes-7.0.1.html">Mesa 7.0.1</a> is released.
|
||||
This is a bug-fix release.
|
||||
</p>
|
||||
|
||||
|
||||
<h2>June 22, 2007</h2>
|
||||
<p>
|
||||
<a href="relnotes/7.0.html">Mesa 7.0</a> is released.
|
||||
<a href="relnotes-7.0.html">Mesa 7.0</a> is released.
|
||||
This is a stable release featuring OpenGL 2.1 support.
|
||||
</p>
|
||||
|
||||
|
||||
<h2>April 27, 2007</h2>
|
||||
<p>
|
||||
<a href="relnotes/6.5.3.html">Mesa 6.5.3</a> is released.
|
||||
<a href="relnotes-6.5.3.html">Mesa 6.5.3</a> is released.
|
||||
This is a development release which will lead up to the Mesa 7.0 release
|
||||
(which will advertise OpenGL 2.1 API support).
|
||||
</p>
|
||||
@@ -746,33 +362,33 @@ See the <a href="repository.html">repository page</a> for more information.
|
||||
|
||||
<h2>December 2, 2006</h2>
|
||||
<p>
|
||||
<a href="relnotes/6.5.2.html">Mesa 6.5.2</a> has been released.
|
||||
<a href="relnotes-6.5.2.html">Mesa 6.5.2</a> has been released.
|
||||
This is a new development release.
|
||||
</p>
|
||||
|
||||
<h2>September 15, 2006</h2>
|
||||
<p>
|
||||
<a href="relnotes/6.5.1.html">Mesa 6.5.1</a> has been released.
|
||||
<a href="relnotes-6.5.1.html">Mesa 6.5.1</a> has been released.
|
||||
This is a new development release.
|
||||
</p>
|
||||
|
||||
<h2>March 31, 2006</h2>
|
||||
<p>
|
||||
<a href="relnotes/6.5.html">Mesa 6.5</a> has been released.
|
||||
<a href="relnotes-6.5.html">Mesa 6.5</a> has been released.
|
||||
This is a new development release.
|
||||
</p>
|
||||
|
||||
|
||||
<h2>February 2, 2006</h2>
|
||||
<p>
|
||||
<a href="relnotes/6.4.2.html">Mesa 6.4.2</a> has been released.
|
||||
<a href="relnotes-6.4.2.html">Mesa 6.4.2</a> has been released.
|
||||
This is stable, bug-fix release.
|
||||
</p>
|
||||
|
||||
|
||||
<h2>November 29, 2005</h2>
|
||||
<p>
|
||||
<a href="relnotes/6.4.1.html">Mesa 6.4.1</a> has been released.
|
||||
<a href="relnotes-6.4.1.html">Mesa 6.4.1</a> has been released.
|
||||
This is stable, bug-fix release.
|
||||
</p>
|
||||
|
||||
@@ -780,7 +396,7 @@ This is stable, bug-fix release.
|
||||
|
||||
<h2>October 24, 2005</h2>
|
||||
<p>
|
||||
<a href="relnotes/6.4.html">Mesa 6.4</a> has been released.
|
||||
<a href="relnotes-6.4.html">Mesa 6.4</a> has been released.
|
||||
This is stable, bug-fix release.
|
||||
</p>
|
||||
|
||||
@@ -1099,8 +715,8 @@ OpenGL 1.5 features.
|
||||
- demo of per-pixel lighting with a fragment program (demos/fplight.c)
|
||||
- new version (18) of glext.h header
|
||||
- new spriteblast.c demo of GL_ARB_point_sprite
|
||||
- faster glDrawPixels in X11 driver in some cases (see relnotes/5.1)
|
||||
- faster glCopyPixels in X11 driver in some cases (see relnotes/5.1)
|
||||
- faster glDrawPixels in X11 driver in some cases (see RELNOTES-5.1)
|
||||
- faster glCopyPixels in X11 driver in some cases (see RELNOTES-5.1)
|
||||
Bug fixes:
|
||||
- really enable OpenGL 1.4 features in DOS driver.
|
||||
- fixed issues in glDrawPixels and glCopyPixels for very wide images
|
||||
@@ -1372,7 +988,7 @@ The <a href="faq.html">Mesa FAQ</a> has been rewritten.
|
||||
- glGetTexImage was using pixel unpacking instead of packing params
|
||||
- auto-mipmap generation for cube maps was incorrect
|
||||
Changes:
|
||||
- max texture units reduced to six to accommodate texture rectangles
|
||||
- max texture units reduced to six to accomodate texture rectangles
|
||||
- removed unfinished GL_MESA_sprite_point extension code
|
||||
</pre>
|
||||
|
||||
|
@@ -34,29 +34,20 @@
|
||||
|
||||
<h2>1.1 General</h2>
|
||||
<ul>
|
||||
<li><a href="http://www.python.org/">Python</a> - Python is required.
|
||||
Version 2.6.4 or later should work.
|
||||
</li>
|
||||
<br>
|
||||
<li><a href="http://www.makotemplates.org/">Python Mako module</a> -
|
||||
Python Mako module is required. Version 0.7.3 or later should work.
|
||||
</li>
|
||||
</br>
|
||||
<li><a href="http://www.scons.org/">SCons</a> is required for building on
|
||||
Windows and optional for Linux (it's an alternative to autoconf/automake.)
|
||||
</li>
|
||||
<br>
|
||||
<li>lex / yacc - for building the GLSL compiler.
|
||||
<br>
|
||||
<br>
|
||||
On Linux systems, flex and bison are used.
|
||||
Versions 2.5.35 and 2.4.1, respectively, (or later) should work.
|
||||
<br>
|
||||
<br>
|
||||
On Windows with MinGW, install flex and bison with:
|
||||
<pre>mingw-get install msys-flex msys-bison</pre>
|
||||
For MSVC on Windows, install
|
||||
<a href="http://winflexbison.sourceforge.net/">Win flex-bison</a>.
|
||||
</li>
|
||||
<li>python - Python is needed for building the Gallium components.
|
||||
Version 2.6.4 or later should work.
|
||||
<br>
|
||||
<br>
|
||||
To build OpenGL ES 1.1 and 2.0 you'll also need
|
||||
<a href="http://xmlsoft.org/sources/win32/python/libxml2-python-2.7.7.win32-py2.7.exe">libxml2-python</a>.
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
@@ -82,7 +73,7 @@ the needed dependencies:
|
||||
<pre>
|
||||
sudo yum install flex bison imake libtool xorg-x11-proto-devel libdrm-devel \
|
||||
gcc-c++ xorg-x11-server-devel libXi-devel libXmu-devel libXdamage-devel git \
|
||||
expat-devel llvm-devel python-mako
|
||||
expat-devel llvm-devel
|
||||
</pre>
|
||||
|
||||
|
||||
@@ -127,13 +118,14 @@ by -debug for debug builds.
|
||||
To build Mesa with SCons for Windows on Linux using the MinGW crosscompiler toolchain do
|
||||
</p>
|
||||
<pre>
|
||||
scons platform=windows toolchain=crossmingw machine=x86 libgl-gdi
|
||||
scons platform=windows toolchain=crossmingw machine=x86 mesagdi libgl-gdi
|
||||
</pre>
|
||||
<p>
|
||||
This will create:
|
||||
</p>
|
||||
<ul>
|
||||
<li>build/windows-x86-debug/gallium/targets/libgl-gdi/opengl32.dll — Mesa + Gallium + softpipe (or llvmpipe), binary compatible with Windows's opengl32.dll
|
||||
<li>build/windows-x86-debug/mesa/drivers/windows/gdi/opengl32.dll — Mesa + swrast, binary compatible with Windows's opengl32.dll
|
||||
<li>build/windows-x86-debug/gallium/targets/libgl-gdi/opengl32.dll — Mesa + Gallium + softpipe, binary compatible with Windows's opengl32.dll
|
||||
</ul>
|
||||
<p>
|
||||
Put them all in the same directory to test them.
|
||||
|
@@ -49,7 +49,7 @@ stderr if the LIBGL_DEBUG environment variable is defined.
|
||||
libGL.so is thread safe. The overhead of thread safety for common,
|
||||
single-thread clients is negligible. However, the overhead of thread
|
||||
safety for multi-threaded clients is significant. Each GL API call
|
||||
requires two calls to pthread_get_specific() which can noticeably
|
||||
requires two calls to pthread_get_specific() which can noticably
|
||||
impact performance. Warning: libGL.so is thread safe but individual
|
||||
DRI drivers may not be. Please consult the documentation for a driver
|
||||
to learn if it is thread safe.
|
||||
|
@@ -75,10 +75,9 @@ 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.
|
||||
BRIAN PAUL 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.
|
||||
</pre>
|
||||
|
||||
|
||||
@@ -103,9 +102,6 @@ Device drivers src/mesa/drivers/* MIT, generally
|
||||
|
||||
Ext headers include/GL/glext.h Khronos
|
||||
include/GL/glxext.h
|
||||
|
||||
C11 thread include/c11/threads*.h Boost (permissive)
|
||||
emulation
|
||||
</pre>
|
||||
|
||||
<p>
|
||||
|
@@ -43,7 +43,11 @@ It's the fastest software rasterizer for Mesa.
|
||||
</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>LLVM: version 3.4 recommended; 3.3 or later required.</p>
|
||||
<p>LLVM: version 2.9 recommended; 2.6 or later required.</p>
|
||||
<p><b>NOTE</b>: LLVM 2.8 and earlier will not work on systems that support the
|
||||
Intel AVX extensions (e.g. Sandybridge). LLVM's code generator will
|
||||
fail when trying to emit AVX instructions. This was fixed in LLVM 2.9.
|
||||
</p>
|
||||
<p>
|
||||
For Linux, on a recent Debian based distribution do:
|
||||
</p>
|
||||
@@ -58,37 +62,15 @@ It's the fastest software rasterizer for Mesa.
|
||||
</pre>
|
||||
|
||||
<p>
|
||||
For Windows you will need to build LLVM from source with MSVC or MINGW
|
||||
(either natively or through cross compilers) and CMake, and set the LLVM
|
||||
environment variable to the directory you installed it to.
|
||||
For Windows you will need to build LLVM from source with MSVC or MINGW
|
||||
(either natively or through cross compilers) and CMake, and set the LLVM
|
||||
environment variable to the directory you installed it to.
|
||||
|
||||
LLVM will be statically linked, so when building on MSVC it needs to be
|
||||
built with a matching CRT as Mesa, and you'll need to pass
|
||||
<code>-DLLVM_USE_CRT_xxx=yyy</code> as described below.
|
||||
</p>
|
||||
-DLLVM_USE_CRT_RELEASE=MTd for debug and checked builds,
|
||||
-DLLVM_USE_CRT_RELEASE=MTd for profile and release builds.
|
||||
|
||||
<table border="1">
|
||||
<tr>
|
||||
<th rowspan="2">LLVM build-type</th>
|
||||
<th colspan="2" align="center">Mesa build-type</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>debug,checked</th>
|
||||
<th>release,profile</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Debug</th>
|
||||
<td><code>-DLLVM_USE_CRT_DEBUG=MTd</code></td>
|
||||
<td><code>-DLLVM_USE_CRT_DEBUG=MT</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Release</th>
|
||||
<td><code>-DLLVM_USE_CRT_RELEASE=MTd</code></td>
|
||||
<td><code>-DLLVM_USE_CRT_RELEASE=MT</code></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<p>
|
||||
You can build only the x86 target by passing -DLLVM_TARGETS_TO_BUILD=X86
|
||||
to cmake.
|
||||
</p>
|
||||
@@ -119,15 +101,13 @@ but the rest of these instructions assume that scons is used.
|
||||
For Windows the procedure is similar except the target:
|
||||
|
||||
<pre>
|
||||
scons platform=windows build=debug libgl-gdi
|
||||
scons build=debug libgl-gdi
|
||||
</pre>
|
||||
|
||||
|
||||
<h1>Using</h1>
|
||||
|
||||
<h2>Linux</h2>
|
||||
|
||||
<p>On Linux, building will create a drop-in alternative for libGL.so into</p>
|
||||
On Linux, building will create a drop-in alternative for libGL.so into
|
||||
|
||||
<pre>
|
||||
build/foo/gallium/targets/libgl-xlib/libGL.so
|
||||
@@ -137,81 +117,51 @@ or
|
||||
lib/gallium/libGL.so
|
||||
</pre>
|
||||
|
||||
<p>To use it set the LD_LIBRARY_PATH environment variable accordingly.</p>
|
||||
To use it set the LD_LIBRARY_PATH environment variable accordingly.
|
||||
|
||||
<p>For performance evaluation pass build=release to scons, and use the corresponding
|
||||
lib directory without the "-debug" suffix.</p>
|
||||
For performance evaluation pass debug=no to scons, and use the corresponding
|
||||
lib directory without the "-debug" suffix.
|
||||
|
||||
|
||||
<h2>Windows</h2>
|
||||
|
||||
<p>
|
||||
On Windows, building will create
|
||||
<code>build/windows-x86-debug/gallium/targets/libgl-gdi/opengl32.dll</code>
|
||||
which is a drop-in alternative for system's <code>opengl32.dll</code>. To use
|
||||
it put it in the same directory as your application. It can also be used by
|
||||
On Windows, building will create a drop-in alternative for opengl32.dll. To use
|
||||
it put it in the same directory as the application. It can also be used by
|
||||
replacing the native ICD driver, but it's quite an advanced usage, so if you
|
||||
need to ask, don't even try it.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
There is however an easy way to replace the OpenGL software renderer that comes
|
||||
with Microsoft Windows 7 (or later) with llvmpipe (that is, on systems without
|
||||
any OpenGL drivers):
|
||||
</p>
|
||||
|
||||
<ul>
|
||||
<li><p>copy build/windows-x86-debug/gallium/targets/libgl-gdi/opengl32.dll to C:\Windows\SysWOW64\mesadrv.dll</p></li>
|
||||
<li><p>load this registry settings:</p>
|
||||
<pre>REGEDIT4
|
||||
|
||||
; http://technet.microsoft.com/en-us/library/cc749368.aspx
|
||||
; http://www.msfn.org/board/topic/143241-portable-windows-7-build-from-winpe-30/page-5#entry942596
|
||||
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\OpenGLDrivers\MSOGL]
|
||||
"DLL"="mesadrv.dll"
|
||||
"DriverVersion"=dword:00000001
|
||||
"Flags"=dword:00000001
|
||||
"Version"=dword:00000002
|
||||
</pre>
|
||||
</li>
|
||||
<li>Ditto for 64 bits drivers if you need them.</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<h1>Profiling</h1>
|
||||
|
||||
<p>
|
||||
To profile llvmpipe you should build as
|
||||
</p>
|
||||
To profile llvmpipe you should pass the options
|
||||
|
||||
<pre>
|
||||
scons build=profile <same-as-before>
|
||||
</pre>
|
||||
|
||||
<p>
|
||||
This will ensure that frame pointers are used both in C and JIT functions, and
|
||||
that no tail call optimizations are done by gcc.
|
||||
</p>
|
||||
|
||||
<h2>Linux perf integration</h2>
|
||||
|
||||
<p>
|
||||
On Linux, it is possible to have symbol resolution of JIT code with <a href="http://perf.wiki.kernel.org/">Linux perf</a>:
|
||||
</p>
|
||||
To better profile JIT code you'll need to build LLVM with oprofile integration.
|
||||
|
||||
<pre>
|
||||
perf record -g /my/application
|
||||
perf report
|
||||
./configure \
|
||||
--prefix=$install_dir \
|
||||
--enable-optimized \
|
||||
--disable-profiling \
|
||||
--enable-targets=host-only \
|
||||
--with-oprofile
|
||||
|
||||
make -C "$build_dir"
|
||||
make -C "$build_dir" install
|
||||
|
||||
find "$install_dir/lib" -iname '*.a' -print0 | xargs -0 strip --strip-debug
|
||||
</pre>
|
||||
|
||||
<p>
|
||||
When run inside Linux perf, llvmpipe will create a /tmp/perf-XXXXX.map file with
|
||||
symbol address table. It also dumps assembly code to /tmp/perf-XXXXX.map.asm,
|
||||
which can be used by the bin/perf-annotate-jit script to produce disassembly of
|
||||
the generated code annotated with the samples.
|
||||
</p>
|
||||
The you should define
|
||||
|
||||
<p>You can obtain a call graph via
|
||||
<a href="http://code.google.com/p/jrfonseca/wiki/Gprof2Dot#linux_perf">Gprof2Dot</a>.</p>
|
||||
<pre>
|
||||
export LLVM=/path/to/llvm-2.6-profile
|
||||
</pre>
|
||||
|
||||
and rebuild.
|
||||
|
||||
|
||||
<h1>Unit testing</h1>
|
||||
@@ -253,66 +203,11 @@ for posterior analysis, e.g.:
|
||||
We use LLVM-C bindings for now. They are not documented, but follow the C++
|
||||
interfaces very closely, and appear to be complete enough for code
|
||||
generation. See
|
||||
<a href="http://npcontemplation.blogspot.com/2008/06/secret-of-llvm-c-bindings.html">
|
||||
this stand-alone example</a>. See the llvm-c/Core.h file for reference.
|
||||
http://npcontemplation.blogspot.com/2008/06/secret-of-llvm-c-bindings.html
|
||||
for a stand-alone example. See the llvm-c/Core.h file for reference.
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<h1 id="recommended_reading">Recommended Reading</h1>
|
||||
|
||||
<ul>
|
||||
<li>
|
||||
<p>Rasterization</p>
|
||||
<ul>
|
||||
<li><a href="http://www.cs.unc.edu/~olano/papers/2dh-tri/">Triangle Scan Conversion using 2D Homogeneous Coordinates</a></li>
|
||||
<li><a href="http://www.drdobbs.com/parallel/rasterization-on-larrabee/217200602">Rasterization on Larrabee</a> (<a href="http://devmaster.net/posts/2887/rasterization-on-larrabee">DevMaster copy</a>)</li>
|
||||
<li><a href="http://devmaster.net/posts/6133/rasterization-using-half-space-functions">Rasterization using half-space functions</a></li>
|
||||
<li><a href="http://devmaster.net/posts/6145/advanced-rasterization">Advanced Rasterization</a></li>
|
||||
<li><a href="http://fgiesen.wordpress.com/2013/02/17/optimizing-sw-occlusion-culling-index/">Optimizing Software Occlusion Culling</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<p>Texture sampling</p>
|
||||
<ul>
|
||||
<li><a href="http://chrishecker.com/Miscellaneous_Technical_Articles#Perspective_Texture_Mapping">Perspective Texture Mapping</a></li>
|
||||
<li><a href="http://www.flipcode.com/archives/Texturing_As_In_Unreal.shtml">Texturing As In Unreal</a></li>
|
||||
<li><a href="http://www.gamasutra.com/view/feature/3301/runtime_mipmap_filtering.php">Run-Time MIP-Map Filtering</a></li>
|
||||
<li><a href="http://alt.3dcenter.org/artikel/2003/10-26_a_english.php">Will "brilinear" filtering persist?</a></li>
|
||||
<li><a href="http://ixbtlabs.com/articles2/gffx/nv40-rx800-3.html">Trilinear filtering</a></li>
|
||||
<li><a href="http://devmaster.net/posts/12785/texture-swizzling">Texture Swizzling</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<p>SIMD</p>
|
||||
<ul>
|
||||
<li><a href="http://www.cdl.uni-saarland.de/projects/wfv/#header4">Whole-Function Vectorization</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<p>Optimization</p>
|
||||
<ul>
|
||||
<li><a href="http://www.drdobbs.com/optimizing-pixomatic-for-modern-x86-proc/184405807">Optimizing Pixomatic For Modern x86 Processors</a></li>
|
||||
<li><a href="http://www.intel.com/content/www/us/en/architecture-and-technology/64-ia-32-architectures-optimization-manual.html">Intel 64 and IA-32 Architectures Optimization Reference Manual</a></li>
|
||||
<li><a href="http://www.agner.org/optimize/">Software optimization resources</a></li>
|
||||
<li><a href="http://software.intel.com/en-us/articles/intel-intrinsics-guide">Intel Intrinsics Guide</a><li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<p>LLVM</p>
|
||||
<ul>
|
||||
<li><a href="http://llvm.org/docs/LangRef.html">LLVM Language Reference Manual</a></li>
|
||||
<li><a href="http://npcontemplation.blogspot.co.uk/2008/06/secret-of-llvm-c-bindings.html">The secret of LLVM C bindings</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<p>General</p>
|
||||
<ul>
|
||||
<li><a href="http://fgiesen.wordpress.com/2011/07/09/a-trip-through-the-graphics-pipeline-2011-index/">A trip through the Graphics Pipeline</a></li>
|
||||
<li><a href="http://msdn.microsoft.com/en-us/library/gg615082.aspx#architecture">WARP Architecture and Performance</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -16,7 +16,7 @@
|
||||
|
||||
<h1>OpenGL ES</h1>
|
||||
|
||||
<p>Mesa implements OpenGL ES 1.1 and OpenGL ES 2.0. More information about
|
||||
<p>Mesa implements OpenGL ES 1.1 and OpenGL ES 2.0. More informations about
|
||||
OpenGL ES can be found at <a href="http://www.khronos.org/opengles/">
|
||||
http://www.khronos.org/opengles/</a>.</p>
|
||||
|
||||
@@ -48,7 +48,7 @@ EGL drivers for your hardware.</p>
|
||||
|
||||
<h3>Dispatch Table</h3>
|
||||
|
||||
<p>OpenGL ES has an additional indirection when dispatching functions</p>
|
||||
<p>OpenGL ES has an additional indirection when dispatching fucntions</p>
|
||||
|
||||
<pre>
|
||||
Mesa: glFoo() --> _mesa_Foo()
|
||||
|
59
docs/openvg.html
Normal file
59
docs/openvg.html
Normal file
@@ -0,0 +1,59 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||
<title>OpenVG State Tracker</title>
|
||||
<link rel="stylesheet" type="text/css" href="mesa.css">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="header">
|
||||
<h1>The Mesa 3D Graphics Library</h1>
|
||||
</div>
|
||||
|
||||
<iframe src="contents.html"></iframe>
|
||||
<div class="content">
|
||||
|
||||
<h1>OpenVG State Tracker</h1>
|
||||
|
||||
<p>
|
||||
The current version of the OpenVG state tracker implements OpenVG 1.1.
|
||||
</p>
|
||||
<p>
|
||||
More informations about OpenVG can be found at
|
||||
<a href="http://www.khronos.org/openvg/">
|
||||
http://www.khronos.org/openvg/</a> .
|
||||
</p>
|
||||
<p>
|
||||
The OpenVG state tracker depends on the Gallium architecture and a working EGL implementation.
|
||||
Please refer to <a href="egl.html">Mesa EGL</a> for more information about EGL.
|
||||
</p>
|
||||
|
||||
|
||||
<h2>Building the library</h2>
|
||||
<ol>
|
||||
<li>Run <code>configure</code> with <code>--enable-openvg</code> and
|
||||
<code>--enable-gallium-egl</code>. If you do not need OpenGL, you can add
|
||||
<code>--disable-opengl</code> to save the compilation time.</li>
|
||||
|
||||
<li>Build and install Mesa as usual.</li>
|
||||
</ol>
|
||||
|
||||
<h3>Sample build</h3>
|
||||
A sample build looks as follows:
|
||||
<pre>
|
||||
$ ./configure --disable-opengl --enable-openvg --enable-gallium-egl
|
||||
$ make
|
||||
$ make install
|
||||
</pre>
|
||||
|
||||
<p>It will install <code>libOpenVG.so</code>, <code>libEGL.so</code>, and one
|
||||
or more EGL drivers.</p>
|
||||
|
||||
<h2>OpenVG Demos</h2>
|
||||
|
||||
<p>OpenVG demos can be found in mesa/demos repository.</p>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@@ -18,62 +18,77 @@
|
||||
|
||||
|
||||
<p>
|
||||
Mesa's off-screen interface is used for rendering into user-allocated memory
|
||||
without any sort of window system or operating system dependencies.
|
||||
Mesa's off-screen rendering interface is used for rendering into
|
||||
user-allocated blocks of memory.
|
||||
That is, the GL_FRONT colorbuffer is actually a buffer in main memory,
|
||||
rather than a window on your display.
|
||||
There are no window system or operating system dependencies.
|
||||
One potential application is to use Mesa as an off-line, batch-style renderer.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The OSMesa API provides three basic functions for making off-screen
|
||||
The <b>OSMesa</b> API provides three basic functions for making off-screen
|
||||
renderings: OSMesaCreateContext(), OSMesaMakeCurrent(), and
|
||||
OSMesaDestroyContext(). See the Mesa/include/GL/osmesa.h header for
|
||||
more information about the API functions.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The OSMesa interface may be used with any of three software renderers:
|
||||
</p>
|
||||
<ol>
|
||||
<li>llvmpipe - this is the high-performance Gallium LLVM driver
|
||||
<li>softpipe - this it the reference Gallium software driver
|
||||
<li>swrast - this is the legacy Mesa software rasterizer
|
||||
</ol>
|
||||
|
||||
|
||||
<p>
|
||||
There are several examples of OSMesa in the mesa/demos repository.
|
||||
</p>
|
||||
|
||||
<h1>Building OSMesa</h1>
|
||||
|
||||
<h2>Deep color channels</h2>
|
||||
|
||||
<p>
|
||||
Configure and build Mesa with something like:
|
||||
For some applications 8-bit color channels don't have sufficient
|
||||
precision.
|
||||
OSMesa supports 16-bit and 32-bit color channels through the OSMesa interface.
|
||||
When using 16-bit channels, channels are GLushorts and RGBA pixels occupy
|
||||
8 bytes.
|
||||
When using 32-bit channels, channels are GLfloats and RGBA pixels occupy
|
||||
16 bytes.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Before version 6.5.1, Mesa had to be recompiled to support exactly
|
||||
one of 8, 16 or 32-bit channels.
|
||||
With Mesa 6.5.1, Mesa can be compiled for either 8, 16 or 32-bit channels
|
||||
and render into any of the smaller size channels.
|
||||
For example, if Mesa's compiled for 32-bit channels, you can also render
|
||||
16 and 8-bit channel images.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
To build Mesa/OSMesa for 16 and 8-bit color channel support:
|
||||
<pre>
|
||||
configure --enable-osmesa --disable-driglx-direct --disable-dri --with-gallium-drivers=swrast
|
||||
make
|
||||
make realclean
|
||||
make linux-osmesa16
|
||||
</pre>
|
||||
|
||||
<p>
|
||||
Make sure you have LLVM installed first if you want to use the llvmpipe driver.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
When the build is complete you should find:
|
||||
</p>
|
||||
To build Mesa/OSMesa for 32, 16 and 8-bit color channel support:
|
||||
<pre>
|
||||
lib/libOSMesa.so (swrast-based OSMesa)
|
||||
lib/gallium/libOSMsea.so (gallium-based OSMesa)
|
||||
make realclean
|
||||
make linux-osmesa32
|
||||
</pre>
|
||||
|
||||
<p>
|
||||
Set your LD_LIBRARY_PATH to point to one directory or the other to select
|
||||
the library you want to use.
|
||||
You'll wind up with a library named libOSMesa16.so or libOSMesa32.so.
|
||||
Otherwise, most Mesa configurations build an 8-bit/channel libOSMesa.so library
|
||||
by default.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
When you link your application, link with -lOSMesa
|
||||
If performance is important, compile Mesa for the channel size you're
|
||||
most interested in.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
If you need to compile on a non-Linux platform, copy Mesa/configs/linux-osmesa16
|
||||
to a new config file and edit it as needed. Then, add the new config name to
|
||||
the top-level Makefile. Send a patch to the Mesa developers too, if you're
|
||||
inclined.
|
||||
</p>
|
||||
|
||||
</div>
|
||||
|
75
docs/relnotes-6.4.1.html
Normal file
75
docs/relnotes-6.4.1.html
Normal file
@@ -0,0 +1,75 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||
<title>Mesa Release Notes</title>
|
||||
<link rel="stylesheet" type="text/css" href="mesa.css">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="header">
|
||||
<h1>The Mesa 3D Graphics Library</h1>
|
||||
</div>
|
||||
|
||||
<iframe src="contents.html"></iframe>
|
||||
<div class="content">
|
||||
|
||||
<h1>Mesa 6.4.1 / November 29, 2006</h1>
|
||||
|
||||
<p>
|
||||
Mesa 6.4.1 is a stable, bug-fix release.
|
||||
</p>
|
||||
|
||||
|
||||
<h2>MD5 checksums</h2>
|
||||
<pre>
|
||||
698ceb574cf882b0226761f5913c0da9 MesaLib-6.4.1.tar.gz
|
||||
ea148c828ec6f645526451db1b8556f1 MesaLib-6.4.1.tar.bz2
|
||||
42e93279468975ed2bf3111b8721e5d9 MesaLib-6.4.1.zip
|
||||
e3b0d50807fd2bdcd1a95aaddd786f13 MesaDemos-6.4.1.tar.gz
|
||||
99df1fdcb98d391666b476ca6f1dda8a MesaDemos-6.4.1.tar.bz2
|
||||
b999d2c6d92fb4b7740a3dbd889348e3 MesaDemos-6.4.1.zip
|
||||
eadfe01fe5ddfb1eb8227dd567b31635 MesaGLUT-6.4.1.tar.gz
|
||||
bd003bb4f981a4f91dee4c38644d4f3f MesaGLUT-6.4.1.tar.bz2
|
||||
71c401c037088bf688a88afdaeb3420f MesaGLUT-6.4.1.zip
|
||||
</pre>
|
||||
|
||||
|
||||
<h2>Bug fixes</h2>
|
||||
<ul>
|
||||
<li>redefining a vertex program string didn't take effect in TNL module
|
||||
<li>fixed occasional segfault upon vertex/fragment parsing error
|
||||
<li>vertex program LIT instruction didn't handle 0^0=1 correctly
|
||||
<li>fragment program fog option didn't work with glDrawPixels, glBitmap
|
||||
<li>USE_MGL_NAMESPACE didn't work for x86-64
|
||||
<li>OSMesa demos were missing from previous release tarballs
|
||||
<li>fixed problem with float->ushort conversion in glClear (bug 4992)
|
||||
<li>popping of GL_EYE_PLANE texgen state was broken (bug 4996)
|
||||
<li>popping of GL_SPOT_DIRECTION light state was broken (bug 5005)
|
||||
<li>fixed occasional triangle color interpolation problem on VMS
|
||||
<li>work around invalid free() call (bug 5131)
|
||||
<li>fixed BSD X server compilation problem by including stdint.h
|
||||
</ul>
|
||||
|
||||
|
||||
<h2>Driver Status</h2>
|
||||
|
||||
<pre>
|
||||
Driver Status
|
||||
---------------------- ----------------------
|
||||
DRI drivers varies with the driver
|
||||
XMesa (Xlib) implements OpenGL 1.5
|
||||
OSMesa (off-screen) implements OpenGL 1.5
|
||||
Windows/Win32 implements OpenGL 1.5
|
||||
Glide (3dfx Voodoo1/2) requires updates
|
||||
SVGA requires updates
|
||||
DJGPP requires updates
|
||||
GGI requires updates
|
||||
BeOS requires updates
|
||||
Allegro requires updates
|
||||
D3D requires updates
|
||||
</pre>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
82
docs/relnotes-6.4.2.html
Normal file
82
docs/relnotes-6.4.2.html
Normal file
@@ -0,0 +1,82 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||
<title>Mesa Release Notes</title>
|
||||
<link rel="stylesheet" type="text/css" href="mesa.css">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="header">
|
||||
<h1>The Mesa 3D Graphics Library</h1>
|
||||
</div>
|
||||
|
||||
<iframe src="contents.html"></iframe>
|
||||
<div class="content">
|
||||
|
||||
<h1>Mesa 6.4.2 / February 2, 2006</h1>
|
||||
|
||||
<p>
|
||||
Mesa 6.4.2 is a stable, bug-fix release.
|
||||
</p>
|
||||
|
||||
|
||||
<h2>MD5 checksums</h2>
|
||||
<pre>
|
||||
cb0d745d520fa7c2bb9178058b763544 MesaLib-6.4.2.tar.gz
|
||||
7674d2c603b5834259e4e5a820cefd5b MesaLib-6.4.2.tar.bz2
|
||||
d224e1325b33ff71a0f3893fc6b4d594 MesaLib-6.4.2.zip
|
||||
d4b345d4588fc750cd3d34f3ac26673e MesaDemos-6.4.2.tar.gz
|
||||
9cae1ab874af533ce356bd7dfe2e0bb0 MesaDemos-6.4.2.tar.bz2
|
||||
2da6e1d1245e441d27813595c6ba50de MesaDemos-6.4.2.zip
|
||||
84427d18c3453f0ea52388eeba7169b5 MesaGLUT-6.4.2.tar.gz
|
||||
b157ba8ad1ea63260cf5339132e7aac6 MesaGLUT-6.4.2.tar.bz2
|
||||
fe1523744fc05edc3811dfc6a1bf4181 MesaGLUT-6.4.2.zip
|
||||
</pre>
|
||||
|
||||
|
||||
<h2>New features</h2>
|
||||
<ul>
|
||||
<li>added OSMesaColorClamp() function/feature
|
||||
<li>added wglGetExtensionStringARB() function
|
||||
</ul>
|
||||
|
||||
<h2>Changes</h2>
|
||||
<ul>
|
||||
<li>GLUT tarball
|
||||
<br>
|
||||
Starting with 6.4, the GLUT library sources are distributed in a separate
|
||||
tarball. This was done at the request of Linux distro vendors who prefer
|
||||
to use freeglut.
|
||||
</ul>
|
||||
|
||||
<h2>Bug fixes</h2>
|
||||
<ul>
|
||||
<li>fixed some problems when building on Windows
|
||||
<li>GLw header files weren't installed by installmesa script (bug 5396)
|
||||
<li>GL/glfbdev.h file was missing from tarballs
|
||||
<li>fixed TNL initialization bug which could lead to crash (bug 5791)
|
||||
</ul>
|
||||
|
||||
|
||||
<h2>Driver Status</h2>
|
||||
|
||||
<pre>
|
||||
Driver Status
|
||||
---------------------- ----------------------
|
||||
DRI drivers varies with the driver
|
||||
XMesa (Xlib) implements OpenGL 1.5
|
||||
OSMesa (off-screen) implements OpenGL 1.5
|
||||
Windows/Win32 implements OpenGL 1.5
|
||||
Glide (3dfx Voodoo1/2) requires updates
|
||||
SVGA requires updates
|
||||
DJGPP requires updates
|
||||
GGI requires updates
|
||||
BeOS requires updates
|
||||
Allegro requires updates
|
||||
D3D requires updates
|
||||
</pre>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
97
docs/relnotes-6.4.html
Normal file
97
docs/relnotes-6.4.html
Normal file
@@ -0,0 +1,97 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||
<title>Mesa Release Notes</title>
|
||||
<link rel="stylesheet" type="text/css" href="mesa.css">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="header">
|
||||
<h1>The Mesa 3D Graphics Library</h1>
|
||||
</div>
|
||||
|
||||
<iframe src="contents.html"></iframe>
|
||||
<div class="content">
|
||||
|
||||
<h1>Mesa 6.4 / October 24, 2005</h1>
|
||||
|
||||
<p>
|
||||
Mesa 6.4 is a stable, bug-fix release.
|
||||
</p>
|
||||
|
||||
|
||||
<h2>MD5 checksums</h2>
|
||||
<pre>
|
||||
1cce0c1eb4fd15e9dfe837a1ce0c9812 MesaLib-6.4.tar.gz
|
||||
85a84e47a3f718f752f306b9e0954ef6 MesaLib-6.4.tar.bz2
|
||||
b976fea4f3ee06354c53f91b6e3f2ffc MesaLib-6.4.zip
|
||||
d8734f2c69bcf7ef9f5ae454a85743ba MesaDemos-6.4.tar.gz
|
||||
1a8c4d4fc699233f5fdb902b8753099e MesaDemos-6.4.tar.bz2
|
||||
607ab7c7a7de0cc5febbdde2bfa03098 MesaDemos-6.4.zip
|
||||
3260156f66174322a092be0767962d34 MesaGLUT-6.4.tar.gz
|
||||
0465d053f83775f44a12dec4050dfd78 MesaGLUT-6.4.tar.bz2
|
||||
02abfcdcdf72ba938ae00f6e3b70fbe0 MesaGLUT-6.4.zip
|
||||
</pre>
|
||||
|
||||
|
||||
<h2>New</h2>
|
||||
<ul>
|
||||
<li>Added a fast XOR line drawing function in Xlib driver
|
||||
<li>Added support for GL_ARB_texture_mirrored_repeat to savage driver (supported only on Savage4 hardware).
|
||||
</ul>
|
||||
|
||||
<h2>Changes</h2>
|
||||
<ul>
|
||||
<li>Mesa now packaged in three parts: Library, Demos and GLUT
|
||||
</ul>
|
||||
|
||||
<h2>Bug fixes</h2>
|
||||
<ul>
|
||||
<li>GLX_X_RENDERABLE token wasn't accepted by glXChooseFBConfig
|
||||
<li>Some files were present multiple times in the 6.3.2 tarballs
|
||||
<li>r200_vtxtmp_x86.S file was missing from 6.3.2 tarball (bug 4207)
|
||||
<li>glxgears_fbconfig demo didn't work (bug 4237)
|
||||
<li>fixed bug when bilinear sampling 2d textures with borders
|
||||
<li>glXCreatePbuffer() could segfault instead of returning 0 (bug 4235)
|
||||
<li>fixed undefined frexp and rand in X.org libGLcore.a (bug 4242)
|
||||
<li>fixed a few problems with proxy color tables (bug 4270)
|
||||
<li>fixed precision problem in Z clearing (bug 4395)
|
||||
<li>glBitmap, glDraw/CopyPixels mistakenly generated selection hits
|
||||
<li>fixed potential segfault caused by reading pixels outside
|
||||
of renderbuffer bounds
|
||||
<li>glGetTexLevelParameter didn't accept GL_TEXTURE_DEPTH_SIZE_ARB
|
||||
<li>fixed memory corruption bug involving software alpha buffers
|
||||
<li>glReadPixels clipped by window bounds was sometimes broken
|
||||
<li>glDraw/CopyPixels of stencil data ignored the stencil write mask
|
||||
<li>glReadPixels from a texture bound to a framebuffer object didn't work
|
||||
<li>glIsRender/FramebufferEXT weren't totally correct
|
||||
<li>fixed a number of point size attenuation/fade bugs
|
||||
<li>fixed glFogCoord bug 4729
|
||||
<li>GLX encoding for transpose matrix functions was broken
|
||||
<li>fixed broken fragment program KIL and SWZ instructions
|
||||
<li>fragment programs that wrote result.depth.z didn't work
|
||||
</ul>
|
||||
|
||||
|
||||
<h2>Driver Status</h2>
|
||||
|
||||
<pre>
|
||||
Driver Status
|
||||
---------------------- ----------------------
|
||||
DRI drivers varies with the driver
|
||||
XMesa (Xlib) implements OpenGL 1.5
|
||||
OSMesa (off-screen) implements OpenGL 1.5
|
||||
Windows/Win32 implements OpenGL 1.5
|
||||
Glide (3dfx Voodoo1/2) requires updates
|
||||
SVGA requires updates
|
||||
DJGPP requires updates
|
||||
GGI requires updates
|
||||
BeOS requires updates
|
||||
Allegro requires updates
|
||||
D3D requires updates
|
||||
</pre>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user