Compare commits
	
		
			8 Commits
		
	
	
		
			mesa-11.1.
			...
			rgb10_a2ui
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					257f32ad20 | ||
| 
						 | 
					4e0ece34ed | ||
| 
						 | 
					8bccaa61d7 | ||
| 
						 | 
					63d5fd0376 | ||
| 
						 | 
					08bc1b7343 | ||
| 
						 | 
					9f92031355 | ||
| 
						 | 
					e56728c9d8 | ||
| 
						 | 
					644d434137 | 
@@ -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))
 | 
			
		||||
 )
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										9
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										9
									
								
								.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,8 @@ config.py
 | 
			
		||||
build
 | 
			
		||||
libtool
 | 
			
		||||
manifest.txt
 | 
			
		||||
Makefile.in
 | 
			
		||||
.dir-locals.el
 | 
			
		||||
.deps/
 | 
			
		||||
.dirstamp
 | 
			
		||||
.libs/
 | 
			
		||||
Makefile
 | 
			
		||||
Makefile.in
 | 
			
		||||
.install-mesa-links
 | 
			
		||||
/Makefile
 | 
			
		||||
 
 | 
			
		||||
@@ -24,61 +24,34 @@
 | 
			
		||||
# 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)
 | 
			
		||||
major := $(word 1, $(subst ., , $(PLATFORM_VERSION)))
 | 
			
		||||
minor := $(word 2, $(subst ., , $(PLATFORM_VERSION)))
 | 
			
		||||
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)
 | 
			
		||||
	-DANDROID_VERSION=0x0$(major)0$(minor)
 | 
			
		||||
 | 
			
		||||
LOCAL_CFLAGS += \
 | 
			
		||||
	-D__STDC_LIMIT_MACROS \
 | 
			
		||||
	-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 \
 | 
			
		||||
	-DPTHREADS \
 | 
			
		||||
	-fvisibility=hidden \
 | 
			
		||||
	-Wno-sign-compare
 | 
			
		||||
 | 
			
		||||
ifeq ($(strip $(MESA_ENABLE_ASM)),true)
 | 
			
		||||
ifeq ($(TARGET_ARCH),x86)
 | 
			
		||||
LOCAL_CFLAGS += \
 | 
			
		||||
	-DUSE_X86_ASM \
 | 
			
		||||
	-DHAVE_DLOPEN \
 | 
			
		||||
 | 
			
		||||
	-DUSE_X86_ASM
 | 
			
		||||
endif
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
ifeq ($(MESA_ENABLE_LLVM),true)
 | 
			
		||||
LOCAL_CFLAGS += \
 | 
			
		||||
	-DHAVE_LLVM=0x0305 -DMESA_LLVM_VERSION_PATCH=2 \
 | 
			
		||||
	-D__STDC_CONSTANT_MACROS \
 | 
			
		||||
	-D__STDC_FORMAT_MACROS \
 | 
			
		||||
	-D__STDC_LIMIT_MACROS
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
LOCAL_CPPFLAGS += \
 | 
			
		||||
	$(if $(filter true,$(MESA_LOLLIPOP_BUILD)),-D_USING_LIBCXX) \
 | 
			
		||||
	-Wno-error=non-virtual-dtor \
 | 
			
		||||
	-Wno-non-virtual-dtor
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										33
									
								
								Android.mk
									
									
									
									
									
								
							
							
						
						
									
										33
									
								
								Android.mk
									
									
									
									
									
								
							@@ -24,29 +24,20 @@
 | 
			
		||||
# BOARD_GPU_DRIVERS should be defined.  The valid values are
 | 
			
		||||
#
 | 
			
		||||
#   classic drivers: i915 i965
 | 
			
		||||
#   gallium drivers: swrast freedreno i915g ilo nouveau r300g r600g radeonsi vc4 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.
 | 
			
		||||
 | 
			
		||||
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 vc4
 | 
			
		||||
gallium_drivers := swrast i915g nouveau r300g r600g radeonsi vmwgfx
 | 
			
		||||
 | 
			
		||||
MESA_GPU_DRIVERS := $(strip $(BOARD_GPU_DRIVERS))
 | 
			
		||||
 | 
			
		||||
@@ -78,24 +69,26 @@ else
 | 
			
		||||
MESA_BUILD_GALLIUM := false
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
MESA_ENABLE_LLVM := $(if $(filter radeonsi,$(MESA_GPU_DRIVERS)),true,false)
 | 
			
		||||
 | 
			
		||||
# add subdirectories
 | 
			
		||||
ifneq ($(strip $(MESA_GPU_DRIVERS)),)
 | 
			
		||||
 | 
			
		||||
SUBDIRS := \
 | 
			
		||||
	src/loader \
 | 
			
		||||
	src/mapi \
 | 
			
		||||
	src/glsl \
 | 
			
		||||
	src/mesa \
 | 
			
		||||
	src/util \
 | 
			
		||||
	src/egl \
 | 
			
		||||
	src/egl/main
 | 
			
		||||
 | 
			
		||||
ifeq ($(strip $(MESA_BUILD_CLASSIC)),true)
 | 
			
		||||
SUBDIRS += \
 | 
			
		||||
	src/egl/drivers/dri2 \
 | 
			
		||||
	src/mesa/drivers/dri
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
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
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										16
									
								
								CleanSpec.mk
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								CleanSpec.mk
									
									
									
									
									
								
							@@ -1,16 +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)
 | 
			
		||||
$(call add-clean-step, rm -rf $(PRODUCT_OUT)/*/SHARED_LIBRARIES/*_dri_intermediates)
 | 
			
		||||
							
								
								
									
										134
									
								
								Makefile.am
									
									
									
									
									
								
							
							
						
						
									
										134
									
								
								Makefile.am
									
									
									
									
									
								
							@@ -21,44 +21,104 @@
 | 
			
		||||
 | 
			
		||||
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 \
 | 
			
		||||
	--disable-llvm-shared-libs \
 | 
			
		||||
	--with-egl-platforms=x11,wayland,drm \
 | 
			
		||||
	--with-dri-drivers=i915,i965,nouveau,radeon,r200,swrast \
 | 
			
		||||
	--with-gallium-drivers=i915,ilo,nouveau,r300,r600,radeonsi,freedreno,svga,swrast
 | 
			
		||||
doxygen:
 | 
			
		||||
	cd doxygen && $(MAKE)
 | 
			
		||||
 | 
			
		||||
ACLOCAL_AMFLAGS = -I m4
 | 
			
		||||
check-local:
 | 
			
		||||
	$(MAKE) -C src/mapi/glapi/tests check
 | 
			
		||||
	$(MAKE) -C src/mesa/main/tests check
 | 
			
		||||
	$(MAKE) -C src/glsl/tests check
 | 
			
		||||
	$(MAKE) -C src/glx/tests check
 | 
			
		||||
 | 
			
		||||
EXTRA_DIST = \
 | 
			
		||||
	autogen.sh \
 | 
			
		||||
	common.py \
 | 
			
		||||
	docs \
 | 
			
		||||
	doxygen \
 | 
			
		||||
	scons \
 | 
			
		||||
	SConstruct
 | 
			
		||||
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
 | 
			
		||||
 | 
			
		||||
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
 | 
			
		||||
 | 
			
		||||
# 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) {} +
 | 
			
		||||
 | 
			
		||||
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=8.1-devel
 | 
			
		||||
PACKAGE_DIR = Mesa-$(PACKAGE_VERSION)
 | 
			
		||||
PACKAGE_NAME = MesaLib-$(PACKAGE_VERSION)
 | 
			
		||||
 | 
			
		||||
EXTRA_FILES = \
 | 
			
		||||
	aclocal.m4					\
 | 
			
		||||
	configure					\
 | 
			
		||||
	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
 | 
			
		||||
 | 
			
		||||
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/program_parse.tab.c program/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],
 | 
			
		||||
        [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
 | 
			
		||||
							
								
								
									
										12
									
								
								autogen.sh
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								autogen.sh
									
									
									
									
									
								
							@@ -3,11 +3,17 @@
 | 
			
		||||
srcdir=`dirname "$0"`
 | 
			
		||||
test -z "$srcdir" && srcdir=.
 | 
			
		||||
 | 
			
		||||
SRCDIR=`(cd "$srcdir" && pwd)`
 | 
			
		||||
ORIGDIR=`pwd`
 | 
			
		||||
cd "$srcdir"
 | 
			
		||||
 | 
			
		||||
autoreconf --force --verbose --install || exit 1
 | 
			
		||||
cd "$ORIGDIR" || exit $?
 | 
			
		||||
if test "x$SRCDIR" != "x$ORIGDIR"; then
 | 
			
		||||
	echo "Mesa cannot be built when srcdir != builddir" 1>&2
 | 
			
		||||
	exit 1
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
MAKEFLAGS=""
 | 
			
		||||
 | 
			
		||||
autoreconf -v --install || exit 1
 | 
			
		||||
 | 
			
		||||
if test -z "$NOCONFIGURE"; then
 | 
			
		||||
    "$srcdir"/configure "$@"
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +0,0 @@
 | 
			
		||||
# As per Marek http://lists.freedesktop.org/archives/mesa-stable/2015-December/003600.html
 | 
			
		||||
37208c4fd7b1ec679d10992b42a2811cab8245a5 Revert "radeonsi: disable DCC on Stoney"
 | 
			
		||||
 | 
			
		||||
# causes regression in xwayland, kde/plasma, mpv, steam ... fdo#92759
 | 
			
		||||
839793680f99b8387bee9489733d5071c10f3ace i965: Use MESA_FORMAT_B8G8R8X8_SRGB for RGB visuals
 | 
			
		||||
							
								
								
									
										1
									
								
								bin/.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								bin/.gitignore
									
									
									
									
										vendored
									
									
								
							@@ -6,4 +6,3 @@ install-sh
 | 
			
		||||
ylwrap
 | 
			
		||||
compile
 | 
			
		||||
ar-lib
 | 
			
		||||
/test-driver
 | 
			
		||||
 
 | 
			
		||||
@@ -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,35 +0,0 @@
 | 
			
		||||
#!/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 |\
 | 
			
		||||
	grep "cherry picked from commit" |\
 | 
			
		||||
	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 |\
 | 
			
		||||
while read sha
 | 
			
		||||
do
 | 
			
		||||
	# Check to see whether the patch is on the ignore list.
 | 
			
		||||
	if [ -f bin/.cherry-ignore ] ; then
 | 
			
		||||
		if grep -q ^$sha bin/.cherry-ignore ; then
 | 
			
		||||
			continue
 | 
			
		||||
		fi
 | 
			
		||||
	fi
 | 
			
		||||
 | 
			
		||||
	# Check to see if it has already been picked over.
 | 
			
		||||
	if grep -q ^$sha already_picked ; then
 | 
			
		||||
		continue
 | 
			
		||||
	fi
 | 
			
		||||
 | 
			
		||||
	git log -n1 --pretty=oneline $sha | cat
 | 
			
		||||
done
 | 
			
		||||
 | 
			
		||||
rm -f already_picked
 | 
			
		||||
							
								
								
									
										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
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										95
									
								
								common.py
									
									
									
									
									
								
							
							
						
						
									
										95
									
								
								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,28 @@ 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'))
 | 
			
		||||
	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
 | 
			
		||||
							
								
								
									
										226
									
								
								configs/current.in
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										226
									
								
								configs/current.in
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,226 @@
 | 
			
		||||
# 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@
 | 
			
		||||
OPT_FLAGS = @OPT_FLAGS@
 | 
			
		||||
ARCH_FLAGS = @ARCH_FLAGS@
 | 
			
		||||
PIC_FLAGS = @PIC_FLAGS@
 | 
			
		||||
DEFINES = @DEFINES@
 | 
			
		||||
API_DEFINES = @API_DEFINES@
 | 
			
		||||
SHARED_GLAPI = @SHARED_GLAPI@
 | 
			
		||||
CFLAGS_NOVISIBILITY = @CPPFLAGS@ @CFLAGS@ \
 | 
			
		||||
	$(OPT_FLAGS) $(PIC_FLAGS) $(ARCH_FLAGS) $(DEFINES)
 | 
			
		||||
CXXFLAGS_NOVISIBILITY = @CPPFLAGS@ @CXXFLAGS@ \
 | 
			
		||||
	$(OPT_FLAGS) $(PIC_FLAGS) $(ARCH_FLAGS) $(DEFINES)
 | 
			
		||||
CFLAGS = $(CFLAGS_NOVISIBILITY) @VISIBILITY_CFLAGS@
 | 
			
		||||
CXXFLAGS = $(CXXFLAGS_NOVISIBILITY) @VISIBILITY_CXXFLAGS@
 | 
			
		||||
LDFLAGS = @LDFLAGS@
 | 
			
		||||
EXTRA_LIB_PATH = @EXTRA_LIB_PATH@
 | 
			
		||||
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@
 | 
			
		||||
 | 
			
		||||
# 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@
 | 
			
		||||
OSMESA_LIB_GLOB = @OSMESA_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@
 | 
			
		||||
GLU_DIRS = @GLU_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 = $(EXTRA_LIB_PATH) @GL_LIB_DEPS@
 | 
			
		||||
OSMESA_LIB_DEPS = -L$(TOP)/$(LIB_DIR) @OSMESA_MESA_DEPS@ \
 | 
			
		||||
	$(EXTRA_LIB_PATH) @OSMESA_LIB_DEPS@
 | 
			
		||||
EGL_LIB_DEPS = $(EXTRA_LIB_PATH) @EGL_LIB_DEPS@
 | 
			
		||||
GLU_LIB_DEPS = -L$(TOP)/$(LIB_DIR) @GLU_MESA_DEPS@ \
 | 
			
		||||
	$(EXTRA_LIB_PATH) @GLU_LIB_DEPS@
 | 
			
		||||
GLW_LIB_DEPS = -L$(TOP)/$(LIB_DIR) @GLW_MESA_DEPS@ \
 | 
			
		||||
	$(EXTRA_LIB_PATH) @GLW_LIB_DEPS@
 | 
			
		||||
GLESv1_CM_LIB_DEPS = $(EXTRA_LIB_PATH) @GLESv1_CM_LIB_DEPS@
 | 
			
		||||
GLESv2_LIB_DEPS = $(EXTRA_LIB_PATH) @GLESv2_LIB_DEPS@
 | 
			
		||||
VG_LIB_DEPS = $(EXTRA_LIB_PATH) @VG_LIB_DEPS@
 | 
			
		||||
GLAPI_LIB_DEPS = $(EXTRA_LIB_PATH) @GLAPI_LIB_DEPS@
 | 
			
		||||
 | 
			
		||||
# DRI dependencies
 | 
			
		||||
DRI_LIB_DEPS = $(EXTRA_LIB_PATH) @DRI_LIB_DEPS@
 | 
			
		||||
GALLIUM_DRI_LIB_DEPS = $(EXTRA_LIB_PATH) @GALLIUM_DRI_LIB_DEPS@
 | 
			
		||||
LIBDRM_CFLAGS = @LIBDRM_CFLAGS@
 | 
			
		||||
LIBDRM_LIB = @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@
 | 
			
		||||
							
								
								
									
										182
									
								
								configs/default
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										182
									
								
								configs/default
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,182 @@
 | 
			
		||||
# 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=8
 | 
			
		||||
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)*
 | 
			
		||||
OSMESA_LIB_GLOB = $(OSMESA_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 glu
 | 
			
		||||
GLU_DIRS = sgi
 | 
			
		||||
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     = $(EXTRA_LIB_PATH) -lX11 -lXext -lm -lpthread
 | 
			
		||||
EGL_LIB_DEPS    = $(EXTRA_LIB_PATH) -ldl -lpthread
 | 
			
		||||
OSMESA_LIB_DEPS = $(EXTRA_LIB_PATH) -L$(TOP)/$(LIB_DIR) -l$(GL_LIB)
 | 
			
		||||
GLU_LIB_DEPS    = $(EXTRA_LIB_PATH) -L$(TOP)/$(LIB_DIR) -l$(GL_LIB) -lm
 | 
			
		||||
GLW_LIB_DEPS    = $(EXTRA_LIB_PATH) -L$(TOP)/$(LIB_DIR) -l$(GL_LIB) -lXt -lX11
 | 
			
		||||
GLESv1_CM_LIB_DEPS = $(EXTRA_LIB_PATH) -lpthread
 | 
			
		||||
GLESv2_LIB_DEPS = $(EXTRA_LIB_PATH) -lpthread
 | 
			
		||||
VG_LIB_DEPS    = $(EXTRA_LIB_PATH) -lpthread
 | 
			
		||||
GLAPI_LIB_DEPS = $(EXTRA_LIB_PATH) -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:
 | 
			
		||||
							
								
								
									
										2782
									
								
								configure.ac
									
									
									
									
									
								
							
							
						
						
									
										2782
									
								
								configure.ac
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										327
									
								
								docs/GL3.txt
									
									
									
									
									
								
							
							
						
						
									
										327
									
								
								docs/GL3.txt
									
									
									
									
									
								
							@@ -7,257 +7,128 @@ 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)
 | 
			
		||||
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)
 | 
			
		||||
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                              ~50% done (converts int
 | 
			
		||||
                                                                 values to floats)
 | 
			
		||||
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                                             needs UBOs (in progress)
 | 
			
		||||
Forward compatibile context support/deprecations      not started
 | 
			
		||||
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)    needs GL3.1 enabling (i965)
 | 
			
		||||
Rectangular textures (GL_ARB_texture_rectangle)       DONE (i965, r300, r600, swrast)
 | 
			
		||||
Uniform buffer objs (GL_ARB_uniform_buffer_object)    not started
 | 
			
		||||
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                           not started
 | 
			
		||||
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 (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
 | 
			
		||||
GL_ARB_instanced_arrays                               DONE (i965, r300, r600)
 | 
			
		||||
GL_ARB_vertex_type_2_10_10_10_rev                     DONE (r600)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
GL 4.0, GLSL 4.00 --- all DONE: nvc0, radeonsi
 | 
			
		||||
GL 4.0:
 | 
			
		||||
 | 
			
		||||
  GL_ARB_draw_buffers_blend                            DONE (i965, nv50, r600, llvmpipe, softpipe)
 | 
			
		||||
  GL_ARB_draw_indirect                                 DONE (i965, r600, llvmpipe, softpipe)
 | 
			
		||||
  GL_ARB_gpu_shader5                                   DONE (i965, r600)
 | 
			
		||||
  - 'precise' qualifier                                DONE
 | 
			
		||||
  - Dynamically uniform sampler array indices          DONE (softpipe)
 | 
			
		||||
  - Dynamically uniform UBO array indices              DONE ()
 | 
			
		||||
  - Implicit signed -> unsigned conversions            DONE
 | 
			
		||||
  - Fused multiply-add                                 DONE ()
 | 
			
		||||
  - Packing/bitfield/conversion functions              DONE (softpipe)
 | 
			
		||||
  - Enhanced textureGather                             DONE (softpipe)
 | 
			
		||||
  - Geometry shader instancing                         DONE (llvmpipe, softpipe)
 | 
			
		||||
  - Geometry shader multiple streams                   DONE ()
 | 
			
		||||
  - Enhanced per-sample shading                        DONE ()
 | 
			
		||||
  - Interpolation functions                            DONE ()
 | 
			
		||||
  - New overload resolution rules                      DONE
 | 
			
		||||
  GL_ARB_gpu_shader_fp64                               DONE (r600, llvmpipe, softpipe)
 | 
			
		||||
  GL_ARB_sample_shading                                DONE (i965, nv50, r600)
 | 
			
		||||
  GL_ARB_shader_subroutine                             DONE (i965, nv50, r600, llvmpipe, softpipe)
 | 
			
		||||
  GL_ARB_tessellation_shader                           DONE ()
 | 
			
		||||
  GL_ARB_texture_buffer_object_rgb32                   DONE (i965, r600, llvmpipe, softpipe)
 | 
			
		||||
  GL_ARB_texture_cube_map_array                        DONE (i965, nv50, r600, llvmpipe, softpipe)
 | 
			
		||||
  GL_ARB_texture_gather                                DONE (i965, nv50, r600, llvmpipe, softpipe)
 | 
			
		||||
  GL_ARB_texture_query_lod                             DONE (i965, nv50, r600, softpipe)
 | 
			
		||||
  GL_ARB_transform_feedback2                           DONE (i965, nv50, r600, llvmpipe, softpipe)
 | 
			
		||||
  GL_ARB_transform_feedback3                           DONE (i965, nv50, r600, 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                   not started
 | 
			
		||||
GL_ARB_texture_cube_map_array                        not started
 | 
			
		||||
GL_ARB_texture_gather                                not started
 | 
			
		||||
GL_ARB_transform_feedback2                           DONE
 | 
			
		||||
GL_ARB_transform_feedback3                           DONE
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
GL 4.1, GLSL 4.10 --- all DONE: nvc0, radeonsi
 | 
			
		||||
GL 4.1:
 | 
			
		||||
 | 
			
		||||
  GL_ARB_ES2_compatibility                             DONE (i965, nv50, r600, llvmpipe, softpipe)
 | 
			
		||||
  GL_ARB_get_program_binary                            DONE (0 binary formats)
 | 
			
		||||
  GL_ARB_separate_shader_objects                       DONE (all drivers)
 | 
			
		||||
  GL_ARB_shader_precision                              DONE (all drivers that support GLSL 4.10)
 | 
			
		||||
  GL_ARB_vertex_attrib_64bit                           DONE (r600, llvmpipe, softpipe)
 | 
			
		||||
  GL_ARB_viewport_array                                DONE (i965, nv50, 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                       DONE (i965)
 | 
			
		||||
  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)
 | 
			
		||||
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                          not started
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
GL 4.3, GLSL 4.30:
 | 
			
		||||
 | 
			
		||||
  GL_ARB_arrays_of_arrays                              DONE (i965)
 | 
			
		||||
  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, nv50, nvc0, radeonsi)
 | 
			
		||||
  GL_KHR_debug                                         DONE (all drivers)
 | 
			
		||||
  GL_ARB_explicit_uniform_location                     DONE (all drivers that support GLSL)
 | 
			
		||||
  GL_ARB_fragment_layer_viewport                       DONE (i965, nv50, nvc0, r600, radeonsi, llvmpipe)
 | 
			
		||||
  GL_ARB_framebuffer_no_attachments                    DONE (i965)
 | 
			
		||||
  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                             DONE (i965)
 | 
			
		||||
  GL_ARB_shader_storage_buffer_object                  DONE (i965)
 | 
			
		||||
  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, r600, radeonsi, llvmpipe, softpipe)
 | 
			
		||||
  GL_ARB_vertex_attrib_binding                         DONE (all drivers)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
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, nv50, nvc0)
 | 
			
		||||
  GL_ARB_enhanced_layouts                              in progress (Timothy)
 | 
			
		||||
  - compile-time constant expressions                  DONE
 | 
			
		||||
  - explicit byte offsets for blocks                   in progress
 | 
			
		||||
  - forced alignment within blocks                     in progress
 | 
			
		||||
  - specified vec4-slot component numbers              in progress
 | 
			
		||||
  - specified transform/feedback layout                in progress
 | 
			
		||||
  - input/output block locations                       in progress
 | 
			
		||||
  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, r600, radeonsi, llvmpipe, softpipe)
 | 
			
		||||
  GL_ARB_cull_distance                                 in progress (Tobias)
 | 
			
		||||
  GL_ARB_derivative_control                            DONE (i965, nv50, nvc0, r600, radeonsi)
 | 
			
		||||
  GL_ARB_direct_state_access                           DONE (all drivers)
 | 
			
		||||
  GL_ARB_get_texture_sub_image                         DONE (all drivers)
 | 
			
		||||
  GL_ARB_shader_texture_image_samples                  DONE (i965, nv50, nvc0, r600, radeonsi)
 | 
			
		||||
  GL_ARB_texture_barrier                               DONE (i965, nv50, nvc0, r600, radeonsi)
 | 
			
		||||
  GL_KHR_context_flush_control                         DONE (all - but needs GLX/EGL 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                              DONE (i965)
 | 
			
		||||
  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                    DONE (i965)
 | 
			
		||||
  GL_ARB_program_interface_query                       DONE (all drivers)
 | 
			
		||||
  GL_ARB_shader_atomic_counters                        DONE (i965)
 | 
			
		||||
  GL_ARB_shader_image_load_store                       DONE (i965)
 | 
			
		||||
  GL_ARB_shader_image_size                             DONE (i965)
 | 
			
		||||
  GL_ARB_shader_storage_buffer_object                  DONE (i965)
 | 
			
		||||
  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 functionality not covered above:
 | 
			
		||||
      glMemoryBarrierByRegion                          DONE
 | 
			
		||||
      glGetTexLevelParameter[fi]v - needs updates      DONE
 | 
			
		||||
      glGetBooleani_v - restrict to GLES enums
 | 
			
		||||
      gl_HelperInvocation support
 | 
			
		||||
 | 
			
		||||
GLES3.2, GLSL ES 3.2
 | 
			
		||||
  GL_EXT_color_buffer_float                            DONE (all drivers)
 | 
			
		||||
  GL_KHR_blend_equation_advanced                       not started
 | 
			
		||||
  GL_KHR_debug                                         DONE (all drivers)
 | 
			
		||||
  GL_KHR_robustness                                    90% done (the ARB variant)
 | 
			
		||||
  GL_KHR_texture_compression_astc_ldr                  DONE (i965/gen9+)
 | 
			
		||||
  GL_OES_copy_image                                    not started (based on GL_ARB_copy_image, which is done for some drivers)
 | 
			
		||||
  GL_OES_draw_buffers_indexed                          not started
 | 
			
		||||
  GL_OES_draw_elements_base_vertex                     DONE (all drivers)
 | 
			
		||||
  GL_OES_geometry_shader                               not started (based on GL_ARB_geometry_shader4, which is done for all drivers)
 | 
			
		||||
  GL_OES_gpu_shader5                                   not started (based on parts of GL_ARB_gpu_shader5, which is done for some drivers)
 | 
			
		||||
  GL_OES_primitive_bounding box                        not started
 | 
			
		||||
  GL_OES_sample_shading                                not started (based on parts of GL_ARB_sample_shading, which is done for some drivers)
 | 
			
		||||
  GL_OES_sample_variables                              not started (based on parts of GL_ARB_sample_shading, which is done for some drivers)
 | 
			
		||||
  GL_OES_shader_image_atomic                           not started (based on parts of GL_ARB_shader_image_load_store, which is done for some drivers)
 | 
			
		||||
  GL_OES_shader_io_blocks                              not started (based on parts of GLSL 1.50, which is done)
 | 
			
		||||
  GL_OES_shader_multisample_interpolation              not started (based on parts of GL_ARB_gpu_shader5, which is done)
 | 
			
		||||
  GL_OES_tessellation_shader                           not started (based on GL_ARB_tessellation_shader, which is done for some drivers)
 | 
			
		||||
  GL_OES_texture_border_clamp                          not started (based on GL_ARB_texture_border_clamp, which is done)
 | 
			
		||||
  GL_OES_texture_buffer                                not started (based on GL_ARB_texture_buffer_object, GL_ARB_texture_buffer_range, and GL_ARB_texture_buffer_object_rgb32 that are all done)
 | 
			
		||||
  GL_OES_texture_cube_map_array                        not started (based on GL_ARB_texture_cube_map_array, which is done for all drivers)
 | 
			
		||||
  GL_OES_texture_stencil8                              not started (based on GL_ARB_texture_stencil8, which is done for some drivers)
 | 
			
		||||
  GL_OES_texture_storage_multisample_2d_array          DONE (all drivers that support GL_ARB_texture_multisample)
 | 
			
		||||
 | 
			
		||||
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, H.265, HEVC, 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.
 | 
			
		||||
							
								
								
									
										38
									
								
								docs/README.VMS
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								docs/README.VMS
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,38 @@
 | 
			
		||||
 | 
			
		||||
VMS support contributed by Jouk Jansen (joukj@hrem.stm.tudelft.nl)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
The latest version was tested on a VMSAlpha7.2 system using DECC6.0, but
 | 
			
		||||
probably also works for other versions.
 | 
			
		||||
 | 
			
		||||
At the moment only the libraries LIBMESGL.EXE/LIBMESGL.OLB,
 | 
			
		||||
LIBMESAGLU.EXE/LIBMESAGLU.OLB and LIBGLUT.EXE/LIBGLUT.OLB and the demos of the
 | 
			
		||||
directory [.DEMOS] can be build.
 | 
			
		||||
However, feel free to create the missing "decrip.mms-files" in the other
 | 
			
		||||
directories.
 | 
			
		||||
 | 
			
		||||
 The make files were tested
 | 
			
		||||
using the DIGITAL make utility called MMS.  There is also a public domain
 | 
			
		||||
clone available (MMK) and I  think, but it is not tested, that this
 | 
			
		||||
utility will give (hardly) any problem.
 | 
			
		||||
 | 
			
		||||
To make everything just type MMS (or MMK) in the main directory of
 | 
			
		||||
mesagl.  For MMS the deafult makefile is called descrip.mms, and
 | 
			
		||||
that is what I have called it.  I included alse some config files,
 | 
			
		||||
all having mms somewhere in the name which all the makefiles need
 | 
			
		||||
(just as your unix makefiles).
 | 
			
		||||
 | 
			
		||||
On Alpha platforms at default a sharable images for the libraries are created.
 | 
			
		||||
To get a static library make it by typing MMS/MACRO=(NOSHARE=1).
 | 
			
		||||
On VAX platforms only static libraries can be build.
 | 
			
		||||
 | 
			
		||||
23-sep-2005
 | 
			
		||||
changed default compilation to use /float=ieee/ieee=denorm. The reason for 
 | 
			
		||||
this is that it makes Mesa on OpenVMS better compatible with other platforms
 | 
			
		||||
and other packages for VMS that I maintain.
 | 
			
		||||
For more information see
 | 
			
		||||
      http://nchrem.tnw.tudelft.nl/openvms
 | 
			
		||||
      https://bugs.freedesktop.org/show_bug.cgi?id=4270
 | 
			
		||||
You may want to compile Mesa to use VAX-floating point arithmetic, instead
 | 
			
		||||
of IEEE floating point by removing the /float=IEEE/denorm flag from the
 | 
			
		||||
compiler options in the descrip.mms files.
 | 
			
		||||
@@ -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>
 | 
			
		||||
@@ -7,13 +7,6 @@
 | 
			
		||||
</head>
 | 
			
		||||
<body>
 | 
			
		||||
 | 
			
		||||
<div class="header">
 | 
			
		||||
  <h1>The Mesa 3D Graphics Library</h1>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<iframe src="contents.html"></iframe>
 | 
			
		||||
<div class="content">
 | 
			
		||||
 | 
			
		||||
<h1>Compilation and Installation using Autoconf</h1>
 | 
			
		||||
 | 
			
		||||
<ol>
 | 
			
		||||
@@ -24,6 +17,11 @@
 | 
			
		||||
  <li><a href="#dri">DRI Driver Options</a></li>
 | 
			
		||||
  <li><a href="#osmesa">OSMesa Driver Options</a></li>
 | 
			
		||||
  </ul>
 | 
			
		||||
<li><p><a href="#library">Library Options</a>
 | 
			
		||||
  <ul>
 | 
			
		||||
  <li><a href="#glu">GLU</a></li>
 | 
			
		||||
  </ul>
 | 
			
		||||
<li><p><a href="#demos">Demo Program Options</a>
 | 
			
		||||
</ol>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -62,116 +60,83 @@ configuration run <code>make realclean</code> before rebuilding.
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Some of the generic autoconf options are used with Mesa:
 | 
			
		||||
</p>
 | 
			
		||||
<dl>
 | 
			
		||||
<dt><code>--prefix=PREFIX</code></dt>
 | 
			
		||||
<dd><p>This is the root directory where
 | 
			
		||||
files will be installed by <code>make install</code>. The default is
 | 
			
		||||
<code>/usr/local</code>.</p>
 | 
			
		||||
</dd>
 | 
			
		||||
 | 
			
		||||
<dt><code>--exec-prefix=EPREFIX</code></dt>
 | 
			
		||||
<dd><p>This is the root directory
 | 
			
		||||
<ul>
 | 
			
		||||
<li><code>--prefix=PREFIX</code> - This is the root directory where
 | 
			
		||||
files will be installed by <code>make install</code>. The default is
 | 
			
		||||
<code>/usr/local</code>.
 | 
			
		||||
</li>
 | 
			
		||||
<li><code>--exec-prefix=EPREFIX</code> - This is the root directory
 | 
			
		||||
where architecture-dependent files will be installed. In Mesa, this is
 | 
			
		||||
only used to derive the directory for the libraries. The default is
 | 
			
		||||
<code>${prefix}</code>.</p>
 | 
			
		||||
</dd>
 | 
			
		||||
 | 
			
		||||
<dt><code>--libdir=LIBDIR</code></dt>
 | 
			
		||||
<dd><p>This option specifies the directory
 | 
			
		||||
<code>${prefix}</code>.
 | 
			
		||||
</li>
 | 
			
		||||
<li><code>--libdir=LIBDIR</code> - This option specifies the directory
 | 
			
		||||
where the GL libraries will be installed. The default is
 | 
			
		||||
<code>${exec_prefix}/lib</code>. It also serves as the name of the
 | 
			
		||||
library staging area in the source tree. For instance, if the option
 | 
			
		||||
<code>--libdir=/usr/local/lib64</code> is used, the libraries will be
 | 
			
		||||
created in a <code>lib64</code> directory at the top of the Mesa source
 | 
			
		||||
tree.</p>
 | 
			
		||||
</dd>
 | 
			
		||||
 | 
			
		||||
<dt><code>--sysconfdir=DIR</code></dt>
 | 
			
		||||
<dd><p>This option specifies the directory where the configuration
 | 
			
		||||
files will be installed. The default is <code>${prefix}/etc</code>.
 | 
			
		||||
Currently there's only one config file provided when dri drivers are
 | 
			
		||||
enabled - it's <code>drirc</code>.</p>
 | 
			
		||||
</dd>
 | 
			
		||||
 | 
			
		||||
<dt><code>--enable-static, --disable-shared</code></dt>
 | 
			
		||||
<dd><p>By default, Mesa
 | 
			
		||||
tree.
 | 
			
		||||
</li>
 | 
			
		||||
<li><code>--enable-static, --disable-shared</code> - By default, Mesa
 | 
			
		||||
will build shared libraries. Either of these options will force static
 | 
			
		||||
libraries to be built. It is not currently possible to build static and
 | 
			
		||||
shared libraries in a single pass.</p>
 | 
			
		||||
</dd>
 | 
			
		||||
 | 
			
		||||
<dt><code>CC, CFLAGS, CXX, CXXFLAGS</code></dt>
 | 
			
		||||
<dd><p>These environment variables
 | 
			
		||||
shared libraries in a single pass.
 | 
			
		||||
</li>
 | 
			
		||||
<li><code>CC, CFLAGS, CXX, CXXFLAGS</code> - 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>
 | 
			
		||||
</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>
 | 
			
		||||
</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
 | 
			
		||||
<code>gcc</code> and <code>g++</code> are used with the options
 | 
			
		||||
<code>"-g -O2"</code>.
 | 
			
		||||
</li>
 | 
			
		||||
<li><code>LDFLAGS</code> - An environment variable specifying flags to
 | 
			
		||||
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>.
 | 
			
		||||
</li>
 | 
			
		||||
<li><code>PKG_CONFIG_PATH</code> - 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
 | 
			
		||||
package metadata in <code>/usr/X11R6</code> before the standard
 | 
			
		||||
directories.</p>
 | 
			
		||||
</dd>
 | 
			
		||||
</dl>
 | 
			
		||||
directories.
 | 
			
		||||
</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
There are also a few general options for altering the Mesa build:
 | 
			
		||||
</p>
 | 
			
		||||
<dl>
 | 
			
		||||
<dt><code>--enable-debug</code></dt>
 | 
			
		||||
<dd><p>This option will enable compiler
 | 
			
		||||
options and macros to aid in debugging the Mesa libraries.</p>
 | 
			
		||||
</dd>
 | 
			
		||||
 | 
			
		||||
<dt><code>--disable-asm</code></dt>
 | 
			
		||||
<dd><p>There are assembly routines
 | 
			
		||||
<ul>
 | 
			
		||||
<li><code>--with-x</code> - 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.
 | 
			
		||||
</li>
 | 
			
		||||
<li><code>--enable-gl-osmesa</code> - 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.
 | 
			
		||||
</li>
 | 
			
		||||
<li><code>--enable-debug</code> - This option will enable compiler
 | 
			
		||||
options and macros to aid in debugging the Mesa libraries.
 | 
			
		||||
</li>
 | 
			
		||||
<li><code>--disable-asm</code> - There are assembly routines
 | 
			
		||||
available for a few architectures. These will be used by default if
 | 
			
		||||
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>
 | 
			
		||||
</dd>
 | 
			
		||||
</dl>
 | 
			
		||||
assembly will not be used.
 | 
			
		||||
</li>
 | 
			
		||||
<li><code>--enable-32-bit, --enable-64-bit</code> - 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.
 | 
			
		||||
</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2 id="driver">2. Driver Options</h2>
 | 
			
		||||
@@ -180,19 +145,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.
 | 
			
		||||
 | 
			
		||||
@@ -221,10 +186,8 @@ 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
 | 
			
		||||
parse the DRI configuration files in <code>${sysconfdir}/drirc</code> and
 | 
			
		||||
<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
 | 
			
		||||
search for expat headers and libraries in <code>/usr/local/include</code>
 | 
			
		||||
@@ -234,8 +197,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>
 | 
			
		||||
@@ -257,6 +219,31 @@ libraries that will be built. More details on the specific GL libraries
 | 
			
		||||
can be found in the <a href="install.html">basic installation
 | 
			
		||||
instructions</a>.
 | 
			
		||||
 | 
			
		||||
</div>
 | 
			
		||||
<dl>
 | 
			
		||||
<dt id="glu">GLU <dd><p> The libGLU library will be built by default
 | 
			
		||||
on all drivers. This can be disable with the option
 | 
			
		||||
<code>--disable-glu</code>.
 | 
			
		||||
</dl>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2 id="demos">4. Demo Program Options</h2>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
There are many demonstration programs in the MesaDemos tarball. If the
 | 
			
		||||
programs are available when <code>./configure</code> is run, a subset of
 | 
			
		||||
the programs will be built depending on the driver and library options
 | 
			
		||||
chosen. See the directory <code>progs</code> for the full set of demos.
 | 
			
		||||
 | 
			
		||||
<dl>
 | 
			
		||||
<dt><code>--with-demos=DEMOS,DEMOS,...</code>
 | 
			
		||||
<dd><p> This option allows a
 | 
			
		||||
specific set of demo programs to be built. For example,
 | 
			
		||||
<code>--with-demos="xdemos,slang"</code>. Beware that if this option is
 | 
			
		||||
used, it will not be ensured that the necessary GL libraries will be
 | 
			
		||||
available.
 | 
			
		||||
<dt><code>--without-demos</code> <dd><p> This completely disables building the
 | 
			
		||||
demo programs. It is equivalent to <code>--with-demos=no</code>.
 | 
			
		||||
</dl>
 | 
			
		||||
 | 
			
		||||
</body>
 | 
			
		||||
</html>
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										33
									
								
								docs/banner.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								docs/banner.html
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,33 @@
 | 
			
		||||
<!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>Banner</title>
 | 
			
		||||
  <style type="text/css">
 | 
			
		||||
    <!--
 | 
			
		||||
    body { background: black; color: white }
 | 
			
		||||
    h1 {
 | 
			
		||||
      font: x-large sans-serif; text-align: center;
 | 
			
		||||
      height: 75px; margin-left: 100px; margin-right: 100px }
 | 
			
		||||
    .gears { width: 100px; height: 73px; float: left; background: url('gears.png') right no-repeat }
 | 
			
		||||
    div + .gears { float: right; background-position: left }
 | 
			
		||||
    /*
 | 
			
		||||
    This should happen in the future instead:
 | 
			
		||||
    h1 {
 | 
			
		||||
      border-left: 71px solid #c11800; border-right: 71px solid #00c130;
 | 
			
		||||
      border-top: 0px; border-bottom: 0px;
 | 
			
		||||
      border-image: url(gears.png) 100%; -webkit-border-image: url(gears.png) 100%;
 | 
			
		||||
    }
 | 
			
		||||
    */
 | 
			
		||||
    -->
 | 
			
		||||
  </style>
 | 
			
		||||
</head>
 | 
			
		||||
 | 
			
		||||
<body>
 | 
			
		||||
 | 
			
		||||
<div class="gears"></div>
 | 
			
		||||
<div class="gears"></div>
 | 
			
		||||
<h1>The Mesa 3D Graphics Library</h1>
 | 
			
		||||
 | 
			
		||||
</body>
 | 
			
		||||
</html>
 | 
			
		||||
@@ -7,24 +7,18 @@
 | 
			
		||||
</head>
 | 
			
		||||
<body>
 | 
			
		||||
 | 
			
		||||
<div class="header">
 | 
			
		||||
  <h1>The Mesa 3D Graphics Library</h1>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<iframe src="contents.html"></iframe>
 | 
			
		||||
<div class="content">
 | 
			
		||||
 | 
			
		||||
<h1>Bug Database</h1>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
The Mesa bug database is hosted on
 | 
			
		||||
<a href="http://freedesktop.org">freedesktop.org</a>.
 | 
			
		||||
<a href="http://freedesktop.org" target="_parent">freedesktop.org</a>.
 | 
			
		||||
The old bug database on SourceForge is no longer used.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
To file a Mesa bug, go to
 | 
			
		||||
<a href="https://bugs.freedesktop.org/enter_bug.cgi?product=Mesa">
 | 
			
		||||
<a href="https://bugs.freedesktop.org/enter_bug.cgi?product=Mesa"
 | 
			
		||||
target="_parent">
 | 
			
		||||
Bugzilla on freedesktop.org</a>
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
@@ -56,6 +50,5 @@ If your bug report is vague or your test program doesn't compile
 | 
			
		||||
easily, the problem may not be fixed very quickly.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
</div>
 | 
			
		||||
</body>
 | 
			
		||||
</html>
 | 
			
		||||
 
 | 
			
		||||
@@ -7,19 +7,12 @@
 | 
			
		||||
</head>
 | 
			
		||||
<body>
 | 
			
		||||
 | 
			
		||||
<div class="header">
 | 
			
		||||
  <h1>The Mesa 3D Graphics Library</h1>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<iframe src="contents.html"></iframe>
 | 
			
		||||
<div class="content">
 | 
			
		||||
 | 
			
		||||
<h1>Conformance</h1>
 | 
			
		||||
 | 
			
		||||
<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
 | 
			
		||||
@@ -698,6 +691,6 @@ Conformx passed.
 | 
			
		||||
 | 
			
		||||
NOTE: conformx passes for all machine path levels (-p option).
 | 
			
		||||
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
</body>
 | 
			
		||||
</html>
 | 
			
		||||
 
 | 
			
		||||
@@ -25,64 +25,62 @@
 | 
			
		||||
 | 
			
		||||
<b>Documentation</b>
 | 
			
		||||
<ul>
 | 
			
		||||
<li><a href="intro.html" target="_parent">Introduction</a>
 | 
			
		||||
<li><a href="index.html" target="_parent">News</a>
 | 
			
		||||
<li><a href="developers.html" target="_parent">Developers</a>
 | 
			
		||||
<li><a href="systems.html" target="_parent">Platforms and Drivers</a>
 | 
			
		||||
<li><a href="license.html" target="_parent">License & Copyright</a>
 | 
			
		||||
<li><a href="faq.html" target="_parent">FAQ</a>
 | 
			
		||||
<li><a href="relnotes.html" target="_parent">Release Notes</a>
 | 
			
		||||
<li><a href="thanks.html" target="_parent">Acknowledgements</a>
 | 
			
		||||
<li><a href="conform.html" target="_parent">Conformance Testing</a>
 | 
			
		||||
<li><a href="intro.html" target="MainFrame">Introduction</a>
 | 
			
		||||
<li><a href="news.html" target="MainFrame">News</a>
 | 
			
		||||
<li><a href="developers.html" target="MainFrame">Developers</a>
 | 
			
		||||
<li><a href="systems.html" target="MainFrame">Platforms and Drivers</a>
 | 
			
		||||
<li><a href="license.html" target="MainFrame">License & Copyright</a>
 | 
			
		||||
<li><a href="faq.html" target="MainFrame">FAQ</a>
 | 
			
		||||
<li><a href="relnotes.html" target="MainFrame">Release Notes</a>
 | 
			
		||||
<li><a href="thanks.html" target="MainFrame">Acknowledgements</a>
 | 
			
		||||
<li><a href="conform.html" target="MainFrame">Conformance Testing</a>
 | 
			
		||||
<li>more docs below...
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<b>Download / Install</b>
 | 
			
		||||
<ul>
 | 
			
		||||
<li><a href="download.html" target="_parent">Downloading / Unpacking</a>
 | 
			
		||||
<li><a href="install.html" target="_parent">Compiling / Installing</a>
 | 
			
		||||
  <ul>
 | 
			
		||||
    <li><a href="autoconf.html" target="_parent">Autoconf</a></li>
 | 
			
		||||
  </ul>
 | 
			
		||||
</li>
 | 
			
		||||
<li><a href="precompiled.html" target="_parent">Precompiled Libraries</a>
 | 
			
		||||
<li><a href="download.html" target="MainFrame">Downloading / Unpacking</a>
 | 
			
		||||
<li><a href="install.html" target="MainFrame">Compiling / Installing</a>
 | 
			
		||||
<li><a href="precompiled.html" target="MainFrame">Precompiled Libraries</a>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<b>Resources</b>
 | 
			
		||||
<ul>
 | 
			
		||||
<li><a href="lists.html" target="_parent">Mailing Lists</a>
 | 
			
		||||
<li><a href="bugs.html" target="_parent">Bug Database</a>
 | 
			
		||||
<li><a href="webmaster.html" target="_parent">Webmaster</a>
 | 
			
		||||
<li><a href="lists.html" target="MainFrame">Mailing Lists</a>
 | 
			
		||||
<li><a href="bugs.html" target="MainFrame">Bug Database</a>
 | 
			
		||||
<li><a href="webmaster.html" target="MainFrame">Webmaster</a>
 | 
			
		||||
<li><a href="http://dri.freedesktop.org/" target="_parent">Mesa/DRI Wiki</a>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<b>User Topics</b>
 | 
			
		||||
<ul>
 | 
			
		||||
<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="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>
 | 
			
		||||
<li><a href="perf.html" target="_parent">Performance Tips</a>
 | 
			
		||||
<li><a href="extensions.html" target="_parent">Mesa Extensions</a>
 | 
			
		||||
<li><a href="mangling.html" target="_parent">Function Name Mangling</a>
 | 
			
		||||
<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>
 | 
			
		||||
<li><a href="egl.html" target="MainFrame">EGL</a>
 | 
			
		||||
<li><a href="opengles.html" target="MainFrame">OpenGL ES</a>
 | 
			
		||||
<li><a href="openvg.html" target="MainFrame">OpenVG / Vega</a>
 | 
			
		||||
<li><a href="envvars.html" target="MainFrame">Environment Variables</a>
 | 
			
		||||
<li><a href="osmesa.html" target="MainFrame">Off-Screen Rendering</a>
 | 
			
		||||
<li><a href="debugging.html" target="MainFrame">Debugging Tips</a>
 | 
			
		||||
<li><a href="perf.html" target="MainFrame">Performance Tips</a>
 | 
			
		||||
<li><a href="extensions.html" target="MainFrame">Mesa Extensions</a>
 | 
			
		||||
<li><a href="mangling.html" target="MainFrame">Function Name Mangling</a>
 | 
			
		||||
<li><a href="llvmpipe.html" target="MainFrame">Gallium llvmpipe driver</a>
 | 
			
		||||
<li><a href="vmware-guest.html" target="MainFrame">VMware SVGA3D guest driver</a>
 | 
			
		||||
<li><a href="postprocess.html" target="MainFrame">Gallium post-processing</a>
 | 
			
		||||
<li><a href="viewperf.html" target="MainFrame">Viewperf Issues</a>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<b>Developer Topics</b>
 | 
			
		||||
<ul>
 | 
			
		||||
<li><a href="repository.html" target="_parent">Source Code Repository</a>
 | 
			
		||||
<li><a href="sourcetree.html" target="_parent">Source Code Tree</a>
 | 
			
		||||
<li><a href="utilities.html" target="_parent">Utilities</a>
 | 
			
		||||
<li><a href="helpwanted.html" target="_parent">Help Wanted</a>
 | 
			
		||||
<li><a href="devinfo.html" target="_parent">Development Notes</a>
 | 
			
		||||
<li><a href="sourcedocs.html" target="_parent">Source Documentation</a>
 | 
			
		||||
<li><a href="dispatch.html" target="_parent">GL Dispatch</a>
 | 
			
		||||
<li><a href="http://sourceforge.net/projects/mesa3d" target="_parent">SourceForge homepage</a>
 | 
			
		||||
<li><a href="repository.html" target="MainFrame">Source Code Repository</a>
 | 
			
		||||
<li><a href="sourcetree.html" target="MainFrame">Source Code Tree</a>
 | 
			
		||||
<li><a href="glu.html" target="MainFrame">SGI's GLU</a>
 | 
			
		||||
<li><a href="utilities.html" target="MainFrame">Utilities</a>
 | 
			
		||||
<li><a href="helpwanted.html" target="MainFrame">Help Wanted</a>
 | 
			
		||||
<li><a href="devinfo.html" target="MainFrame">Development Notes</a>
 | 
			
		||||
<li><a href="sourcedocs.html" target="MainFrame">Source Documentation</a>
 | 
			
		||||
<li><a href="subset.html" target="MainFrame">Mesa Subset Driver</a>
 | 
			
		||||
<li><a HREF="dispatch.html" target="MainFrame">GL Dispatch</a>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<b>Links</b>
 | 
			
		||||
@@ -90,6 +88,11 @@
 | 
			
		||||
<li><a href="http://www.opengl.org" target="_parent">OpenGL website</a>
 | 
			
		||||
<li><a href="http://dri.freedesktop.org" target="_parent">DRI website</a>
 | 
			
		||||
<li><a href="http://www.freedesktop.org" target="_parent">freedesktop.org</a>
 | 
			
		||||
<li><a href="games.html" target="MainFrame">Games and Entertainment</a>
 | 
			
		||||
<li><a href="libraries.html" target="MainFrame">Libraries and Toolkits</a>
 | 
			
		||||
<li><a href="modelers.html" target="MainFrame">Modeling and Rendering</a>
 | 
			
		||||
<li><a href="science.html" target="MainFrame">Science and Technical</a>
 | 
			
		||||
<li><a href="utility.html" target="MainFrame">Utilities</a>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<b>Hosted by:</b>
 | 
			
		||||
 
 | 
			
		||||
@@ -7,13 +7,6 @@
 | 
			
		||||
</head>
 | 
			
		||||
<body>
 | 
			
		||||
 | 
			
		||||
<div class="header">
 | 
			
		||||
  <h1>The Mesa 3D Graphics Library</h1>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<iframe src="contents.html"></iframe>
 | 
			
		||||
<div class="content">
 | 
			
		||||
 | 
			
		||||
<h1>Debugging Tips</h1>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
@@ -42,6 +35,5 @@
 | 
			
		||||
   src/dlist.c for details.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
</div>
 | 
			
		||||
</body>
 | 
			
		||||
</html>
 | 
			
		||||
 
 | 
			
		||||
@@ -7,20 +7,13 @@
 | 
			
		||||
</head>
 | 
			
		||||
<body>
 | 
			
		||||
 | 
			
		||||
<div class="header">
 | 
			
		||||
  <h1>The Mesa 3D Graphics Library</h1>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<iframe src="contents.html"></iframe>
 | 
			
		||||
<div class="content">
 | 
			
		||||
 | 
			
		||||
<h1>Developers</h1>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Both professional and volunteer developers contribute to Mesa.
 | 
			
		||||
</p>
 | 
			
		||||
<p>
 | 
			
		||||
<a href="http://www.vmware.com/">VMware</a>
 | 
			
		||||
<a href="http://www.vmware.com/" target="_parent">VMware</a>
 | 
			
		||||
employs several of the main Mesa developers including Brian Paul
 | 
			
		||||
and Keith Whitwell.
 | 
			
		||||
</p>
 | 
			
		||||
@@ -38,13 +31,13 @@ including:
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Other companies including
 | 
			
		||||
<a href="http://www.intellinuxgraphics.org/index.html">Intel</a>
 | 
			
		||||
<a href="http://www.intellinuxgraphics.org/index.html" target="_parent">Intel</a>
 | 
			
		||||
and RedHat also actively contribute to the project.
 | 
			
		||||
Intel has recently contributed the new GLSL compiler in Mesa 7.9.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
<a href="http://www.lunarg.com/">LunarG</a> can be contacted
 | 
			
		||||
<a href="http://www.lunarg.com/" target="_parent">LunarG</a> can be contacted
 | 
			
		||||
for custom Mesa / 3D graphics development.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
@@ -53,6 +46,5 @@ Volunteers have made significant contributions to all parts of Mesa, including
 | 
			
		||||
complete device drivers.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
</div>
 | 
			
		||||
</body>
 | 
			
		||||
</html>
 | 
			
		||||
 
 | 
			
		||||
@@ -7,658 +7,10 @@
 | 
			
		||||
</head>
 | 
			
		||||
<body>
 | 
			
		||||
 | 
			
		||||
<div class="header">
 | 
			
		||||
  <h1>The Mesa 3D Graphics Library</h1>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<iframe src="contents.html"></iframe>
 | 
			
		||||
<div class="content">
 | 
			
		||||
 | 
			
		||||
<h1>Development Notes</h1>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<ul>
 | 
			
		||||
<li><a href="#style">Coding Style</a>
 | 
			
		||||
<li><a href="#submitting">Submitting Patches</a>
 | 
			
		||||
<li><a href="#release">Making a New Mesa Release</a>
 | 
			
		||||
<li><a href="#extensions">Adding Extensions</a>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2 id="style">Coding Style</h2>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Mesa is over 20 years old and the coding style has evolved over time.
 | 
			
		||||
Some old parts use a style that's a bit out of date.
 | 
			
		||||
If the guidelines below don't cover something, try following the format of
 | 
			
		||||
existing, neighboring code.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Basic formatting guidelines
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<ul>
 | 
			
		||||
<li>3-space indentation, no tabs.
 | 
			
		||||
<li>Limit lines to 78 or fewer characters.  The idea is to prevent line
 | 
			
		||||
wrapping in 80-column editors and terminals.  There are exceptions, such
 | 
			
		||||
as if you're defining a large, static table of information.
 | 
			
		||||
<li>Opening braces go on the same line as the if/for/while statement.
 | 
			
		||||
For example:
 | 
			
		||||
<pre>
 | 
			
		||||
   if (condition) {
 | 
			
		||||
      foo;
 | 
			
		||||
   } else {
 | 
			
		||||
      bar;
 | 
			
		||||
   }
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
<li>Put a space before/after operators.  For example, <tt>a = b + c;</tt>
 | 
			
		||||
and not <tt>a=b+c;</tt>
 | 
			
		||||
 | 
			
		||||
<li>This GNU indent command generally does the right thing for formatting:
 | 
			
		||||
<pre>
 | 
			
		||||
   indent -br -i3 -npcs --no-tabs infile.c -o outfile.c
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
<li>Use comments wherever you think it would be helpful for other developers.
 | 
			
		||||
Several specific cases and style examples follow.  Note that we roughly
 | 
			
		||||
follow <a href="http://www.stack.nl/~dimitri/doxygen/">Doxygen</a> conventions.
 | 
			
		||||
<br>
 | 
			
		||||
<br>
 | 
			
		||||
Single-line comments:
 | 
			
		||||
<pre>
 | 
			
		||||
   /* null-out pointer to prevent dangling reference below */
 | 
			
		||||
   bufferObj = NULL;
 | 
			
		||||
</pre>
 | 
			
		||||
Or,
 | 
			
		||||
<pre>
 | 
			
		||||
   bufferObj = NULL;  /* prevent dangling reference below */
 | 
			
		||||
</pre>
 | 
			
		||||
Multi-line comment:
 | 
			
		||||
<pre>
 | 
			
		||||
   /* If this is a new buffer object id, or one which was generated but
 | 
			
		||||
    * never used before, allocate a buffer object now.
 | 
			
		||||
    */
 | 
			
		||||
</pre>
 | 
			
		||||
We try to quote the OpenGL specification where prudent:
 | 
			
		||||
<pre>
 | 
			
		||||
   /* Page 38 of the PDF of the OpenGL ES 3.0 spec says:
 | 
			
		||||
    *
 | 
			
		||||
    *     "An INVALID_OPERATION error is generated for any of the following
 | 
			
		||||
    *     conditions:
 | 
			
		||||
    *
 | 
			
		||||
    *     * <length> is zero."
 | 
			
		||||
    *
 | 
			
		||||
    * Additionally, page 94 of the PDF of the OpenGL 4.5 core spec
 | 
			
		||||
    * (30.10.2014) also says this, so it's no longer allowed for desktop GL,
 | 
			
		||||
    * either.
 | 
			
		||||
    */
 | 
			
		||||
</pre>
 | 
			
		||||
Function comment example:
 | 
			
		||||
<pre>
 | 
			
		||||
   /**
 | 
			
		||||
    * Create and initialize a new buffer object.  Called via the
 | 
			
		||||
    * ctx->Driver.CreateObject() driver callback function.
 | 
			
		||||
    * \param  name  integer name of the object
 | 
			
		||||
    * \param  type  one of GL_FOO, GL_BAR, etc.
 | 
			
		||||
    * \return  pointer to new object or NULL if error
 | 
			
		||||
    */
 | 
			
		||||
   struct gl_object *
 | 
			
		||||
   _mesa_create_object(GLuint name, GLenum type)
 | 
			
		||||
   {
 | 
			
		||||
      /* function body */
 | 
			
		||||
   }
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
<li>Put the function return type and qualifiers on one line and the function
 | 
			
		||||
name and parameters on the next, as seen above.  This makes it easy to use
 | 
			
		||||
<code>grep ^function_name dir/*</code> to find function definitions.  Also,
 | 
			
		||||
the opening brace goes on the next line by itself (see above.)
 | 
			
		||||
 | 
			
		||||
<li>Function names follow various conventions depending on the type of function:
 | 
			
		||||
<pre>
 | 
			
		||||
   glFooBar()       - a public GL entry point (in glapi_dispatch.c)
 | 
			
		||||
   _mesa_FooBar()   - the internal immediate mode function
 | 
			
		||||
   save_FooBar()    - retained mode (display list) function in dlist.c
 | 
			
		||||
   foo_bar()        - a static (private) function
 | 
			
		||||
   _mesa_foo_bar()  - an internal non-static Mesa function
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
<li>Constants, macros and enumerant names are ALL_UPPERCASE, with _ between
 | 
			
		||||
words.
 | 
			
		||||
<li>Mesa usually uses camel case for local variables (Ex: "localVarname")
 | 
			
		||||
while gallium typically uses underscores (Ex: "local_var_name").
 | 
			
		||||
<li>Global variables are almost never used because Mesa should be thread-safe.
 | 
			
		||||
 | 
			
		||||
<li>Booleans.  Places that are not directly visible to the GL API
 | 
			
		||||
should prefer the use of <tt>bool</tt>, <tt>true</tt>, and
 | 
			
		||||
<tt>false</tt> over <tt>GLboolean</tt>, <tt>GL_TRUE</tt>, and
 | 
			
		||||
<tt>GL_FALSE</tt>.  In C code, this may mean that
 | 
			
		||||
<tt>#include <stdbool.h></tt> needs to be added.  The
 | 
			
		||||
<tt>try_emit_</tt>* methods in src/mesa/program/ir_to_mesa.cpp and
 | 
			
		||||
src/mesa/state_tracker/st_glsl_to_tgsi.cpp can serve as examples.
 | 
			
		||||
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2 id="submitting">Submitting patches</h2>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
The basic guidelines for submitting patches are:
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<ul>
 | 
			
		||||
<li>Patches should be sufficiently tested before submitting.
 | 
			
		||||
<li>Code patches should follow Mesa coding conventions.
 | 
			
		||||
<li>Whenever possible, patches should only effect individual Mesa/Gallium
 | 
			
		||||
components.
 | 
			
		||||
<li>Patches should never introduce build breaks and should be bisectable (see
 | 
			
		||||
<code>git bisect</code>.)
 | 
			
		||||
<li>Patches should be properly formatted (see below).
 | 
			
		||||
<li>Patches should be submitted to mesa-dev for review using
 | 
			
		||||
<code>git send-email</code>.
 | 
			
		||||
<li>Patches should not mix code changes with code formatting changes (except,
 | 
			
		||||
perhaps, in very trivial cases.)
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<h3>Patch formatting</h3>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
The basic rules for patch formatting are:
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<ul>
 | 
			
		||||
<li>Lines should be limited to 75 characters or less so that git logs
 | 
			
		||||
displayed in 80-column terminals avoid line wrapping.  Note that git
 | 
			
		||||
log uses 4 spaces of indentation (4 + 75 < 80).
 | 
			
		||||
<li>The first line should be a short, concise summary of the change prefixed
 | 
			
		||||
with a module name.  Examples:
 | 
			
		||||
<pre>
 | 
			
		||||
    mesa: Add support for querying GL_VERTEX_ATTRIB_ARRAY_LONG
 | 
			
		||||
 | 
			
		||||
    gallium: add PIPE_CAP_DEVICE_RESET_STATUS_QUERY
 | 
			
		||||
 | 
			
		||||
    i965: Fix missing type in local variable declaration.
 | 
			
		||||
</pre>
 | 
			
		||||
<li>Subsequent patch comments should describe the change in more detail,
 | 
			
		||||
if needed.  For example:
 | 
			
		||||
<pre>
 | 
			
		||||
    i965: Remove end-of-thread SEND alignment code.
 | 
			
		||||
    
 | 
			
		||||
    This was present in Eric's initial implementation of the compaction code
 | 
			
		||||
    for Sandybridge (commit 077d01b6). There is no documentation saying this
 | 
			
		||||
    is necessary, and removing it causes no regressions in piglit on any
 | 
			
		||||
    platform.
 | 
			
		||||
</pre>
 | 
			
		||||
<li>A "Signed-off-by:" line is not required, but not discouraged either.
 | 
			
		||||
<li>If a patch address a bugzilla issue, that should be noted in the
 | 
			
		||||
patch comment.  For example:
 | 
			
		||||
<pre>
 | 
			
		||||
   Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=89689
 | 
			
		||||
</pre>
 | 
			
		||||
<li>If there have been several revisions to a patch during the review
 | 
			
		||||
process, they should be noted such as in this example:
 | 
			
		||||
<pre>
 | 
			
		||||
    st/mesa: add ARB_texture_stencil8 support (v4)
 | 
			
		||||
    
 | 
			
		||||
    if we support stencil texturing, enable texture_stencil8
 | 
			
		||||
    there is no requirement to support native S8 for this,
 | 
			
		||||
    the texture can be converted to x24s8 fine.
 | 
			
		||||
    
 | 
			
		||||
    v2: fold fixes from Marek in:
 | 
			
		||||
       a) put S8 last in the list
 | 
			
		||||
       b) fix renderable to always test for d/s renderable
 | 
			
		||||
        fixup the texture case to use a stencil only format
 | 
			
		||||
        for picking the format for the texture view.
 | 
			
		||||
    v3: hit fallback for getteximage
 | 
			
		||||
    v4: put s8 back in front, it shouldn't get picked now (Ilia)
 | 
			
		||||
</pre>
 | 
			
		||||
<li>If someone tested your patch, document it with a line like this:
 | 
			
		||||
<pre>
 | 
			
		||||
    Tested-by: Joe Hacker <jhacker@foo.com>
 | 
			
		||||
</pre>
 | 
			
		||||
<li>If the patch was reviewed (usually the case) or acked by someone,
 | 
			
		||||
that should be documented with:
 | 
			
		||||
<pre>
 | 
			
		||||
    Reviewed-by: Joe Hacker <jhacker@foo.com>
 | 
			
		||||
    Acked-by: Joe Hacker <jhacker@foo.com>
 | 
			
		||||
</pre>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h3>Testing Patches</h3>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
It should go without saying that patches must be tested.  In general,
 | 
			
		||||
do whatever testing is prudent.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
You should always run the Mesa test suite before submitting patches.
 | 
			
		||||
The test suite 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>
 | 
			
		||||
Whenever possible and applicable, test the patch with
 | 
			
		||||
<a href="http://piglit.freedesktop.org">Piglit</a> to
 | 
			
		||||
check for regressions.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h3>Mailing Patches</h3>
 | 
			
		||||
 | 
			
		||||
<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>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
When submitting follow-up patches you should also login to
 | 
			
		||||
<a href="https://patchwork.freedesktop.org">patchwork</a> and change the
 | 
			
		||||
state of your old patches to Superseded.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<h3>Reviewing Patches</h3>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
When you've reviewed a patch on the mailing list, please be unambiguous
 | 
			
		||||
about your review.  That is, state either
 | 
			
		||||
<pre>
 | 
			
		||||
    Reviewed-by: Joe Hacker <jhacker@foo.com>
 | 
			
		||||
</pre>
 | 
			
		||||
or
 | 
			
		||||
<pre>
 | 
			
		||||
    Acked-by: Joe Hacker <jhacker@foo.com>
 | 
			
		||||
</pre>
 | 
			
		||||
Rather than saying just "LGTM" or "Seems OK".
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
If small changes are suggested, it's OK to say something like:
 | 
			
		||||
<pre>
 | 
			
		||||
   With the above fixes, Reviewed-by: Joe Hacker <jhacker@foo.com>
 | 
			
		||||
</pre>
 | 
			
		||||
which tells the patch author that the patch can be committed, as long
 | 
			
		||||
as the issues are resolved first.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h3>Marking a commit as a candidate for a stable branch</h3>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
If you want a commit to be applied to a stable branch,
 | 
			
		||||
you should add an appropriate note to the commit message.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
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>
 | 
			
		||||
</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).
 | 
			
		||||
 | 
			
		||||
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.
 | 
			
		||||
 | 
			
		||||
<h3>Criteria for accepting patches to the stable branch</h3>
 | 
			
		||||
 | 
			
		||||
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>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2 id="release">Making a New Mesa Release</h2>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
These are the instructions for making a new Mesa release.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<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.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<h3>Perform basic testing</h3>
 | 
			
		||||
<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.
 | 
			
		||||
</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:
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<pre>
 | 
			
		||||
LIBGL_ALWAYS_SOFTWARE=1
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
And Gallium vs. non-Gallium software drivers can be obtained by using the
 | 
			
		||||
following configure flags on separate builds:
 | 
			
		||||
 | 
			
		||||
<pre>
 | 
			
		||||
--with-dri-drivers=swrast
 | 
			
		||||
--with-gallium-drivers=swrast
 | 
			
		||||
</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.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Two scripts are available to help generate portions of the release notes:
 | 
			
		||||
 | 
			
		||||
<pre>
 | 
			
		||||
	./bin/bugzilla_mesa.sh
 | 
			
		||||
	./bin/shortlog_mesa.sh
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
<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.
 | 
			
		||||
</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 created 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, add 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.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Update the web site by copying the docs/ directory's files to 
 | 
			
		||||
/home/users/b/br/brianp/mesa-www/htdocs/ with:
 | 
			
		||||
<br>
 | 
			
		||||
<code>
 | 
			
		||||
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>,
 | 
			
		||||
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>
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2 id="extensions">Adding Extensions</h2>
 | 
			
		||||
<h2>Adding Extentions</h2>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
To add a new GL extension to Mesa you have to do at least the following.
 | 
			
		||||
@@ -677,7 +29,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.
 | 
			
		||||
@@ -697,16 +49,199 @@ 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>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>Coding Style</h2>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Mesa's code style has changed over the years.  Here's the latest.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Comment your code!  It's extremely important that open-source code be
 | 
			
		||||
well documented.  Also, strive to write clean, easily understandable code.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
3-space indentation
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
If you use tabs, set them to 8 columns
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Line width: the preferred width to fill comments and code in Mesa is 78
 | 
			
		||||
columns.  Exceptions are sometimes made for clarity (e.g. tabular data is
 | 
			
		||||
sometimes filled to a much larger width so that extraneous carriage returns
 | 
			
		||||
don't obscure the table).
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Brace example:
 | 
			
		||||
</p>
 | 
			
		||||
<pre>
 | 
			
		||||
	if (condition) {
 | 
			
		||||
	   foo;
 | 
			
		||||
	}
 | 
			
		||||
	else {
 | 
			
		||||
	   bar;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	switch (condition) {
 | 
			
		||||
	case 0:
 | 
			
		||||
	   foo();
 | 
			
		||||
	   break;
 | 
			
		||||
 | 
			
		||||
	case 1: {
 | 
			
		||||
	   ...
 | 
			
		||||
	   break;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	default:
 | 
			
		||||
	   ...
 | 
			
		||||
	   break;
 | 
			
		||||
	}
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Here's the GNU indent command which will best approximate my preferred style:
 | 
			
		||||
(Note that it won't format switch statements in the preferred way)
 | 
			
		||||
</p>
 | 
			
		||||
<pre>
 | 
			
		||||
	indent -br -i3 -npcs --no-tabs infile.c -o outfile.c
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Local variable name example:  localVarName (no underscores)
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Constants and macros are ALL_UPPERCASE, with _ between words
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Global variables are not allowed.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Function name examples:
 | 
			
		||||
</p>
 | 
			
		||||
<pre>
 | 
			
		||||
	glFooBar()       - a public GL entry point (in glapi_dispatch.c)
 | 
			
		||||
	_mesa_FooBar()   - the internal immediate mode function
 | 
			
		||||
	save_FooBar()    - retained mode (display list) function in dlist.c
 | 
			
		||||
	foo_bar()        - a static (private) function
 | 
			
		||||
	_mesa_foo_bar()  - an internal non-static Mesa function
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Places that are not directly visible to the GL API should prefer the use
 | 
			
		||||
of <tt>bool</tt>, <tt>true</tt>, and
 | 
			
		||||
<tt>false</tt> over <tt>GLboolean</tt>, <tt>GL_TRUE</tt>, and
 | 
			
		||||
<tt>GL_FALSE</tt>.  In C code, this may mean that
 | 
			
		||||
<tt>#include <stdbool.h></tt> needs to be added.  The
 | 
			
		||||
<tt>try_emit_</tt>* methods in src/mesa/program/ir_to_mesa.cpp and
 | 
			
		||||
src/mesa/state_tracker/st_glsl_to_tgsi.cpp can serve as examples.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>Making a New Mesa Release</h2>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
These are the instructions for making a new Mesa release.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<h3>Get latest source files</h3>
 | 
			
		||||
<p>
 | 
			
		||||
Use git to get the latest Mesa files from the git repository, from whatever
 | 
			
		||||
branch is relevant.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<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>autoconf.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>
 | 
			
		||||
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>
 | 
			
		||||
Update <a href="news.html">docs/news.html</a>.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<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>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h3>Make the tarballs</h3>
 | 
			
		||||
<p>
 | 
			
		||||
Make the distribution files.  From inside the Mesa directory:
 | 
			
		||||
<pre>
 | 
			
		||||
	make tarballs
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
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>
 | 
			
		||||
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>
 | 
			
		||||
Follow the directions on SourceForge for creating a new "release" and
 | 
			
		||||
uploading the tarballs.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Basically, to upload the tarball files with:
 | 
			
		||||
<br>
 | 
			
		||||
<code>
 | 
			
		||||
rsync -avP ssh Mesa*-X.Y.* USERNAME@frs.sourceforge.net:uploads/
 | 
			
		||||
</code>
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Update the web site by copying the docs/ directory's files to 
 | 
			
		||||
/home/users/b/br/brianp/mesa-www/htdocs/ with:
 | 
			
		||||
<br>
 | 
			
		||||
<code>
 | 
			
		||||
sftp USERNAME,mesa3d@web.sourceforge.net
 | 
			
		||||
</code>
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Make an announcement on the mailing lists:
 | 
			
		||||
 | 
			
		||||
<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>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>
 | 
			
		||||
</body>
 | 
			
		||||
</html>
 | 
			
		||||
 
 | 
			
		||||
@@ -6,14 +6,6 @@
 | 
			
		||||
  <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>GL Dispatch in Mesa</h1>
 | 
			
		||||
 | 
			
		||||
<p>Several factors combine to make efficient dispatch of OpenGL functions
 | 
			
		||||
@@ -25,7 +17,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 +43,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 +196,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>PTHREADS</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 +234,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>
 | 
			
		||||
 | 
			
		||||
@@ -273,6 +266,5 @@ included.</p>
 | 
			
		||||
 | 
			
		||||
<h2 id="autogen">4. Automatic Generation of Dispatch Stubs</h2>
 | 
			
		||||
 | 
			
		||||
</div>
 | 
			
		||||
</body>
 | 
			
		||||
</html>
 | 
			
		||||
 
 | 
			
		||||
@@ -7,23 +7,17 @@
 | 
			
		||||
</head>
 | 
			
		||||
<body>
 | 
			
		||||
 | 
			
		||||
<div class="header">
 | 
			
		||||
  <h1>The Mesa 3D Graphics Library</h1>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<iframe src="contents.html"></iframe>
 | 
			
		||||
<div class="content">
 | 
			
		||||
 | 
			
		||||
<h1>Downloading</h1>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Primary Mesa download site:
 | 
			
		||||
<a href="ftp://ftp.freedesktop.org/pub/mesa/">freedesktop.org</a> (FTP)
 | 
			
		||||
<a href="ftp://ftp.freedesktop.org/pub/mesa/"
 | 
			
		||||
target="_parent">freedesktop.org</a> (FTP)
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
When a new release is coming, release candidates (betas) may be found
 | 
			
		||||
<a href="ftp://ftp.freedesktop.org/pub/mesa/beta/">here</a>.
 | 
			
		||||
<a href="ftp://ftp.freedesktop.org/pub/mesa/beta/" target="_parent">here</a>.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -75,6 +69,7 @@ docs/		- documentation
 | 
			
		||||
src/		- source code for libraries
 | 
			
		||||
src/mesa	- sources for the main Mesa library and device drivers
 | 
			
		||||
src/gallium     - sources for Gallium and Gallium drivers
 | 
			
		||||
src/glu		- libGLU source code
 | 
			
		||||
src/glx		- sources for building libGL with full GLX and DRI support
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
@@ -85,33 +80,24 @@ instructions</a>.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h1>Demos, GLUT, and GLU</h1>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
A package of SGI's GLU library is available
 | 
			
		||||
<a href="ftp://ftp.freedesktop.org/pub/mesa/glu/">here</a>
 | 
			
		||||
</p>
 | 
			
		||||
<h1>Demos and GLUT</h1>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
A package of Mark Kilgard's GLUT library is available
 | 
			
		||||
<a href="ftp://ftp.freedesktop.org/pub/mesa/glut/">here</a>
 | 
			
		||||
<a href="ftp://ftp.freedesktop.org/pub/mesa/glut/" target="_parent">here</a>
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
The Mesa demos collection is available
 | 
			
		||||
<a href="ftp://ftp.freedesktop.org/pub/mesa/demos/">here</a>
 | 
			
		||||
<a href="ftp://ftp.freedesktop.org/pub/mesa/demos/" target="_parent">here</a>
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
In the past, GLUT, GLU and the Mesa demos were released in conjunction with
 | 
			
		||||
Mesa releases.  But since GLUT, GLU and the demos change infrequently, they
 | 
			
		||||
were split off into their own git repositories:
 | 
			
		||||
 | 
			
		||||
<a href="http://cgit.freedesktop.org/mesa/glut/">GLUT</a>,
 | 
			
		||||
<a href="http://cgit.freedesktop.org/mesa/glu/">GLU</a> and
 | 
			
		||||
<a href="http://cgit.freedesktop.org/mesa/demos/">Demos</a>,
 | 
			
		||||
In the past, GLUT and the Mesa demos were released in conjunction with
 | 
			
		||||
Mesa releases.  But since GLUT and the demos change infrequently, they
 | 
			
		||||
were split off some time ago.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
</body>
 | 
			
		||||
</html>
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										144
									
								
								docs/egl.html
									
									
									
									
									
								
							
							
						
						
									
										144
									
								
								docs/egl.html
									
									
									
									
									
								
							@@ -7,18 +7,11 @@
 | 
			
		||||
</head>
 | 
			
		||||
<body>
 | 
			
		||||
 | 
			
		||||
<div class="header">
 | 
			
		||||
  <h1>The Mesa 3D Graphics Library</h1>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<iframe src="contents.html"></iframe>
 | 
			
		||||
<div class="content">
 | 
			
		||||
 | 
			
		||||
<h1>Mesa EGL</h1>
 | 
			
		||||
 | 
			
		||||
<p>The current version of EGL in Mesa implements EGL 1.4.  More information
 | 
			
		||||
about EGL can be found at
 | 
			
		||||
<a href="http://www.khronos.org/egl/">
 | 
			
		||||
<a href="http://www.khronos.org/egl/" target="_parent">
 | 
			
		||||
http://www.khronos.org/egl/</a>.</p>
 | 
			
		||||
 | 
			
		||||
<p>The Mesa's implementation of EGL uses a driver architecture.  The main
 | 
			
		||||
@@ -60,62 +53,65 @@ or more EGL drivers.</p>
 | 
			
		||||
<p>There are several options that control the build of EGL at configuration
 | 
			
		||||
time</p>
 | 
			
		||||
 | 
			
		||||
<dl>
 | 
			
		||||
<dt><code>--enable-egl</code></dt>
 | 
			
		||||
<dd>
 | 
			
		||||
<ul>
 | 
			
		||||
<li><code>--enable-egl</code>
 | 
			
		||||
 | 
			
		||||
<p>By default, EGL is enabled.  When disabled, the main library and the drivers
 | 
			
		||||
will not be built.</p>
 | 
			
		||||
 | 
			
		||||
</dd>
 | 
			
		||||
</li>
 | 
			
		||||
 | 
			
		||||
<dt><code>--with-egl-driver-dir</code></dt>
 | 
			
		||||
<dd>
 | 
			
		||||
<li><code>--with-egl-driver-dir</code>
 | 
			
		||||
 | 
			
		||||
<p>The directory EGL drivers should be installed to.  If not specified, EGL
 | 
			
		||||
drivers will be installed to <code>${libdir}/egl</code>.</p>
 | 
			
		||||
 | 
			
		||||
</dd>
 | 
			
		||||
</li>
 | 
			
		||||
 | 
			
		||||
<dt><code>--with-egl-platforms</code></dt>
 | 
			
		||||
<dd>
 | 
			
		||||
<li><code>--enable-gallium-egl</code>
 | 
			
		||||
 | 
			
		||||
<p>Enable the optional <code>egl_gallium</code> driver.</p>
 | 
			
		||||
 | 
			
		||||
</li>
 | 
			
		||||
 | 
			
		||||
<li><code>--with-egl-platforms</code>
 | 
			
		||||
 | 
			
		||||
<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>surfaceless</code>, <code>android</code>,
 | 
			
		||||
and <code>haiku</code>.  The <code>android</code> platform
 | 
			
		||||
can only be built as a system component, part of AOSP, while the
 | 
			
		||||
<code>haiku</code> platform 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>
 | 
			
		||||
</li>
 | 
			
		||||
 | 
			
		||||
<dt><code>--enable-gles1</code></dt>
 | 
			
		||||
<dt><code>--enable-gles2</code></dt>
 | 
			
		||||
<dd>
 | 
			
		||||
<li><code>--enable-gles1</code> and <code>--enable-gles2</code>
 | 
			
		||||
 | 
			
		||||
<p>These options enable OpenGL ES support in OpenGL.  The result is one big
 | 
			
		||||
internal library that supports multiple APIs.</p>
 | 
			
		||||
 | 
			
		||||
</dd>
 | 
			
		||||
</li>
 | 
			
		||||
 | 
			
		||||
<dt><code>--enable-shared-glapi</code></dt>
 | 
			
		||||
<dd>
 | 
			
		||||
<li><code>--enable-shared-glapi</code>
 | 
			
		||||
 | 
			
		||||
<p>By default, <code>libGL</code> has its own copy of <code>libglapi</code>.
 | 
			
		||||
This options makes <code>libGL</code> use the shared <code>libglapi</code>.  This
 | 
			
		||||
is required if applications mix OpenGL and OpenGL ES.</p>
 | 
			
		||||
 | 
			
		||||
</dd>
 | 
			
		||||
</li>
 | 
			
		||||
 | 
			
		||||
</dl>
 | 
			
		||||
<li><code>--enable-openvg</code>
 | 
			
		||||
 | 
			
		||||
<p>OpenVG must be explicitly enabled by this option.</p>
 | 
			
		||||
 | 
			
		||||
</li>
 | 
			
		||||
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<h2>Use EGL</h2>
 | 
			
		||||
 | 
			
		||||
@@ -129,9 +125,8 @@ mesa/demos repository.</p>
 | 
			
		||||
<p>There are several environment variables that control the behavior of EGL at
 | 
			
		||||
runtime</p>
 | 
			
		||||
 | 
			
		||||
<dl>
 | 
			
		||||
<dt><code>EGL_DRIVERS_PATH</code></dt>
 | 
			
		||||
<dd>
 | 
			
		||||
<ul>
 | 
			
		||||
<li><code>EGL_DRIVERS_PATH</code>
 | 
			
		||||
 | 
			
		||||
<p>By default, the main library will look for drivers in the directory where
 | 
			
		||||
the drivers are installed to.  This variable specifies a list of
 | 
			
		||||
@@ -149,20 +144,18 @@ may set</p>
 | 
			
		||||
 | 
			
		||||
<p>to test a build without installation</p>
 | 
			
		||||
 | 
			
		||||
</dd>
 | 
			
		||||
</li>
 | 
			
		||||
 | 
			
		||||
<dt><code>EGL_DRIVER</code></dt>
 | 
			
		||||
<dd>
 | 
			
		||||
<li><code>EGL_DRIVER</code>
 | 
			
		||||
 | 
			
		||||
<p>This variable specifies a full path to or the name of an EGL driver.  It
 | 
			
		||||
forces the specified EGL driver to be loaded.  It comes in handy when one wants
 | 
			
		||||
to test a specific driver.  This variable is ignored for setuid/setgid
 | 
			
		||||
binaries.</p>
 | 
			
		||||
 | 
			
		||||
</dd>
 | 
			
		||||
</li>
 | 
			
		||||
 | 
			
		||||
<dt><code>EGL_PLATFORM</code></dt>
 | 
			
		||||
<dd>
 | 
			
		||||
<li><code>EGL_PLATFORM</code>
 | 
			
		||||
 | 
			
		||||
<p>This variable specifies the native platform.  The valid values are the same
 | 
			
		||||
as those for <code>--with-egl-platforms</code>.  When the variable is not set,
 | 
			
		||||
@@ -174,23 +167,28 @@ create displays for non-native platforms.  These extensions are usually used by
 | 
			
		||||
applications that support non-native platforms.  Setting this variable is
 | 
			
		||||
probably required only for some of the demos found in mesa/demo repository.</p>
 | 
			
		||||
 | 
			
		||||
</dd>
 | 
			
		||||
</li>
 | 
			
		||||
 | 
			
		||||
<dt><code>EGL_LOG_LEVEL</code></dt>
 | 
			
		||||
<dd>
 | 
			
		||||
<li><code>EGL_LOG_LEVEL</code>
 | 
			
		||||
 | 
			
		||||
<p>This changes the log level of the main library and the drivers.  The valid
 | 
			
		||||
values are: <code>debug</code>, <code>info</code>, <code>warning</code>, and
 | 
			
		||||
<code>fatal</code>.</p>
 | 
			
		||||
 | 
			
		||||
</dd>
 | 
			
		||||
</dl>
 | 
			
		||||
</li>
 | 
			
		||||
 | 
			
		||||
<li><code>EGL_SOFTWARE</code>
 | 
			
		||||
 | 
			
		||||
<p>For drivers that support both hardware and software rendering, setting this
 | 
			
		||||
variable to true forces the use of software rendering.</p>
 | 
			
		||||
 | 
			
		||||
</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<h2>EGL Drivers</h2>
 | 
			
		||||
 | 
			
		||||
<dl>
 | 
			
		||||
<dt><code>egl_dri2</code></dt>
 | 
			
		||||
<dd>
 | 
			
		||||
<ul>
 | 
			
		||||
<li><code>egl_dri2</code>
 | 
			
		||||
 | 
			
		||||
<p>This driver supports both <code>x11</code> and <code>drm</code> platforms.
 | 
			
		||||
It functions as a DRI driver loader.  For <code>x11</code> support, it talks to
 | 
			
		||||
@@ -198,17 +196,52 @@ the X server directly using (XCB-)DRI2 protocol.</p>
 | 
			
		||||
 | 
			
		||||
<p>This driver can share DRI drivers with <code>libGL</code>.</p>
 | 
			
		||||
 | 
			
		||||
</dd>
 | 
			
		||||
</li>
 | 
			
		||||
 | 
			
		||||
<li><code>egl_gallium</code>
 | 
			
		||||
 | 
			
		||||
<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>
 | 
			
		||||
 | 
			
		||||
</li>
 | 
			
		||||
 | 
			
		||||
<li><code>egl_glx</code>
 | 
			
		||||
 | 
			
		||||
<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>
 | 
			
		||||
</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<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 +250,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
 | 
			
		||||
@@ -284,6 +317,5 @@ not be called with the sample display at the same time.  If a driver has access
 | 
			
		||||
to an <code>EGLDisplay</code> without going through the EGL APIs, the driver
 | 
			
		||||
should as well lock the display before using it.
 | 
			
		||||
 | 
			
		||||
</div>
 | 
			
		||||
</body>
 | 
			
		||||
</html>
 | 
			
		||||
 
 | 
			
		||||
@@ -7,13 +7,6 @@
 | 
			
		||||
</head>
 | 
			
		||||
<body>
 | 
			
		||||
 | 
			
		||||
<div class="header">
 | 
			
		||||
  <h1>The Mesa 3D Graphics Library</h1>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<iframe src="contents.html"></iframe>
 | 
			
		||||
<div class="content">
 | 
			
		||||
 | 
			
		||||
<h1>Environment Variables</h1>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
@@ -32,9 +25,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 +38,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.
 | 
			
		||||
@@ -72,25 +62,9 @@ If the extension string is too long, the buffer overrun can cause the game
 | 
			
		||||
to crash.
 | 
			
		||||
This is a work-around for that.
 | 
			
		||||
<li>MESA_GL_VERSION_OVERRIDE - changes the value returned by
 | 
			
		||||
glGetString(GL_VERSION) and possibly the GL API type.
 | 
			
		||||
<ul>
 | 
			
		||||
<li> The format should be MAJOR.MINOR[FC]
 | 
			
		||||
<li> FC is an optional suffix that indicates a forward compatible context.
 | 
			
		||||
This is only valid for versions >= 3.0.
 | 
			
		||||
<li> GL versions < 3.0 are set to a compatibility (non-Core) profile
 | 
			
		||||
<li> GL versions = 3.0, see below
 | 
			
		||||
<li> GL versions > 3.0 are set to a Core profile
 | 
			
		||||
<li> Examples: 2.1, 3.0, 3.0FC, 3.1, 3.1FC
 | 
			
		||||
<ul>
 | 
			
		||||
<li> 2.1 - select a compatibility (non-Core) profile with GL version 2.1
 | 
			
		||||
<li> 3.0 - select a compatibility (non-Core) profile with GL version 3.0
 | 
			
		||||
<li> 3.0FC - select a Core+Forward Compatible profile with GL version 3.0
 | 
			
		||||
<li> 3.1 - select a Core profile with GL version 3.1
 | 
			
		||||
<li> 3.1FC - select a Core+Forward Compatible profile with GL version 3.1
 | 
			
		||||
</ul>
 | 
			
		||||
<li> Mesa may not really implement all the features of the given version.
 | 
			
		||||
(for developers only)
 | 
			
		||||
</ul>
 | 
			
		||||
glGetString(GL_VERSION). Valid values are point-separated version numbers,
 | 
			
		||||
such as "3.0". Mesa will not really implement all the features of the given
 | 
			
		||||
version if it's higher than what's normally reported.
 | 
			
		||||
<li>MESA_GLSL_VERSION_OVERRIDE - changes the value returned by
 | 
			
		||||
glGetString(GL_SHADING_LANGUAGE_VERSION). Valid values are integers, such as
 | 
			
		||||
"130".  Mesa will not really implement all the features of the given language version
 | 
			
		||||
@@ -122,39 +96,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>
 | 
			
		||||
   <li>optimizer - dump shader assembly to files at each optimization pass and iteration that make progress</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>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -176,21 +121,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_HUD_PERIOD - sets the hud update rate in seconds (float). Use zero
 | 
			
		||||
    to update every frame. The default period is 1/2 second.
 | 
			
		||||
<li>GALLIUM_HUD_VISIBLE - control default visibility, defaults to true.
 | 
			
		||||
<li>GALLIUM_HUD_TOGGLE_SIGNAL - toggle visibility via user specified signal.
 | 
			
		||||
    Especially useful to toggle hud at specific points of application and
 | 
			
		||||
    disable for unencumbered viewing the rest of the time. For example, set
 | 
			
		||||
    GALLIUM_HUD_VISIBLE to false and GALLIUM_HUD_SIGNAL_TOGGLE to 10 (SIGUSR1).
 | 
			
		||||
    Use kill -10 <pid> to toggle the hud as desired.
 | 
			
		||||
<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.
 | 
			
		||||
@@ -198,9 +136,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>
 | 
			
		||||
@@ -211,14 +146,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.
 | 
			
		||||
@@ -227,28 +162,11 @@ 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>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h3>VA-API state tracker environment variables</h3>
 | 
			
		||||
<ul>
 | 
			
		||||
<li>VAAPI_MPEG4_ENABLED - enable MPEG4 for VA-API, disabled by default.
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Other Gallium drivers have their own environment variables.  These may change
 | 
			
		||||
frequently so the source code should be consulted for details.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
</div>
 | 
			
		||||
</body>
 | 
			
		||||
</html>
 | 
			
		||||
 
 | 
			
		||||
@@ -7,13 +7,6 @@
 | 
			
		||||
</head>
 | 
			
		||||
<body>
 | 
			
		||||
 | 
			
		||||
<div class="header">
 | 
			
		||||
  <h1>The Mesa 3D Graphics Library</h1>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<iframe src="contents.html"></iframe>
 | 
			
		||||
<div class="content">
 | 
			
		||||
 | 
			
		||||
<h1>Mesa Extensions</h1>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
@@ -23,29 +16,20 @@ 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>
 | 
			
		||||
</body>
 | 
			
		||||
</html>
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										141
									
								
								docs/faq.html
									
									
									
									
									
								
							
							
						
						
									
										141
									
								
								docs/faq.html
									
									
									
									
									
								
							@@ -7,16 +7,9 @@
 | 
			
		||||
</head>
 | 
			
		||||
<body>
 | 
			
		||||
 | 
			
		||||
<div class="header">
 | 
			
		||||
  <h1>The Mesa 3D Graphics Library</h1>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
<iframe src="contents.html"></iframe>
 | 
			
		||||
<div class="content">
 | 
			
		||||
 | 
			
		||||
<center>
 | 
			
		||||
<h1>Mesa Frequently Asked Questions</h1>
 | 
			
		||||
Last updated: 9 October 2012
 | 
			
		||||
Last updated: 21 August 2006
 | 
			
		||||
</center>
 | 
			
		||||
 | 
			
		||||
<br>
 | 
			
		||||
@@ -45,25 +38,21 @@ See the <a href="http://www.opengl.org/">OpenGL website</a> for more
 | 
			
		||||
information.
 | 
			
		||||
</p>
 | 
			
		||||
<p>
 | 
			
		||||
Mesa 9.x supports the OpenGL 3.1 specification.
 | 
			
		||||
Mesa 6.x supports the OpenGL 1.5 specification.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>1.2 Does Mesa support/use graphics hardware?</h2>
 | 
			
		||||
<p>
 | 
			
		||||
Yes.  Specifically, Mesa serves as the OpenGL core for the open-source DRI
 | 
			
		||||
drivers for X.org.
 | 
			
		||||
drivers for XFree86/X.org.  See the <a href="http://dri.freedesktop.org/">DRI
 | 
			
		||||
website</a> for more information.
 | 
			
		||||
</p>
 | 
			
		||||
<p>
 | 
			
		||||
There have been other hardware drivers for Mesa over the years (such as
 | 
			
		||||
the 3Dfx Glide/Voodoo driver, an old S3 driver, etc) but the DRI drivers
 | 
			
		||||
are the modern ones.
 | 
			
		||||
</p>
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>See the <a href="http://dri.freedesktop.org/">DRI website</a>
 | 
			
		||||
  for more information.</li>
 | 
			
		||||
  <li>See <a href="http://intellinuxgraphics.org">intellinuxgraphics.org</a>
 | 
			
		||||
  for more information about Intel drivers.</li>
 | 
			
		||||
  <li>See <a href="http://nouveau.freedesktop.org">nouveau.freedesktop.org</a>
 | 
			
		||||
  for more information about Nouveau drivers.</li>
 | 
			
		||||
  <li>See <a href="http://www.x.org/wiki/RadeonFeature">www.x.org/wiki/RadeonFeature</a>
 | 
			
		||||
  for more information about Radeon drivers.</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<h2>1.3 What purpose does Mesa serve today?</h2>
 | 
			
		||||
<p>
 | 
			
		||||
@@ -72,7 +61,7 @@ operating systems today.
 | 
			
		||||
Still, Mesa serves at least these purposes:
 | 
			
		||||
</p>
 | 
			
		||||
<ul>
 | 
			
		||||
<li>Mesa is used as the core of the open-source X.org DRI
 | 
			
		||||
<li>Mesa is used as the core of the open-source XFree86/X.org DRI
 | 
			
		||||
    hardware drivers.
 | 
			
		||||
</li>
 | 
			
		||||
<li>Mesa is quite portable and allows OpenGL to be used on systems
 | 
			
		||||
@@ -94,7 +83,7 @@ Still, Mesa serves at least these purposes:
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>1.4 What's the difference between "Stand-Alone" Mesa and the DRI drivers?</h2>
 | 
			
		||||
<h2>1.4 What's the difference between"Stand-Alone" Mesa and the DRI drivers?</h2>
 | 
			
		||||
<p>
 | 
			
		||||
<em>Stand-alone Mesa</em> is the original incarnation of Mesa.
 | 
			
		||||
On systems running the X Window System it does all its rendering through
 | 
			
		||||
@@ -136,41 +125,43 @@ 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.
 | 
			
		||||
Yes, SGI's <a href="http://oss.sgi.com/projects/ogl-sample/index.html"
 | 
			
		||||
target="_parent">
 | 
			
		||||
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.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
<a href="http://sourceforge.net/projects/ogl-es/">Vincent</a> is
 | 
			
		||||
<a href="http://ogl-es.sourceforge.net" target="_parent">Vincent</a> is
 | 
			
		||||
an open-source implementation of OpenGL ES for mobile devices.
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
<a href="http://www.dsbox.com/minigl.html">miniGL</a>
 | 
			
		||||
<a href="http://www.dsbox.com/minigl.html" target="_parent">miniGL</a>
 | 
			
		||||
is a subset of OpenGL for PalmOS devices.
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
<a href="http://bellard.org/TinyGL/">TinyGL</a>
 | 
			
		||||
is a subset of OpenGL.
 | 
			
		||||
<a href="http://fabrice.bellard.free.fr/TinyGL/"
 | 
			
		||||
target="_parent">TinyGL</a> is a subset of OpenGL.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
<a href="http://sourceforge.net/projects/softgl/">SoftGL</a>
 | 
			
		||||
<a href="http://softgl.studierstube.org/" target="_parent">SoftGL</a>
 | 
			
		||||
is an OpenGL subset for mobile devices.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
<a href="http://chromium.sourceforge.net/">Chromium</a>
 | 
			
		||||
<a href="http://chromium.sourceforge.net/" target="_parent">Chromium</a>
 | 
			
		||||
isn't a conventional OpenGL implementation (it's layered upon OpenGL),
 | 
			
		||||
but it does export the OpenGL API.  It allows tiled rendering, sort-last
 | 
			
		||||
rendering, etc.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
<a href="http://www.ticalc.org/archives/files/fileinfo/361/36173.html">ClosedGL</a>
 | 
			
		||||
is an OpenGL subset library for TI graphing calculators.
 | 
			
		||||
<a href="http://www.ticalc.org/archives/files/fileinfo/361/36173.html"
 | 
			
		||||
target="_parent">ClosedGL</a> is an OpenGL subset library for TI
 | 
			
		||||
graphing calculators.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
@@ -220,7 +211,8 @@ GLw (OpenGL widget library) is now available from a separate <a href="http://cgi
 | 
			
		||||
<h2>2.5 What's the proper place for the libraries and headers?</h2>
 | 
			
		||||
<p>
 | 
			
		||||
On Linux-based systems you'll want to follow the
 | 
			
		||||
<a href="http://oss.sgi.com/projects/ogl-sample/ABI/index.html">Linux ABI</a> standard.
 | 
			
		||||
<a href="http://oss.sgi.com/projects/ogl-sample/ABI/index.html"
 | 
			
		||||
target="_parent">Linux ABI</a> standard.
 | 
			
		||||
Basically you'll want the following:
 | 
			
		||||
</p>
 | 
			
		||||
<ul>
 | 
			
		||||
@@ -234,24 +226,21 @@ Basically you'll want the following:
 | 
			
		||||
</li><li>/usr/lib/libGL.so.1 - a symlink to libGL.so.1.xyz
 | 
			
		||||
</li><li>/usr/lib/libGL.so.xyz - the actual OpenGL/Mesa library.  xyz denotes the
 | 
			
		||||
Mesa version number.
 | 
			
		||||
</li><li>/usr/lib/libGLU.so - a symlink to libGLU.so.1
 | 
			
		||||
</li><li>/usr/lib/libGLU.so.1 - a symlink to libGLU.so.1.3.xyz
 | 
			
		||||
</li><li>/usr/lib/libGLU.so.xyz - the OpenGL Utility library.  xyz denotes the Mesa
 | 
			
		||||
version number.
 | 
			
		||||
</li></ul>
 | 
			
		||||
<p>
 | 
			
		||||
When configuring Mesa, there are three autoconf options that affect the install
 | 
			
		||||
location that you should take care with: <code>--prefix</code>,
 | 
			
		||||
<code>--libdir</code>, and <code>--with-dri-driverdir</code>. To install Mesa
 | 
			
		||||
into the system location where it will be available for all programs to use, set
 | 
			
		||||
<code>--prefix=/usr</code>. Set <code>--libdir</code> to where your Linux
 | 
			
		||||
distribution installs system libraries, usually either <code>/usr/lib</code> or
 | 
			
		||||
<code>/usr/lib64</code>. Set <code>--with-dri-driverdir</code> to the directory
 | 
			
		||||
where your Linux distribution installs DRI drivers. To find your system's DRI
 | 
			
		||||
driver directory, try executing <code>find /usr -type d -name dri</code>. For
 | 
			
		||||
example, if the <code>find</code> command listed <code>/usr/lib64/dri</code>,
 | 
			
		||||
then set <code>--with-dri-driverdir=/usr/lib64/dri</code>.
 | 
			
		||||
After installing XFree86/X.org and the DRI drivers, some of these files
 | 
			
		||||
may be symlinks into the /usr/X11R6/ tree.
 | 
			
		||||
</p>
 | 
			
		||||
<p>
 | 
			
		||||
After determining the correct values for the install location, configure Mesa
 | 
			
		||||
with <code>./configure --prefix=/usr --libdir=xxx --with-dri-driverdir=xxx</code>
 | 
			
		||||
and then install with <code>sudo make install</code>.
 | 
			
		||||
The old-style Makefile system doesn't install the Mesa libraries; it's
 | 
			
		||||
up to you to copy them (and the headers) to the right place.
 | 
			
		||||
</p>
 | 
			
		||||
<p>
 | 
			
		||||
The GLUT header and library should go in the same directories.
 | 
			
		||||
</p>
 | 
			
		||||
<br>
 | 
			
		||||
<br>
 | 
			
		||||
@@ -261,22 +250,24 @@ and then install with <code>sudo make install</code>.
 | 
			
		||||
 | 
			
		||||
<h2>3.1 Rendering is slow / why isn't my graphics hardware being used?</h2>
 | 
			
		||||
<p>
 | 
			
		||||
If Mesa can't use its hardware accelerated drivers it falls back on one of its software renderers.
 | 
			
		||||
(eg. classic swrast, softpipe or llvmpipe)
 | 
			
		||||
Stand-alone Mesa (downloaded as MesaLib-x.y.z.tar.gz) doesn't have any
 | 
			
		||||
support for hardware acceleration (with the exception of the 3DFX Voodoo
 | 
			
		||||
driver).
 | 
			
		||||
</p>
 | 
			
		||||
<p>
 | 
			
		||||
What you really want is a DRI or NVIDIA (or another vendor's OpenGL) driver
 | 
			
		||||
for your particular hardware.
 | 
			
		||||
</p>
 | 
			
		||||
<p>
 | 
			
		||||
You can run the <code>glxinfo</code> program to learn about your OpenGL
 | 
			
		||||
library.
 | 
			
		||||
Look for the <code>OpenGL vendor</code> and <code>OpenGL renderer</code> values.
 | 
			
		||||
That will identify who's OpenGL library with which driver you're using and what sort of
 | 
			
		||||
Look for the GL_VENDOR and GL_RENDERER values.
 | 
			
		||||
That will identify who's OpenGL library you're using and what sort of
 | 
			
		||||
hardware it has detected.
 | 
			
		||||
</p>
 | 
			
		||||
<p>
 | 
			
		||||
If you're using a hardware accelerated driver you want <code>direct rendering: Yes</code>.
 | 
			
		||||
</p>
 | 
			
		||||
<p>
 | 
			
		||||
If your DRI-based driver isn't working, go to the
 | 
			
		||||
<a href="http://dri.freedesktop.org/">DRI website</a> for trouble-shooting information.
 | 
			
		||||
<a href="http://dri.sf.net/" target="_parent">DRI website</a> for trouble-shooting information.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -284,8 +275,8 @@ If your DRI-based driver isn't working, go to the
 | 
			
		||||
<p>
 | 
			
		||||
Make sure the ratio of the far to near clipping planes isn't too great.
 | 
			
		||||
Look
 | 
			
		||||
<a href="http://www.opengl.org/resources/faq/technical/depthbuffer.htm#0040">here</a>
 | 
			
		||||
for details.
 | 
			
		||||
<a href="http://www.opengl.org/resources/faq/technical/depthbuffer.htm#0040"
 | 
			
		||||
target="_parent"> here</a> for details.
 | 
			
		||||
</p>
 | 
			
		||||
<p>
 | 
			
		||||
Mesa uses a 16-bit depth buffer by default which is smaller and faster
 | 
			
		||||
@@ -327,6 +318,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>
 | 
			
		||||
 | 
			
		||||
@@ -335,12 +339,13 @@ will fix the problem.
 | 
			
		||||
 | 
			
		||||
<h2>4.1 How can I contribute?</h2>
 | 
			
		||||
<p>
 | 
			
		||||
First, join the <a href="lists.html">mesa-dev mailing list</a>.
 | 
			
		||||
First, join the <a href="http://www.mesa3d.org/lists.html">Mesa3d-dev
 | 
			
		||||
mailing list</a>.
 | 
			
		||||
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.
 | 
			
		||||
The <a href="http://www.opengl.org/documentation" target="_parent">
 | 
			
		||||
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
 | 
			
		||||
@@ -357,12 +362,12 @@ target hardware/operating system.
 | 
			
		||||
<p>
 | 
			
		||||
The best way to get started is to use an existing driver as your starting
 | 
			
		||||
point.
 | 
			
		||||
For a classic hardware driver, the i965 driver is a good example.
 | 
			
		||||
For a Gallium3D hardware driver, the r300g, r600g and the i915g are good examples.
 | 
			
		||||
For a software driver, the X11 and OSMesa drivers are good examples.
 | 
			
		||||
For a hardware driver, the Radeon and R200 DRI drivers are good examples.
 | 
			
		||||
</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>
 | 
			
		||||
@@ -373,20 +378,20 @@ the archives) is a good way to get information.
 | 
			
		||||
 | 
			
		||||
<h2>4.3 Why isn't GL_EXT_texture_compression_s3tc implemented in Mesa?</h2>
 | 
			
		||||
<p>
 | 
			
		||||
The <a href="http://oss.sgi.com/projects/ogl-sample/registry/EXT/texture_compression_s3tc.txt">specification for the extension</a>
 | 
			
		||||
The <a href="http://oss.sgi.com/projects/ogl-sample/registry/EXT/texture_compression_s3tc.txt" target="_parent">specification for the extension</a>
 | 
			
		||||
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).
 | 
			
		||||
</p>
 | 
			
		||||
<p>
 | 
			
		||||
In the mean time, a 3rd party <a href="http://dri.freedesktop.org/wiki/S3TC">
 | 
			
		||||
plug-in library</a> is available.
 | 
			
		||||
In the mean time, a 3rd party <a href=
 | 
			
		||||
"http://dri.freedesktop.org/wiki/S3TC"
 | 
			
		||||
target="_parent">plug-in library</a> is available.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
</div>
 | 
			
		||||
</body>
 | 
			
		||||
</html>
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										64
									
								
								docs/games.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										64
									
								
								docs/games.html
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,64 @@
 | 
			
		||||
<!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>Games</title>
 | 
			
		||||
  <link rel="stylesheet" type="text/css" href="mesa.css">
 | 
			
		||||
</head>
 | 
			
		||||
<body>
 | 
			
		||||
 | 
			
		||||
<h1>Games</h1>
 | 
			
		||||
 | 
			
		||||
<ul>
 | 
			
		||||
	<li><a href="http://www.psc.edu/%7Esmp/a3d/">Asteroids3D</a> - 3D asteroids game
 | 
			
		||||
	</li><li><a href="http://evlweb.eecs.uic.edu/aej/AndyBattalion.html" target="_parent">Battalion</a>
 | 
			
		||||
	- battle game
 | 
			
		||||
	</li><li><a href="http://bzflag.sourceforge.net/" target="_parent">BZFLAG</a> - 3-D tank
 | 
			
		||||
	battle game
 | 
			
		||||
	</li><li><a href="http://www.speakeasy.org/%7Emorse/copter-commander" target="_parent">Copter Commander</a> - 2d multiplayer side scroller
 | 
			
		||||
	</li><li><a href="http://www.crystalspace.org/" target="_parent">CrystalSpace</a> - Free
 | 
			
		||||
	3d game engine
 | 
			
		||||
	</li><li><a href="http://www.afn.org/%7Ecthugha/" target="_parent">Cthugha</a> - music-sync'ed
 | 
			
		||||
	graphical effects
 | 
			
		||||
	</li><li><a href="http://www.sics.se/dive/" target="_parent">DIVE</a> - Distributed Interactive
 | 
			
		||||
	Virtual Environment
 | 
			
		||||
	</li><li><a href="http://www.newdoom.com/doomlegacy/" target="_parent">Doom Legacy</a>
 | 
			
		||||
	- an OpenGL port of id software's popular game, Doom
 | 
			
		||||
	</li><li><a href="http://www.asimov.de/intern_dropit.html" target="_parent">DropIt</a> - 3-D tetris game
 | 
			
		||||
	</li><li><a href="http://www.flightgear.org/" target="_parent">Flight Gear</a> - Flight
 | 
			
		||||
	simulator
 | 
			
		||||
	</li><li><a href="http://freetrek.linuxgames.com/" target="_parent">Free Trek</a> - Star
 | 
			
		||||
	Trek battle simulator
 | 
			
		||||
	</li><li><a href="http://glchess.sourceforge.net/" target="_parent">GLChess</a> - chess game
 | 
			
		||||
	</li><li><a href="http://heretic.linuxgames.com/" target="_parent">GLHeretic</a> - Heretic
 | 
			
		||||
	for Linux
 | 
			
		||||
	</li><li><a href="http://glider3d.free.fr/" target="_parent">Glider3D</a> - flight simulator
 | 
			
		||||
	</li><li><a href="http://www.gltron.org/" target="_parent">glTron</a> - Tron lightcycles
 | 
			
		||||
	game
 | 
			
		||||
	</li><li><a href="http://gracer.sourceforge.net/" target="_parent">GRacer</a> - 3D Motor
 | 
			
		||||
	Sports Simulator
 | 
			
		||||
	</li><li><a href="http://jongl.home.pages.de/" target="_parent">JONGL</a> - Juggling simulator
 | 
			
		||||
	</li><li><a href="http://samba.anu.edu.au/KnightCap/" target="_parent">KnightCap</a> -
 | 
			
		||||
	chess game
 | 
			
		||||
	</li><li><a href="http://www.hackcraft.de/games/linwarrior_3d/" target="_parent">LinWarrior 3D</a> - A Battle Mech Simulator
 | 
			
		||||
	</li><li><a href="http://www.nada.kth.se/%7Ef96-lfo/lunar/" target="_parent">Lunar Lander
 | 
			
		||||
	2000</a> - 3D version of the classis lunar lander game
 | 
			
		||||
	</li><li><a href="http://www.majik3d.org/" target="_parent">Majik 3D</a> - an online role-playing
 | 
			
		||||
	world
 | 
			
		||||
	</li><li><a href="http://www.pobox.com/%7Eshankel/opentrek.html" target="_parent">OpenTrek</a>
 | 
			
		||||
	- Super Star Trek
 | 
			
		||||
	</li><li><a href="http://www.idsoftware.com/" target="_parent">Quake(2,3)</a> - the popular
 | 
			
		||||
	games from id software
 | 
			
		||||
	</li><li><a href="http://torcs.free.fr/indexm.html" target="_parent">TORCS</a> - car racing
 | 
			
		||||
	simulator
 | 
			
		||||
	</li><li><a href="http://www.woodsoup.org/projs/tux_aqfh" target="_parent">TUX-AQFH</a>
 | 
			
		||||
	- Tux the Penguin - a Quest for Herring
 | 
			
		||||
	</li><li><a href="http://mordred.8m.com/voidrunner/" target="_parent">Void Runner</a>
 | 
			
		||||
	- freeware arcade style game
 | 
			
		||||
	</li><li><a href="http://xracer.annexia.org/" target="_parent">XRacer</a> - Free spaceship
 | 
			
		||||
	racing game, similar to Wipeout
 | 
			
		||||
	</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
</body>
 | 
			
		||||
</html>
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								docs/gears.png
									
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								docs/gears.png
									
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 1.6 KiB  | 
							
								
								
									
										46
									
								
								docs/glu.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								docs/glu.html
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,46 @@
 | 
			
		||||
<!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>SGI GLU</title>
 | 
			
		||||
  <link rel="stylesheet" type="text/css" href="mesa.css">
 | 
			
		||||
</head>
 | 
			
		||||
<body>
 | 
			
		||||
 | 
			
		||||
<h1>SGI SI GLU</h1>
 | 
			
		||||
 | 
			
		||||
(Silicon Graphics, Inc. Sample Implementation of the OpenGL Utility library)
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
SGI open-sourced their OpenGL Sample Implementation (SI) in January, 2000.
 | 
			
		||||
This includes the GLU library.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
The SI GLU library implements GLU version 1.3 whereas the original
 | 
			
		||||
Mesa GLU library only implemented version 1.2.
 | 
			
		||||
We recommend using the SI GLU library instead of Mesa's GLU library
 | 
			
		||||
since it's more up-to-date, complete and reliable.
 | 
			
		||||
We're no longer developing the original Mesa GLU library.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
The SI GLU library code is included in the Mesa distribution.
 | 
			
		||||
You don't have to download it separately.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
<b>Olivier Michel</b> has made Linux RPMs of GLU for i386 and PowerPC.
 | 
			
		||||
You can download them from the
 | 
			
		||||
<a href="http://www.sourceforge.net/project/showfiles.php?group_id=3"
 | 
			
		||||
target="_parent">download area</a> under <b>Miscellaneous</b>.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Visit the <a href="http://oss.sgi.com/projects/ogl-sample/" target="_parent">
 | 
			
		||||
OpenGL Sample Implementation home page</a> for more information about the SI.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
</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