Compare commits
	
		
			1 Commits
		
	
	
		
			7.11-branc
			...
			mesa_7_6_1
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					42d9409873 | 
							
								
								
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@@ -4,7 +4,6 @@
 | 
			
		||||
*.ilk
 | 
			
		||||
*.o
 | 
			
		||||
*.obj
 | 
			
		||||
*.os
 | 
			
		||||
*.pc
 | 
			
		||||
*.pdb
 | 
			
		||||
*.pyc
 | 
			
		||||
@@ -25,4 +24,3 @@ cscope*
 | 
			
		||||
.scon*
 | 
			
		||||
config.py
 | 
			
		||||
build
 | 
			
		||||
.dir-locals.el
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										334
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										334
									
								
								Makefile
									
									
									
									
									
								
							@@ -2,13 +2,10 @@
 | 
			
		||||
 | 
			
		||||
TOP = .
 | 
			
		||||
 | 
			
		||||
SUBDIRS = src
 | 
			
		||||
SUBDIRS = src progs
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# The git command below generates an empty string when we're not
 | 
			
		||||
# building in a GIT tree (i.e., building from a release tarball).
 | 
			
		||||
default: $(TOP)/configs/current
 | 
			
		||||
	@$(TOP)/bin/extract_git_sha1
 | 
			
		||||
	@for dir in $(SUBDIRS) ; do \
 | 
			
		||||
		if [ -d $$dir ] ; then \
 | 
			
		||||
			(cd $$dir && $(MAKE)) || exit 1 ; \
 | 
			
		||||
@@ -51,7 +48,7 @@ install:
 | 
			
		||||
	done
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
.PHONY: default doxygen clean realclean distclean install
 | 
			
		||||
.PHONY: default doxygen clean realclean distclean install linux-directfb-install
 | 
			
		||||
 | 
			
		||||
# If there's no current configuration file
 | 
			
		||||
$(TOP)/configs/current:
 | 
			
		||||
@@ -83,6 +80,8 @@ catamount-osmesa-pgi \
 | 
			
		||||
darwin \
 | 
			
		||||
darwin-fat-32bit \
 | 
			
		||||
darwin-fat-all \
 | 
			
		||||
darwin-static \
 | 
			
		||||
darwin-static-x86ppc \
 | 
			
		||||
freebsd \
 | 
			
		||||
freebsd-dri \
 | 
			
		||||
freebsd-dri-amd64 \
 | 
			
		||||
@@ -106,12 +105,12 @@ irix6-n32-static \
 | 
			
		||||
irix6-o32 \
 | 
			
		||||
irix6-o32-static \
 | 
			
		||||
linux \
 | 
			
		||||
linux-i965 \
 | 
			
		||||
linux-alpha \
 | 
			
		||||
linux-alpha-static \
 | 
			
		||||
linux-cell \
 | 
			
		||||
linux-cell-debug \
 | 
			
		||||
linux-debug \
 | 
			
		||||
linux-directfb \
 | 
			
		||||
linux-dri \
 | 
			
		||||
linux-dri-debug \
 | 
			
		||||
linux-dri-x86 \
 | 
			
		||||
@@ -121,13 +120,12 @@ linux-dri-xcb \
 | 
			
		||||
linux-egl \
 | 
			
		||||
linux-indirect \
 | 
			
		||||
linux-fbdev \
 | 
			
		||||
linux-glide \
 | 
			
		||||
linux-ia64-icc \
 | 
			
		||||
linux-ia64-icc-static \
 | 
			
		||||
linux-icc \
 | 
			
		||||
linux-icc-static \
 | 
			
		||||
linux-llvm \
 | 
			
		||||
linux-llvm-debug \
 | 
			
		||||
linux-opengl-es \
 | 
			
		||||
linux-osmesa \
 | 
			
		||||
linux-osmesa-static \
 | 
			
		||||
linux-osmesa16 \
 | 
			
		||||
@@ -136,6 +134,9 @@ linux-osmesa32 \
 | 
			
		||||
linux-ppc \
 | 
			
		||||
linux-ppc-static \
 | 
			
		||||
linux-profile \
 | 
			
		||||
linux-solo \
 | 
			
		||||
linux-solo-x86 \
 | 
			
		||||
linux-solo-ia64 \
 | 
			
		||||
linux-sparc \
 | 
			
		||||
linux-sparc5 \
 | 
			
		||||
linux-static \
 | 
			
		||||
@@ -148,6 +149,7 @@ linux-x86-64 \
 | 
			
		||||
linux-x86-64-debug \
 | 
			
		||||
linux-x86-64-profile \
 | 
			
		||||
linux-x86-64-static \
 | 
			
		||||
linux-x86-glide \
 | 
			
		||||
linux-x86-profile \
 | 
			
		||||
linux-x86-static \
 | 
			
		||||
netbsd \
 | 
			
		||||
@@ -170,42 +172,30 @@ sunos5-v9 \
 | 
			
		||||
sunos5-v9-static \
 | 
			
		||||
sunos5-v9-cc-g++ \
 | 
			
		||||
ultrix-gcc:
 | 
			
		||||
	@ if test -f configs/current -o -L configs/current; then \
 | 
			
		||||
		if ! cmp configs/$@ configs/current > /dev/null; then \
 | 
			
		||||
			echo "Please run 'make realclean' before changing configs" ; \
 | 
			
		||||
			exit 1 ; \
 | 
			
		||||
		fi ; \
 | 
			
		||||
	else \
 | 
			
		||||
		cd configs && rm -f current && ln -s $@ current ; \
 | 
			
		||||
	@ if test -f configs/current || test -L configs/current ; then \
 | 
			
		||||
		echo "Please run 'make realclean' before changing configs" ; \
 | 
			
		||||
		exit 1 ; \
 | 
			
		||||
	fi
 | 
			
		||||
	(cd configs && rm -f current && ln -s $@ current)
 | 
			
		||||
	$(MAKE) default
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Rules for making release tarballs
 | 
			
		||||
 | 
			
		||||
VERSION=7.11-devel
 | 
			
		||||
VERSION=7.6.1
 | 
			
		||||
DIRECTORY = Mesa-$(VERSION)
 | 
			
		||||
LIB_NAME = MesaLib-$(VERSION)
 | 
			
		||||
DEMO_NAME = MesaDemos-$(VERSION)
 | 
			
		||||
GLUT_NAME = MesaGLUT-$(VERSION)
 | 
			
		||||
 | 
			
		||||
# This is part of MAIN_FILES
 | 
			
		||||
MAIN_ES_FILES = \
 | 
			
		||||
	$(DIRECTORY)/src/mesa/main/*.xml				\
 | 
			
		||||
	$(DIRECTORY)/src/mesa/main/*.py					\
 | 
			
		||||
	$(DIRECTORY)/src/mesa/main/*.dtd
 | 
			
		||||
 | 
			
		||||
MAIN_FILES = \
 | 
			
		||||
	$(DIRECTORY)/Makefile*						\
 | 
			
		||||
	$(DIRECTORY)/configure						\
 | 
			
		||||
	$(DIRECTORY)/configure.ac					\
 | 
			
		||||
	$(DIRECTORY)/acinclude.m4					\
 | 
			
		||||
	$(DIRECTORY)/aclocal.m4						\
 | 
			
		||||
	$(DIRECTORY)/SConstruct						\
 | 
			
		||||
	$(DIRECTORY)/common.py						\
 | 
			
		||||
	$(DIRECTORY)/scons/*py						\
 | 
			
		||||
	$(DIRECTORY)/bin/config.guess					\
 | 
			
		||||
	$(DIRECTORY)/bin/config.sub					\
 | 
			
		||||
	$(DIRECTORY)/bin/extract_git_sha1				\
 | 
			
		||||
	$(DIRECTORY)/bin/install-sh					\
 | 
			
		||||
	$(DIRECTORY)/bin/mklib						\
 | 
			
		||||
	$(DIRECTORY)/bin/minstall					\
 | 
			
		||||
@@ -216,6 +206,9 @@ MAIN_FILES = \
 | 
			
		||||
	$(DIRECTORY)/docs/README.*					\
 | 
			
		||||
	$(DIRECTORY)/docs/RELNOTES*					\
 | 
			
		||||
	$(DIRECTORY)/docs/*.spec					\
 | 
			
		||||
	$(DIRECTORY)/include/GL/internal/glcore.h			\
 | 
			
		||||
	$(DIRECTORY)/include/GL/dmesa.h					\
 | 
			
		||||
	$(DIRECTORY)/include/GL/ggimesa.h				\
 | 
			
		||||
	$(DIRECTORY)/include/GL/gl.h					\
 | 
			
		||||
	$(DIRECTORY)/include/GL/glext.h					\
 | 
			
		||||
	$(DIRECTORY)/include/GL/gl_mangle.h				\
 | 
			
		||||
@@ -226,43 +219,34 @@ MAIN_FILES = \
 | 
			
		||||
	$(DIRECTORY)/include/GL/glx_mangle.h				\
 | 
			
		||||
	$(DIRECTORY)/include/GL/glfbdev.h				\
 | 
			
		||||
	$(DIRECTORY)/include/GL/mesa_wgl.h				\
 | 
			
		||||
	$(DIRECTORY)/include/GL/mglmesa.h				\
 | 
			
		||||
	$(DIRECTORY)/include/GL/osmesa.h				\
 | 
			
		||||
	$(DIRECTORY)/include/GL/svgamesa.h				\
 | 
			
		||||
	$(DIRECTORY)/include/GL/vms_x_fix.h				\
 | 
			
		||||
	$(DIRECTORY)/include/GL/wglext.h				\
 | 
			
		||||
	$(DIRECTORY)/include/GL/wmesa.h					\
 | 
			
		||||
	$(DIRECTORY)/include/pci_ids/*.h				\
 | 
			
		||||
	$(DIRECTORY)/include/c99/*.h					\
 | 
			
		||||
	$(DIRECTORY)/src/getopt/SConscript				\
 | 
			
		||||
	$(DIRECTORY)/src/getopt/getopt*.[ch]				\
 | 
			
		||||
	$(DIRECTORY)/src/glsl/Makefile					\
 | 
			
		||||
	$(DIRECTORY)/src/glsl/Makefile.template				\
 | 
			
		||||
	$(DIRECTORY)/src/glsl/SConscript				\
 | 
			
		||||
	$(DIRECTORY)/src/glsl/*.[ch]					\
 | 
			
		||||
	$(DIRECTORY)/src/glsl/*.ll					\
 | 
			
		||||
	$(DIRECTORY)/src/glsl/*.yy					\
 | 
			
		||||
	$(DIRECTORY)/src/glsl/*.[cly]pp					\
 | 
			
		||||
	$(DIRECTORY)/src/glsl/README					\
 | 
			
		||||
	$(DIRECTORY)/src/glsl/glcpp/*.[chly]				\
 | 
			
		||||
	$(DIRECTORY)/src/glsl/glcpp/README				\
 | 
			
		||||
	$(DIRECTORY)/src/glsl/builtins					\
 | 
			
		||||
	$(DIRECTORY)/src/Makefile					\
 | 
			
		||||
	$(DIRECTORY)/src/SConscript					\
 | 
			
		||||
	$(DIRECTORY)/src/mesa/Makefile*					\
 | 
			
		||||
	$(DIRECTORY)/src/mesa/SConscript				\
 | 
			
		||||
	$(DIRECTORY)/src/mesa/sources.mak				\
 | 
			
		||||
	$(DIRECTORY)/src/mesa/descrip.mms				\
 | 
			
		||||
	$(DIRECTORY)/src/mesa/gl.pc.in					\
 | 
			
		||||
	$(DIRECTORY)/src/mesa/osmesa.pc.in				\
 | 
			
		||||
	$(DIRECTORY)/src/mesa/depend					\
 | 
			
		||||
	$(MAIN_ES_FILES)						\
 | 
			
		||||
	$(DIRECTORY)/src/mesa/main/*.[chS]				\
 | 
			
		||||
	$(DIRECTORY)/src/mesa/main/*.cpp				\
 | 
			
		||||
	$(DIRECTORY)/src/mesa/main/descrip.mms				\
 | 
			
		||||
	$(DIRECTORY)/src/mesa/glapi/*.[chS]				\
 | 
			
		||||
	$(DIRECTORY)/src/mesa/math/*.[ch]				\
 | 
			
		||||
	$(DIRECTORY)/src/mesa/math/descrip.mms				\
 | 
			
		||||
	$(DIRECTORY)/src/mesa/program/*.[chly]				\
 | 
			
		||||
	$(DIRECTORY)/src/mesa/program/*.cpp				\
 | 
			
		||||
	$(DIRECTORY)/src/mesa/program/descrip.mms			\
 | 
			
		||||
	$(DIRECTORY)/src/mesa/shader/*.[chly]				\
 | 
			
		||||
	$(DIRECTORY)/src/mesa/shader/Makefile				\
 | 
			
		||||
	$(DIRECTORY)/src/mesa/shader/descrip.mms			\
 | 
			
		||||
	$(DIRECTORY)/src/mesa/shader/grammar/*.[ch]			\
 | 
			
		||||
	$(DIRECTORY)/src/mesa/shader/slang/*.[ch]			\
 | 
			
		||||
	$(DIRECTORY)/src/mesa/shader/slang/descrip.mms			\
 | 
			
		||||
	$(DIRECTORY)/src/mesa/shader/slang/library/*.[ch]		\
 | 
			
		||||
	$(DIRECTORY)/src/mesa/shader/slang/library/*.gc			\
 | 
			
		||||
	$(DIRECTORY)/src/mesa/shader/slang/library/*.syn		\
 | 
			
		||||
	$(DIRECTORY)/src/mesa/shader/slang/library/Makefile		\
 | 
			
		||||
	$(DIRECTORY)/src/mesa/swrast/*.[ch]				\
 | 
			
		||||
	$(DIRECTORY)/src/mesa/swrast/descrip.mms			\
 | 
			
		||||
	$(DIRECTORY)/src/mesa/swrast_setup/*.[ch]			\
 | 
			
		||||
@@ -279,21 +263,32 @@ MAIN_FILES = \
 | 
			
		||||
	$(DIRECTORY)/src/mesa/drivers/beos/Makefile			\
 | 
			
		||||
	$(DIRECTORY)/src/mesa/drivers/common/*.[ch]			\
 | 
			
		||||
	$(DIRECTORY)/src/mesa/drivers/common/descrip.mms		\
 | 
			
		||||
	$(DIRECTORY)/src/mesa/drivers/directfb/*.[ch]			\
 | 
			
		||||
	$(DIRECTORY)/src/mesa/drivers/directfb/Makefile			\
 | 
			
		||||
	$(DIRECTORY)/src/mesa/drivers/dos/*.[chS]			\
 | 
			
		||||
	$(DIRECTORY)/src/mesa/drivers/fbdev/Makefile			\
 | 
			
		||||
	$(DIRECTORY)/src/mesa/drivers/fbdev/glfbdev.c			\
 | 
			
		||||
	$(DIRECTORY)/src/mesa/drivers/glide/*.[ch]			\
 | 
			
		||||
	$(DIRECTORY)/src/mesa/drivers/ggi/*.[ch]			\
 | 
			
		||||
	$(DIRECTORY)/src/mesa/drivers/ggi/ggimesa.conf.in		\
 | 
			
		||||
	$(DIRECTORY)/src/mesa/drivers/ggi/default/*.c			\
 | 
			
		||||
	$(DIRECTORY)/src/mesa/drivers/ggi/default/genkgi.conf.in	\
 | 
			
		||||
	$(DIRECTORY)/src/mesa/drivers/ggi/display/*.c			\
 | 
			
		||||
	$(DIRECTORY)/src/mesa/drivers/ggi/display/fbdev.conf.in		\
 | 
			
		||||
	$(DIRECTORY)/src/mesa/drivers/ggi/include/ggi/mesa/*.h		\
 | 
			
		||||
	$(DIRECTORY)/src/mesa/drivers/osmesa/Makefile			\
 | 
			
		||||
	$(DIRECTORY)/src/mesa/drivers/osmesa/Makefile.win		\
 | 
			
		||||
	$(DIRECTORY)/src/mesa/drivers/osmesa/descrip.mms		\
 | 
			
		||||
	$(DIRECTORY)/src/mesa/drivers/osmesa/osmesa.def			\
 | 
			
		||||
	$(DIRECTORY)/src/mesa/drivers/osmesa/*.[ch]			\
 | 
			
		||||
	$(DIRECTORY)/src/mesa/drivers/dri/r300/compiler/*.[ch]		\
 | 
			
		||||
	$(DIRECTORY)/src/mesa/drivers/dri/r300/compiler/Makefile	\
 | 
			
		||||
	$(DIRECTORY)/src/mesa/drivers/dri/r300/compiler/SConscript	\
 | 
			
		||||
	$(DIRECTORY)/src/mesa/drivers/svga/*.[ch]			\
 | 
			
		||||
	$(DIRECTORY)/src/mesa/drivers/windows/*/*.[ch]			\
 | 
			
		||||
	$(DIRECTORY)/src/mesa/drivers/windows/*/*.def			\
 | 
			
		||||
	$(DIRECTORY)/src/mesa/drivers/x11/Makefile			\
 | 
			
		||||
	$(DIRECTORY)/src/mesa/drivers/x11/descrip.mms			\
 | 
			
		||||
	$(DIRECTORY)/src/mesa/drivers/x11/*.[ch]			\
 | 
			
		||||
	$(DIRECTORY)/src/mesa/drivers/glslcompiler/Makefile		\
 | 
			
		||||
	$(DIRECTORY)/src/mesa/drivers/glslcompiler/glslcompiler.c	\
 | 
			
		||||
	$(DIRECTORY)/src/mesa/ppc/*.[ch]				\
 | 
			
		||||
	$(DIRECTORY)/src/mesa/sparc/*.[chS]				\
 | 
			
		||||
	$(DIRECTORY)/src/mesa/x86/Makefile				\
 | 
			
		||||
@@ -301,100 +296,62 @@ MAIN_FILES = \
 | 
			
		||||
	$(DIRECTORY)/src/mesa/x86/*.S					\
 | 
			
		||||
	$(DIRECTORY)/src/mesa/x86/rtasm/*.[ch]				\
 | 
			
		||||
	$(DIRECTORY)/src/mesa/x86-64/*.[chS]				\
 | 
			
		||||
	$(DIRECTORY)/src/mesa/x86-64/Makefile
 | 
			
		||||
 | 
			
		||||
MAPI_FILES = \
 | 
			
		||||
	$(DIRECTORY)/include/GLES/*.h					\
 | 
			
		||||
	$(DIRECTORY)/include/GLES2/*.h					\
 | 
			
		||||
	$(DIRECTORY)/include/VG/*.h					\
 | 
			
		||||
	$(DIRECTORY)/src/mapi/es?api/Makefile				\
 | 
			
		||||
	$(DIRECTORY)/src/mapi/es?api/*.pc.in				\
 | 
			
		||||
	$(DIRECTORY)/src/mapi/glapi/gen/Makefile			\
 | 
			
		||||
	$(DIRECTORY)/src/mapi/glapi/gen/*.xml				\
 | 
			
		||||
	$(DIRECTORY)/src/mapi/glapi/gen/*.py				\
 | 
			
		||||
	$(DIRECTORY)/src/mapi/glapi/gen/*.dtd				\
 | 
			
		||||
	$(DIRECTORY)/src/mapi/glapi/gen-es/Makefile			\
 | 
			
		||||
	$(DIRECTORY)/src/mapi/glapi/gen-es/*.xml			\
 | 
			
		||||
	$(DIRECTORY)/src/mapi/glapi/gen-es/*.py				\
 | 
			
		||||
	$(DIRECTORY)/src/mapi/glapi/Makefile				\
 | 
			
		||||
	$(DIRECTORY)/src/mapi/glapi/SConscript				\
 | 
			
		||||
	$(DIRECTORY)/src/mapi/glapi/sources.mak				\
 | 
			
		||||
	$(DIRECTORY)/src/mapi/glapi/*.[chS]				\
 | 
			
		||||
	$(DIRECTORY)/src/mapi/mapi/mapi_abi.py				\
 | 
			
		||||
	$(DIRECTORY)/src/mapi/mapi/sources.mak				\
 | 
			
		||||
	$(DIRECTORY)/src/mapi/mapi/*.[ch]				\
 | 
			
		||||
	$(DIRECTORY)/src/mapi/shared-glapi/SConscript			\
 | 
			
		||||
	$(DIRECTORY)/src/mapi/shared-glapi/Makefile			\
 | 
			
		||||
	$(DIRECTORY)/src/mapi/vgapi/Makefile				\
 | 
			
		||||
	$(DIRECTORY)/src/mapi/vgapi/SConscript				\
 | 
			
		||||
	$(DIRECTORY)/src/mapi/vgapi/vgapi.csv				\
 | 
			
		||||
	$(DIRECTORY)/src/mapi/vgapi/vg.pc.in
 | 
			
		||||
	$(DIRECTORY)/src/mesa/x86-64/Makefile				\
 | 
			
		||||
	$(DIRECTORY)/progs/Makefile					\
 | 
			
		||||
	$(DIRECTORY)/progs/util/README					\
 | 
			
		||||
	$(DIRECTORY)/progs/util/*.[ch]					\
 | 
			
		||||
	$(DIRECTORY)/progs/util/sampleMakefile				\
 | 
			
		||||
	$(DIRECTORY)/windows/VC8/
 | 
			
		||||
 | 
			
		||||
EGL_FILES = \
 | 
			
		||||
	$(DIRECTORY)/include/KHR/*.h					\
 | 
			
		||||
	$(DIRECTORY)/include/EGL/*.h					\
 | 
			
		||||
	$(DIRECTORY)/include/GLES/*.h					\
 | 
			
		||||
	$(DIRECTORY)/include/GLES2/*.h					\
 | 
			
		||||
	$(DIRECTORY)/src/egl/Makefile					\
 | 
			
		||||
	$(DIRECTORY)/src/egl/*/Makefile					\
 | 
			
		||||
	$(DIRECTORY)/src/egl/*/Makefile.template			\
 | 
			
		||||
	$(DIRECTORY)/src/egl/*/*.[ch]					\
 | 
			
		||||
	$(DIRECTORY)/src/egl/*/*/Makefile				\
 | 
			
		||||
	$(DIRECTORY)/src/egl/*/*/*.[ch]					\
 | 
			
		||||
	$(DIRECTORY)/src/egl/wayland/wayland-drm/protocol/*.xml		\
 | 
			
		||||
	$(DIRECTORY)/src/egl/wayland/wayland-egl/*.pc.in		\
 | 
			
		||||
	$(DIRECTORY)/src/egl/main/SConscript				\
 | 
			
		||||
	$(DIRECTORY)/src/egl/main/*.pc.in				\
 | 
			
		||||
	$(DIRECTORY)/src/egl/main/*.def
 | 
			
		||||
 | 
			
		||||
GBM_FILES = \
 | 
			
		||||
	$(DIRECTORY)/src/gbm/Makefile					\
 | 
			
		||||
	$(DIRECTORY)/src/gbm/main/*.pc.in				\
 | 
			
		||||
	$(DIRECTORY)/src/gbm/main/*.[ch]				\
 | 
			
		||||
	$(DIRECTORY)/src/gbm/main/Makefile				\
 | 
			
		||||
	$(DIRECTORY)/src/gbm/backends/Makefile				\
 | 
			
		||||
	$(DIRECTORY)/src/gbm/backends/Makefile.template			\
 | 
			
		||||
	$(DIRECTORY)/src/gbm/backends/*/*.[ch]				\
 | 
			
		||||
	$(DIRECTORY)/src/gbm/backends/*/Makefile			\
 | 
			
		||||
 | 
			
		||||
GALLIUM_FILES = \
 | 
			
		||||
	$(DIRECTORY)/src/mesa/state_tracker/*[ch]			\
 | 
			
		||||
	$(DIRECTORY)/src/gallium/Makefile				\
 | 
			
		||||
	$(DIRECTORY)/src/gallium/Makefile.template			\
 | 
			
		||||
	$(DIRECTORY)/src/gallium/SConscript				\
 | 
			
		||||
	$(DIRECTORY)/src/gallium/targets/Makefile.dri			\
 | 
			
		||||
	$(DIRECTORY)/src/gallium/targets/Makefile.xorg			\
 | 
			
		||||
	$(DIRECTORY)/src/gallium/targets/SConscript.dri			\
 | 
			
		||||
	$(DIRECTORY)/src/gallium/*/Makefile				\
 | 
			
		||||
	$(DIRECTORY)/src/gallium/*/SConscript				\
 | 
			
		||||
	$(DIRECTORY)/src/gallium/*/*/Makefile				\
 | 
			
		||||
	$(DIRECTORY)/src/gallium/*/*/Makefile.template			\
 | 
			
		||||
	$(DIRECTORY)/src/gallium/*/*/SConscript				\
 | 
			
		||||
	$(DIRECTORY)/src/gallium/*/*/*.[ch]				\
 | 
			
		||||
	$(DIRECTORY)/src/gallium/auxiliary/gallivm/*.cpp		\
 | 
			
		||||
	$(DIRECTORY)/src/gallium/*/*/*.py				\
 | 
			
		||||
	$(DIRECTORY)/src/gallium/*/*/*.csv				\
 | 
			
		||||
	$(DIRECTORY)/src/gallium/*/*/*/Makefile				\
 | 
			
		||||
	$(DIRECTORY)/src/gallium/*/*/*/SConscript			\
 | 
			
		||||
	$(DIRECTORY)/src/gallium/*/*/*/*.[ch]				\
 | 
			
		||||
	$(DIRECTORY)/src/gallium/*/*/*/*.py
 | 
			
		||||
	$(DIRECTORY)/src/gallium/*/*/*/*.py				\
 | 
			
		||||
	$(DIRECTORY)/src/gallium/*/*/*/*/Makefile			\
 | 
			
		||||
	$(DIRECTORY)/src/gallium/*/*/*/*/*.[ch]				\
 | 
			
		||||
 | 
			
		||||
APPLE_DRI_FILES = \
 | 
			
		||||
	$(DIRECTORY)/src/glx/apple/Makefile 				\
 | 
			
		||||
	$(DIRECTORY)/src/glx/apple/*.[ch]
 | 
			
		||||
 | 
			
		||||
DRI_FILES = \
 | 
			
		||||
	$(DIRECTORY)/include/GL/internal/dri_interface.h		\
 | 
			
		||||
	$(DIRECTORY)/include/GL/internal/glcore.h			\
 | 
			
		||||
	$(DIRECTORY)/include/GL/internal/sarea.h			\
 | 
			
		||||
	$(DIRECTORY)/src/glx/Makefile					\
 | 
			
		||||
	$(DIRECTORY)/src/glx/*.[ch]					\
 | 
			
		||||
	$(APPLE_DRI_FILES)						\
 | 
			
		||||
	$(DIRECTORY)/src/mesa/drivers/dri/Makefile*			\
 | 
			
		||||
	$(DIRECTORY)/src/glx/x11/Makefile				\
 | 
			
		||||
	$(DIRECTORY)/src/glx/x11/*.[ch]					\
 | 
			
		||||
	$(DIRECTORY)/src/mesa/drivers/dri/Makefile			\
 | 
			
		||||
	$(DIRECTORY)/src/mesa/drivers/dri/Makefile.template		\
 | 
			
		||||
	$(DIRECTORY)/src/mesa/drivers/dri/dri.pc.in			\
 | 
			
		||||
	$(DIRECTORY)/src/mesa/drivers/dri/common/xmlpool/*.[ch]		\
 | 
			
		||||
	$(DIRECTORY)/src/mesa/drivers/dri/common/xmlpool/*.po		\
 | 
			
		||||
	$(DIRECTORY)/src/mesa/drivers/dri/*/*.[chS]			\
 | 
			
		||||
	$(DIRECTORY)/src/mesa/drivers/dri/*/*.cpp			\
 | 
			
		||||
	$(DIRECTORY)/src/mesa/drivers/dri/*/*/*.[chS]			\
 | 
			
		||||
	$(DIRECTORY)/src/mesa/drivers/dri/*/Makefile			\
 | 
			
		||||
	$(DIRECTORY)/src/mesa/drivers/dri/*/*/Makefile			\
 | 
			
		||||
	$(DIRECTORY)/src/mesa/drivers/dri/*/Doxyfile
 | 
			
		||||
	$(DIRECTORY)/src/mesa/drivers/dri/*/Doxyfile			\
 | 
			
		||||
	$(DIRECTORY)/src/mesa/drivers/dri/*/server/*.[ch]
 | 
			
		||||
 | 
			
		||||
SGI_GLU_FILES = \
 | 
			
		||||
	$(DIRECTORY)/src/glu/Makefile					\
 | 
			
		||||
@@ -419,6 +376,15 @@ SGI_GLU_FILES = \
 | 
			
		||||
	$(DIRECTORY)/src/glu/sgi/libtess/*.[ch]				\
 | 
			
		||||
	$(DIRECTORY)/src/glu/sgi/libutil/*.[ch]
 | 
			
		||||
 | 
			
		||||
MESA_GLU_FILES = \
 | 
			
		||||
	$(DIRECTORY)/src/glu/mesa/README[12]		\
 | 
			
		||||
	$(DIRECTORY)/src/glu/mesa/Makefile*		\
 | 
			
		||||
	$(DIRECTORY)/src/glu/mesa/descrip.mms		\
 | 
			
		||||
	$(DIRECTORY)/src/glu/mesa/mms_depend		\
 | 
			
		||||
	$(DIRECTORY)/src/glu/mesa/*.def			\
 | 
			
		||||
	$(DIRECTORY)/src/glu/mesa/depend		\
 | 
			
		||||
	$(DIRECTORY)/src/glu/mesa/*.[ch]
 | 
			
		||||
 | 
			
		||||
GLW_FILES = \
 | 
			
		||||
	$(DIRECTORY)/src/glw/*.[ch]			\
 | 
			
		||||
	$(DIRECTORY)/src/glw/Makefile*			\
 | 
			
		||||
@@ -426,22 +392,75 @@ GLW_FILES = \
 | 
			
		||||
	$(DIRECTORY)/src/glw/glw.pc.in			\
 | 
			
		||||
	$(DIRECTORY)/src/glw/depend
 | 
			
		||||
 | 
			
		||||
GLEW_FILES = \
 | 
			
		||||
	$(DIRECTORY)/include/GL/glew.h			\
 | 
			
		||||
	$(DIRECTORY)/include/GL/glxew.h			\
 | 
			
		||||
	$(DIRECTORY)/include/GL/wglew.h			\
 | 
			
		||||
	$(DIRECTORY)/src/glew/*.c			\
 | 
			
		||||
	$(DIRECTORY)/src/glew/Makefile			\
 | 
			
		||||
	$(DIRECTORY)/src/glew/SConscript		\
 | 
			
		||||
	$(DIRECTORY)/src/glew/LICENSE.txt
 | 
			
		||||
 | 
			
		||||
DEMO_FILES = \
 | 
			
		||||
	$(GLEW_FILES)					\
 | 
			
		||||
	$(DIRECTORY)/progs/beos/*.cpp			\
 | 
			
		||||
	$(DIRECTORY)/progs/beos/Makefile		\
 | 
			
		||||
	$(DIRECTORY)/progs/images/*.rgb			\
 | 
			
		||||
	$(DIRECTORY)/progs/images/*.rgba		\
 | 
			
		||||
	$(DIRECTORY)/progs/demos/Makefile*		\
 | 
			
		||||
	$(DIRECTORY)/progs/demos/descrip.mms		\
 | 
			
		||||
	$(DIRECTORY)/progs/demos/*.[ch]			\
 | 
			
		||||
	$(DIRECTORY)/progs/demos/*.cxx			\
 | 
			
		||||
	$(DIRECTORY)/progs/demos/*.dat			\
 | 
			
		||||
	$(DIRECTORY)/progs/demos/README			\
 | 
			
		||||
	$(DIRECTORY)/progs/fbdev/Makefile		\
 | 
			
		||||
	$(DIRECTORY)/progs/fbdev/glfbdevtest.c		\
 | 
			
		||||
	$(DIRECTORY)/progs/osdemos/Makefile		\
 | 
			
		||||
	$(DIRECTORY)/progs/osdemos/*.c			\
 | 
			
		||||
	$(DIRECTORY)/progs/xdemos/Makefile*		\
 | 
			
		||||
	$(DIRECTORY)/progs/xdemos/*.[chf]		\
 | 
			
		||||
	$(DIRECTORY)/progs/redbook/Makefile*		\
 | 
			
		||||
	$(DIRECTORY)/progs/redbook/README		\
 | 
			
		||||
	$(DIRECTORY)/progs/redbook/*.[ch]		\
 | 
			
		||||
	$(DIRECTORY)/progs/samples/Makefile*		\
 | 
			
		||||
	$(DIRECTORY)/progs/samples/README		\
 | 
			
		||||
	$(DIRECTORY)/progs/samples/*.c			\
 | 
			
		||||
	$(DIRECTORY)/progs/glsl/Makefile*		\
 | 
			
		||||
	$(DIRECTORY)/progs/glsl/*.c			\
 | 
			
		||||
	$(DIRECTORY)/progs/glsl/*.frag			\
 | 
			
		||||
	$(DIRECTORY)/progs/glsl/*.vert			\
 | 
			
		||||
	$(DIRECTORY)/progs/glsl/*.shtest		\
 | 
			
		||||
	$(DIRECTORY)/progs/windml/Makefile.ugl		\
 | 
			
		||||
	$(DIRECTORY)/progs/windml/*.c			\
 | 
			
		||||
	$(DIRECTORY)/progs/windml/*.bmp			\
 | 
			
		||||
	$(DIRECTORY)/progs/ggi/*.c
 | 
			
		||||
 | 
			
		||||
GLUT_FILES = \
 | 
			
		||||
	$(DIRECTORY)/include/GL/glut.h			\
 | 
			
		||||
	$(DIRECTORY)/include/GL/glutf90.h		\
 | 
			
		||||
	$(DIRECTORY)/src/glut/glx/Makefile*		\
 | 
			
		||||
	$(DIRECTORY)/src/glut/glx/SConscript		\
 | 
			
		||||
	$(DIRECTORY)/src/glut/glx/depend		\
 | 
			
		||||
	$(DIRECTORY)/src/glut/glx/glut.pc.in		\
 | 
			
		||||
	$(DIRECTORY)/src/glut/glx/*def			\
 | 
			
		||||
	$(DIRECTORY)/src/glut/glx/*.[ch]		\
 | 
			
		||||
	$(DIRECTORY)/src/glut/beos/*.[ch]		\
 | 
			
		||||
	$(DIRECTORY)/src/glut/beos/*.cpp		\
 | 
			
		||||
	$(DIRECTORY)/src/glut/beos/Makefile
 | 
			
		||||
	$(DIRECTORY)/src/glut/beos/Makefile		\
 | 
			
		||||
	$(DIRECTORY)/src/glut/dos/*.[ch]		\
 | 
			
		||||
	$(DIRECTORY)/src/glut/dos/PC_HW/*.[chS]		\
 | 
			
		||||
	$(DIRECTORY)/src/glut/ggi/*.[ch]		\
 | 
			
		||||
	$(DIRECTORY)/src/glut/ggi/Makefile		\
 | 
			
		||||
	$(DIRECTORY)/src/glut/fbdev/Makefile		\
 | 
			
		||||
	$(DIRECTORY)/src/glut/fbdev/*[ch]		\
 | 
			
		||||
	$(DIRECTORY)/src/glut/mini/*[ch]		\
 | 
			
		||||
	$(DIRECTORY)/src/glut/mini/glut.pc.in		\
 | 
			
		||||
	$(DIRECTORY)/src/glut/directfb/Makefile		\
 | 
			
		||||
	$(DIRECTORY)/src/glut/directfb/NOTES		\
 | 
			
		||||
	$(DIRECTORY)/src/glut/directfb/*[ch]
 | 
			
		||||
 | 
			
		||||
DEPEND_FILES = \
 | 
			
		||||
	$(TOP)/src/mesa/depend		\
 | 
			
		||||
	$(TOP)/src/glx/depend		\
 | 
			
		||||
	$(TOP)/src/glx/x11/depend	\
 | 
			
		||||
	$(TOP)/src/glw/depend		\
 | 
			
		||||
	$(TOP)/src/glut/glx/depend	\
 | 
			
		||||
	$(TOP)/src/glu/sgi/depend
 | 
			
		||||
@@ -449,32 +468,17 @@ DEPEND_FILES = \
 | 
			
		||||
 | 
			
		||||
LIB_FILES = \
 | 
			
		||||
	$(MAIN_FILES)		\
 | 
			
		||||
	$(MAPI_FILES)		\
 | 
			
		||||
	$(ES_FILES)		\
 | 
			
		||||
	$(EGL_FILES)		\
 | 
			
		||||
	$(GBM_FILES)		\
 | 
			
		||||
	$(GALLIUM_FILES)	\
 | 
			
		||||
	$(DRI_FILES)		\
 | 
			
		||||
	$(SGI_GLU_FILES)	\
 | 
			
		||||
	$(GLW_FILES)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
parsers: configure
 | 
			
		||||
	-@touch $(TOP)/configs/current
 | 
			
		||||
	$(MAKE) -C src/glsl glsl_parser.cpp glsl_parser.h glsl_lexer.cpp
 | 
			
		||||
	$(MAKE) -C src/glsl/glcpp glcpp-lex.c glcpp-parse.c glcpp-parse.h
 | 
			
		||||
	$(MAKE) -C src/mesa/program lex.yy.c program_parse.tab.c program_parse.tab.h
 | 
			
		||||
 | 
			
		||||
# Everything for new a Mesa release:
 | 
			
		||||
ARCHIVES = $(LIB_NAME).tar.gz \
 | 
			
		||||
	$(LIB_NAME).tar.bz2 \
 | 
			
		||||
	$(LIB_NAME).zip \
 | 
			
		||||
	$(GLUT_NAME).tar.gz \
 | 
			
		||||
	$(GLUT_NAME).tar.bz2 \
 | 
			
		||||
	$(GLUT_NAME).zip
 | 
			
		||||
tarballs: rm_depend configure aclocal.m4 lib_gz demo_gz glut_gz \
 | 
			
		||||
	lib_bz2 demo_bz2 glut_bz2 lib_zip demo_zip glut_zip md5
 | 
			
		||||
 | 
			
		||||
tarballs: md5
 | 
			
		||||
	rm -f ../$(LIB_NAME).tar
 | 
			
		||||
 | 
			
		||||
# Helper for autoconf builds
 | 
			
		||||
ACLOCAL = aclocal
 | 
			
		||||
@@ -483,7 +487,7 @@ AUTOCONF = autoconf
 | 
			
		||||
AC_FLAGS =
 | 
			
		||||
aclocal.m4: configure.ac acinclude.m4
 | 
			
		||||
	$(ACLOCAL) $(ACLOCAL_FLAGS)
 | 
			
		||||
configure: rm_depend configure.ac aclocal.m4 acinclude.m4
 | 
			
		||||
configure: configure.ac aclocal.m4 acinclude.m4
 | 
			
		||||
	$(AUTOCONF) $(AC_FLAGS)
 | 
			
		||||
 | 
			
		||||
rm_depend:
 | 
			
		||||
@@ -492,46 +496,76 @@ rm_depend:
 | 
			
		||||
		touch $$dep ; \
 | 
			
		||||
	done
 | 
			
		||||
 | 
			
		||||
rm_config: parsers
 | 
			
		||||
	rm -f configs/current
 | 
			
		||||
	rm -f configs/autoconf
 | 
			
		||||
lib_gz:
 | 
			
		||||
	rm -f configs/current ; \
 | 
			
		||||
	rm -f configs/autoconf ; \
 | 
			
		||||
	cd .. ; \
 | 
			
		||||
	tar -cf $(LIB_NAME).tar $(LIB_FILES) ; \
 | 
			
		||||
	gzip $(LIB_NAME).tar ; \
 | 
			
		||||
	mv $(LIB_NAME).tar.gz $(DIRECTORY)
 | 
			
		||||
 | 
			
		||||
$(LIB_NAME).tar: rm_config
 | 
			
		||||
	cd .. ; tar -cf $(DIRECTORY)/$(LIB_NAME).tar $(LIB_FILES)
 | 
			
		||||
demo_gz:
 | 
			
		||||
	cd .. ; \
 | 
			
		||||
	tar -cf $(DEMO_NAME).tar $(DEMO_FILES) ; \
 | 
			
		||||
	gzip $(DEMO_NAME).tar ; \
 | 
			
		||||
	mv $(DEMO_NAME).tar.gz $(DIRECTORY)
 | 
			
		||||
 | 
			
		||||
$(LIB_NAME).tar.gz: $(LIB_NAME).tar
 | 
			
		||||
	gzip --stdout --best $(LIB_NAME).tar > $(LIB_NAME).tar.gz
 | 
			
		||||
glut_gz:
 | 
			
		||||
	cd .. ; \
 | 
			
		||||
	tar -cf $(GLUT_NAME).tar $(GLUT_FILES) ; \
 | 
			
		||||
	gzip $(GLUT_NAME).tar ; \
 | 
			
		||||
	mv $(GLUT_NAME).tar.gz $(DIRECTORY)
 | 
			
		||||
 | 
			
		||||
$(GLUT_NAME).tar: rm_depend
 | 
			
		||||
	cd .. ; tar -cf $(DIRECTORY)/$(GLUT_NAME).tar $(GLUT_FILES)
 | 
			
		||||
lib_bz2:
 | 
			
		||||
	rm -f configs/current ; \
 | 
			
		||||
	rm -f configs/autoconf ; \
 | 
			
		||||
	cd .. ; \
 | 
			
		||||
	tar -cf $(LIB_NAME).tar $(LIB_FILES) ; \
 | 
			
		||||
	bzip2 $(LIB_NAME).tar ; \
 | 
			
		||||
	mv $(LIB_NAME).tar.bz2 $(DIRECTORY)
 | 
			
		||||
 | 
			
		||||
$(GLUT_NAME).tar.gz: $(GLUT_NAME).tar
 | 
			
		||||
	gzip --stdout --best $(GLUT_NAME).tar > $(GLUT_NAME).tar.gz
 | 
			
		||||
demo_bz2:
 | 
			
		||||
	cd .. ; \
 | 
			
		||||
	tar -cf $(DEMO_NAME).tar $(DEMO_FILES) ; \
 | 
			
		||||
	bzip2 $(DEMO_NAME).tar ; \
 | 
			
		||||
	mv $(DEMO_NAME).tar.bz2 $(DIRECTORY)
 | 
			
		||||
 | 
			
		||||
$(LIB_NAME).tar.bz2: $(LIB_NAME).tar
 | 
			
		||||
	bzip2 --stdout --best $(LIB_NAME).tar > $(LIB_NAME).tar.bz2
 | 
			
		||||
glut_bz2:
 | 
			
		||||
	cd .. ; \
 | 
			
		||||
	tar -cf $(GLUT_NAME).tar $(GLUT_FILES) ; \
 | 
			
		||||
	bzip2 $(GLUT_NAME).tar ; \
 | 
			
		||||
	mv $(GLUT_NAME).tar.bz2 $(DIRECTORY)
 | 
			
		||||
 | 
			
		||||
$(GLUT_NAME).tar.bz2: $(GLUT_NAME).tar
 | 
			
		||||
	bzip2 --stdout --best $(GLUT_NAME).tar > $(GLUT_NAME).tar.bz2
 | 
			
		||||
 | 
			
		||||
$(LIB_NAME).zip: rm_config
 | 
			
		||||
lib_zip:
 | 
			
		||||
	rm -f configs/current ; \
 | 
			
		||||
	rm -f configs/autoconf ; \
 | 
			
		||||
	rm -f $(LIB_NAME).zip ; \
 | 
			
		||||
	cd .. ; \
 | 
			
		||||
	zip -qr $(LIB_NAME).zip $(LIB_FILES) ; \
 | 
			
		||||
	mv $(LIB_NAME).zip $(DIRECTORY)
 | 
			
		||||
 | 
			
		||||
$(GLUT_NAME).zip:
 | 
			
		||||
demo_zip:
 | 
			
		||||
	rm -f $(DEMO_NAME).zip ; \
 | 
			
		||||
	cd .. ; \
 | 
			
		||||
	zip -qr $(DEMO_NAME).zip $(DEMO_FILES) ; \
 | 
			
		||||
	mv $(DEMO_NAME).zip $(DIRECTORY)
 | 
			
		||||
 | 
			
		||||
glut_zip:
 | 
			
		||||
	rm -f $(GLUT_NAME).zip ; \
 | 
			
		||||
	cd .. ; \
 | 
			
		||||
	zip -qr $(GLUT_NAME).zip $(GLUT_FILES) ; \
 | 
			
		||||
	mv $(GLUT_NAME).zip $(DIRECTORY)
 | 
			
		||||
 | 
			
		||||
md5: $(ARCHIVES)
 | 
			
		||||
md5:
 | 
			
		||||
	@-md5sum $(LIB_NAME).tar.gz
 | 
			
		||||
	@-md5sum $(LIB_NAME).tar.bz2
 | 
			
		||||
	@-md5sum $(LIB_NAME).zip
 | 
			
		||||
	@-md5sum $(DEMO_NAME).tar.gz
 | 
			
		||||
	@-md5sum $(DEMO_NAME).tar.bz2
 | 
			
		||||
	@-md5sum $(DEMO_NAME).zip
 | 
			
		||||
	@-md5sum $(GLUT_NAME).tar.gz
 | 
			
		||||
	@-md5sum $(GLUT_NAME).tar.bz2
 | 
			
		||||
	@-md5sum $(GLUT_NAME).zip
 | 
			
		||||
 | 
			
		||||
.PHONY: tarballs rm_depend rm_config md5
 | 
			
		||||
.PHONY: tarballs rm_depend lib_gz demo_gz glut_gz lib_bz2 demo_bz2 \
 | 
			
		||||
	glut_bz2 lib_zip demo_zip glut_zip md5
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										193
									
								
								SConstruct
									
									
									
									
									
								
							
							
						
						
									
										193
									
								
								SConstruct
									
									
									
									
									
								
							@@ -3,14 +3,14 @@
 | 
			
		||||
#
 | 
			
		||||
# For example, invoke scons as 
 | 
			
		||||
#
 | 
			
		||||
#   scons build=debug llvm=yes machine=x86
 | 
			
		||||
#   scons debug=1 dri=0 machine=x86
 | 
			
		||||
#
 | 
			
		||||
# to set configuration variables. Or you can write those options to a file
 | 
			
		||||
# named config.py:
 | 
			
		||||
#
 | 
			
		||||
#   # config.py
 | 
			
		||||
#   build='debug'
 | 
			
		||||
#   llvm=True
 | 
			
		||||
#   debug=1
 | 
			
		||||
#   dri=0
 | 
			
		||||
#   machine='x86'
 | 
			
		||||
# 
 | 
			
		||||
# Invoke
 | 
			
		||||
@@ -23,15 +23,34 @@
 | 
			
		||||
import os
 | 
			
		||||
import os.path
 | 
			
		||||
import sys
 | 
			
		||||
import SCons.Util
 | 
			
		||||
 | 
			
		||||
import common
 | 
			
		||||
 | 
			
		||||
#######################################################################
 | 
			
		||||
# Configuration options
 | 
			
		||||
 | 
			
		||||
default_statetrackers = 'mesa'
 | 
			
		||||
 | 
			
		||||
if common.default_platform in ('linux', 'freebsd', 'darwin'):
 | 
			
		||||
	default_drivers = 'softpipe,failover,i915simple,trace,identity,llvmpipe'
 | 
			
		||||
	default_winsys = 'xlib'
 | 
			
		||||
elif common.default_platform in ('winddk',):
 | 
			
		||||
	default_drivers = 'softpipe,i915simple,trace,identity'
 | 
			
		||||
	default_winsys = 'all'
 | 
			
		||||
else:
 | 
			
		||||
	default_drivers = 'all'
 | 
			
		||||
	default_winsys = 'all'
 | 
			
		||||
 | 
			
		||||
opts = Variables('config.py')
 | 
			
		||||
common.AddOptions(opts)
 | 
			
		||||
opts.Add(ListVariable('statetrackers', 'state trackers to build', default_statetrackers,
 | 
			
		||||
                     ['mesa', 'python', 'xorg']))
 | 
			
		||||
opts.Add(ListVariable('drivers', 'pipe drivers to build', default_drivers,
 | 
			
		||||
                     ['softpipe', 'failover', 'i915simple', 'i965simple', 'cell', 'trace', 'r300', 'identity', 'llvmpipe']))
 | 
			
		||||
opts.Add(ListVariable('winsys', 'winsys drivers to build', default_winsys,
 | 
			
		||||
                     ['xlib', 'intel', 'gdi', 'radeon']))
 | 
			
		||||
 | 
			
		||||
opts.Add(EnumVariable('MSVS_VERSION', 'MS Visual C++ version', None, allowed_values=('7.1', '8.0', '9.0')))
 | 
			
		||||
 | 
			
		||||
env = Environment(
 | 
			
		||||
	options = opts,
 | 
			
		||||
@@ -40,97 +59,101 @@ env = Environment(
 | 
			
		||||
	ENV = os.environ,
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
opts.Save('config.py', env)
 | 
			
		||||
 | 
			
		||||
# Backwards compatability with old target configuration variable
 | 
			
		||||
try:
 | 
			
		||||
    targets = ARGUMENTS['targets']
 | 
			
		||||
except KeyError:
 | 
			
		||||
    pass
 | 
			
		||||
else:
 | 
			
		||||
    targets = targets.split(',')
 | 
			
		||||
    print 'scons: warning: targets option is deprecated; pass the targets on their own such as'
 | 
			
		||||
    print
 | 
			
		||||
    print '  scons %s' % ' '.join(targets)
 | 
			
		||||
    print 
 | 
			
		||||
    COMMAND_LINE_TARGETS.append(targets)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
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"
 | 
			
		||||
# replicate options values in local variables
 | 
			
		||||
debug = env['debug']
 | 
			
		||||
dri = env['dri']
 | 
			
		||||
llvm = env['llvm']
 | 
			
		||||
machine = env['machine']
 | 
			
		||||
platform = env['platform']
 | 
			
		||||
 | 
			
		||||
# derived options
 | 
			
		||||
x86 = machine == 'x86'
 | 
			
		||||
ppc = machine == 'ppc'
 | 
			
		||||
gcc = platform in ('linux', 'freebsd', 'darwin')
 | 
			
		||||
msvc = platform in ('windows', 'winddk')
 | 
			
		||||
 | 
			
		||||
Export([
 | 
			
		||||
	'debug', 
 | 
			
		||||
	'x86', 
 | 
			
		||||
	'ppc', 
 | 
			
		||||
	'dri', 
 | 
			
		||||
	'llvm',
 | 
			
		||||
	'platform',
 | 
			
		||||
	'gcc',
 | 
			
		||||
	'msvc',
 | 
			
		||||
])
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#######################################################################
 | 
			
		||||
# Environment setup
 | 
			
		||||
 | 
			
		||||
# Includes
 | 
			
		||||
env.Prepend(CPPPATH = [
 | 
			
		||||
	'#/include',
 | 
			
		||||
])
 | 
			
		||||
env.Append(CPPPATH = [
 | 
			
		||||
	'#/include',
 | 
			
		||||
	'#/src/gallium/include',
 | 
			
		||||
	'#/src/gallium/auxiliary',
 | 
			
		||||
	'#/src/gallium/drivers',
 | 
			
		||||
	'#/src/gallium/winsys',
 | 
			
		||||
])
 | 
			
		||||
 | 
			
		||||
if env['msvc']:
 | 
			
		||||
    env.Append(CPPPATH = ['#include/c99'])
 | 
			
		||||
 | 
			
		||||
# Posix
 | 
			
		||||
if platform in ('posix', 'linux', 'freebsd', 'darwin'):
 | 
			
		||||
	env.Append(CPPDEFINES = [
 | 
			
		||||
		'_POSIX_SOURCE',
 | 
			
		||||
		('_POSIX_C_SOURCE', '199309L'), 
 | 
			
		||||
		'_SVID_SOURCE',
 | 
			
		||||
		'_BSD_SOURCE', 
 | 
			
		||||
		'_GNU_SOURCE',
 | 
			
		||||
		
 | 
			
		||||
		'PTHREADS',
 | 
			
		||||
		'HAVE_POSIX_MEMALIGN',
 | 
			
		||||
	])
 | 
			
		||||
	env.Append(CPPPATH = ['/usr/X11R6/include'])
 | 
			
		||||
	env.Append(LIBPATH = ['/usr/X11R6/lib'])
 | 
			
		||||
	env.Append(LIBS = [
 | 
			
		||||
		'm',
 | 
			
		||||
		'pthread',
 | 
			
		||||
		'expat',
 | 
			
		||||
		'dl',
 | 
			
		||||
	])
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# DRI
 | 
			
		||||
if dri:
 | 
			
		||||
	env.ParseConfig('pkg-config --cflags --libs libdrm')
 | 
			
		||||
	env.Append(CPPDEFINES = [
 | 
			
		||||
		('USE_EXTERNAL_DXTN_LIB', '1'), 
 | 
			
		||||
		'IN_DRI_DRIVER',
 | 
			
		||||
		'GLX_DIRECT_RENDERING',
 | 
			
		||||
		'GLX_INDIRECT_RENDERING',
 | 
			
		||||
	])
 | 
			
		||||
 | 
			
		||||
# LLVM
 | 
			
		||||
if llvm:
 | 
			
		||||
	# See also http://www.scons.org/wiki/UsingPkgConfig
 | 
			
		||||
	env.ParseConfig('llvm-config --cflags --ldflags --libs backend bitreader engine instrumentation interpreter ipo')
 | 
			
		||||
	env.Append(CPPDEFINES = ['MESA_LLVM'])
 | 
			
		||||
        # Force C++ linkage
 | 
			
		||||
	env['LINK'] = env['CXX']
 | 
			
		||||
 | 
			
		||||
# libGL
 | 
			
		||||
if platform in ('linux', 'freebsd', 'darwin'):
 | 
			
		||||
	env.Append(LIBS = [
 | 
			
		||||
		'X11',
 | 
			
		||||
		'Xext',
 | 
			
		||||
		'Xxf86vm',
 | 
			
		||||
		'Xdamage',
 | 
			
		||||
		'Xfixes',
 | 
			
		||||
	])
 | 
			
		||||
 | 
			
		||||
# for debugging
 | 
			
		||||
#print env.Dump()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#######################################################################
 | 
			
		||||
# Invoke host SConscripts 
 | 
			
		||||
# 
 | 
			
		||||
# For things that are meant to be run on the native host build machine, instead
 | 
			
		||||
# of the target machine.
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
# Create host environent
 | 
			
		||||
if env['crosscompile'] and not env['embedded']:
 | 
			
		||||
    host_env = Environment(
 | 
			
		||||
        options = opts,
 | 
			
		||||
        # no tool used
 | 
			
		||||
        tools = [],
 | 
			
		||||
        toolpath = ['#scons'],
 | 
			
		||||
        ENV = os.environ,
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
    # Override options
 | 
			
		||||
    host_env['platform'] = common.host_platform
 | 
			
		||||
    host_env['machine'] = common.host_machine
 | 
			
		||||
    host_env['toolchain'] = 'default'
 | 
			
		||||
    host_env['llvm'] = False
 | 
			
		||||
 | 
			
		||||
    host_env.Tool('gallium')
 | 
			
		||||
 | 
			
		||||
    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')
 | 
			
		||||
 | 
			
		||||
    SConscript(
 | 
			
		||||
        'src/SConscript',
 | 
			
		||||
        variant_dir = host_env['build_dir'],
 | 
			
		||||
        duplicate = 0, # http://www.scons.org/doc/0.97/HTML/scons-user/x2261.html
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
    env = target_env
 | 
			
		||||
 | 
			
		||||
Export('env')
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#######################################################################
 | 
			
		||||
# Invoke SConscripts
 | 
			
		||||
 | 
			
		||||
@@ -139,22 +162,6 @@ Export('env')
 | 
			
		||||
 | 
			
		||||
SConscript(
 | 
			
		||||
	'src/SConscript',
 | 
			
		||||
	variant_dir = env['build_dir'],
 | 
			
		||||
	variant_dir = env['build'],
 | 
			
		||||
	duplicate = 0 # http://www.scons.org/doc/0.97/HTML/scons-user/x2261.html
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
########################################################################
 | 
			
		||||
# List all aliases
 | 
			
		||||
 | 
			
		||||
try:
 | 
			
		||||
    from SCons.Node.Alias import default_ans
 | 
			
		||||
except ImportError:
 | 
			
		||||
    pass
 | 
			
		||||
else:
 | 
			
		||||
    aliases = default_ans.keys()
 | 
			
		||||
    aliases.sort()
 | 
			
		||||
    env.Help('\n')
 | 
			
		||||
    env.Help('Recognized targets:\n')
 | 
			
		||||
    for alias in aliases:
 | 
			
		||||
        env.Help('    %s\n' % alias)
 | 
			
		||||
 
 | 
			
		||||
@@ -1,20 +0,0 @@
 | 
			
		||||
#!/bin/sh
 | 
			
		||||
if [ ! -f src/mesa/main/git_sha1.h ]; then
 | 
			
		||||
	touch src/mesa/main/git_sha1.h
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if [ ! -d .git ]; then
 | 
			
		||||
	exit
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if which git > /dev/null; then
 | 
			
		||||
    # Extract the 7-digit "short" SHA1 for the current HEAD, convert
 | 
			
		||||
    # it to a string, and wrap it in a #define.  This is used in
 | 
			
		||||
    # src/mesa/main/version.c to put the GIT SHA1 in the GL_VERSION string.
 | 
			
		||||
    git log -n 1 --oneline |\
 | 
			
		||||
	sed 's/^\([^ ]*\) .*/#define MESA_GIT_SHA1 "git-\1"/' \
 | 
			
		||||
	> src/mesa/main/git_sha1.h.tmp
 | 
			
		||||
    if ! cmp -s src/mesa/main/git_sha1.h.tmp src/mesa/main/git_sha1.h; then
 | 
			
		||||
    	mv src/mesa/main/git_sha1.h.tmp src/mesa/main/git_sha1.h
 | 
			
		||||
    fi
 | 
			
		||||
fi
 | 
			
		||||
							
								
								
									
										21
									
								
								bin/minstall
									
									
									
									
									
								
							
							
						
						
									
										21
									
								
								bin/minstall
									
									
									
									
									
								
							@@ -31,7 +31,7 @@ if [ $# -ge 2 ] ; then
 | 
			
		||||
 | 
			
		||||
	# Last cmd line arg is the dest dir
 | 
			
		||||
	for FILE in $@ ; do
 | 
			
		||||
		DESTDIR="$FILE"
 | 
			
		||||
		DEST="$FILE"
 | 
			
		||||
	done
 | 
			
		||||
 | 
			
		||||
	# Loop over args, moving them to DEST directory
 | 
			
		||||
@@ -42,25 +42,6 @@ if [ $# -ge 2 ] ; then
 | 
			
		||||
			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
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										336
									
								
								bin/mklib
									
									
									
									
									
								
							
							
						
						
									
										336
									
								
								bin/mklib
									
									
									
									
									
								
							@@ -25,109 +25,6 @@
 | 
			
		||||
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Clear CDPATH as the 'cd' command will echo stuff
 | 
			
		||||
# to stdout if it is set
 | 
			
		||||
unset CDPATH
 | 
			
		||||
 | 
			
		||||
# Given a list of files, look for .a archives and unpack them.
 | 
			
		||||
# Return the original list of files minus the .a files plus the unpacked files.
 | 
			
		||||
# first param:  name of a temp directory (to be deleted when finished)
 | 
			
		||||
# remaining params:  list of .o and .a files
 | 
			
		||||
expand_archives() {
 | 
			
		||||
    DIR=$1
 | 
			
		||||
    shift
 | 
			
		||||
    FILES=$@
 | 
			
		||||
    NEWFILES=""
 | 
			
		||||
    ORIG_DIR=`pwd`
 | 
			
		||||
    mkdir -p "$DIR"
 | 
			
		||||
    cd "$DIR"
 | 
			
		||||
    for FILE in $FILES ; do
 | 
			
		||||
        case $FILE in
 | 
			
		||||
            *.a)
 | 
			
		||||
                # extract the .o files from this .a archive
 | 
			
		||||
                case $FILE in
 | 
			
		||||
                    /*) ;;
 | 
			
		||||
                    *)  FILE="$ORIG_DIR/$FILE" ;;
 | 
			
		||||
                esac
 | 
			
		||||
                MEMBERS=`ar t $FILE`
 | 
			
		||||
                ar x $FILE
 | 
			
		||||
                for MEMBER in $MEMBERS ; do
 | 
			
		||||
                    NEWFILES="$NEWFILES $DIR/$MEMBER"
 | 
			
		||||
                done
 | 
			
		||||
                ;;
 | 
			
		||||
            *)
 | 
			
		||||
                # other file type, just add to list
 | 
			
		||||
                NEWFILES="$NEWFILES $FILE"
 | 
			
		||||
                ;;
 | 
			
		||||
        esac
 | 
			
		||||
    done
 | 
			
		||||
    cd "$ORIG_DIR"
 | 
			
		||||
    echo $NEWFILES
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Make static library with 'ar'
 | 
			
		||||
# params:
 | 
			
		||||
#    options to ar
 | 
			
		||||
#    1 or 0 to indicate if ranlib should be run
 | 
			
		||||
#    libname to make
 | 
			
		||||
#    list of object files
 | 
			
		||||
# Return name of library we made
 | 
			
		||||
# Example: "make_ar_static_lib -ru 1 libfoo.a foo.o bar.o"
 | 
			
		||||
make_ar_static_lib() {
 | 
			
		||||
    OPTS=$1
 | 
			
		||||
    shift;
 | 
			
		||||
    RANLIB=$1
 | 
			
		||||
    shift;
 | 
			
		||||
    LIBNAME=$1
 | 
			
		||||
    shift;
 | 
			
		||||
    OBJECTS=$@
 | 
			
		||||
 | 
			
		||||
    # remove existing lib, if present
 | 
			
		||||
    rm -f ${LIBNAME}
 | 
			
		||||
 | 
			
		||||
    # make static lib
 | 
			
		||||
    ar ${OPTS} ${LIBNAME} ${OBJECTS}
 | 
			
		||||
 | 
			
		||||
    # run ranlib
 | 
			
		||||
    if [ ${RANLIB} = 1 ] ; then
 | 
			
		||||
        ranlib ${LIBNAME}
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    echo ${LIBNAME}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Print usage info.
 | 
			
		||||
usage() {
 | 
			
		||||
    echo 'Usage: mklib [options] objects'
 | 
			
		||||
    echo 'Create a shared library from object files.'
 | 
			
		||||
    echo '  -o LIBRARY    specifies the name of the resulting library, without'
 | 
			
		||||
    echo '                the leading "lib" or any suffix.'
 | 
			
		||||
    echo '                (eg: "-o GL" might result in "libGL.so" being made)'
 | 
			
		||||
    echo '  -major N      specifies major version number (default is 1)'
 | 
			
		||||
    echo '  -minor N      specifies minor version number (default is 0)'
 | 
			
		||||
    echo '  -patch N      specifies patch version number (default is 0)'
 | 
			
		||||
    echo '  -lLIBRARY     specifies a dependency on LIBRARY'
 | 
			
		||||
    echo '  -LDIR         search in DIR for library dependencies at build time'
 | 
			
		||||
    echo '  -RDIR         search in DIR for library dependencies at run time'
 | 
			
		||||
    echo '  -linker L     explicity specify the linker program to use (eg: gcc, g++)'
 | 
			
		||||
    echo '                Not observed on all systems at this time.'
 | 
			
		||||
    echo '  -ldflags OPT  specify any additional linker flags in OPT'
 | 
			
		||||
    echo '  -cplusplus    link with C++ runtime'
 | 
			
		||||
    echo '  -static       make a static library (default is dynamic/shared)'
 | 
			
		||||
    echo '  -dlopen       make a shared library suitable for dynamic loading'
 | 
			
		||||
    echo '  -install DIR  put resulting library file(s) in DIR'
 | 
			
		||||
    echo '  -arch ARCH    override using `uname` to determine host system'
 | 
			
		||||
    echo '  -archopt OPT  specify an extra achitecture-specific option OPT'
 | 
			
		||||
    echo '  -altopts OPTS alternate options to override all others'
 | 
			
		||||
    echo "  -noprefix     don't prefix library name with 'lib' nor add any suffix"
 | 
			
		||||
    echo '  -exports FILE only export the symbols listed in FILE'
 | 
			
		||||
    echo '  -id NAME      Sets the id of the dylib (Darwin)'
 | 
			
		||||
    echo '  -h, --help    display this information and exit'
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#
 | 
			
		||||
# Option defaults
 | 
			
		||||
#
 | 
			
		||||
@@ -155,7 +52,31 @@ while true
 | 
			
		||||
do
 | 
			
		||||
    case $1 in
 | 
			
		||||
	'-h' | '--help')
 | 
			
		||||
	    usage
 | 
			
		||||
	    echo 'Usage: mklib [options] objects'
 | 
			
		||||
	    echo 'Create a shared library from object files.'
 | 
			
		||||
	    echo '  -o LIBRARY    specifies the name of the resulting library, without'
 | 
			
		||||
	    echo '                the leading "lib" or any suffix.'
 | 
			
		||||
	    echo '                (eg: "-o GL" might result in "libGL.so" being made)'
 | 
			
		||||
	    echo '  -major N      specifies major version number (default is 1)'
 | 
			
		||||
	    echo '  -minor N      specifies minor version number (default is 0)'
 | 
			
		||||
	    echo '  -patch N      specifies patch version number (default is 0)'
 | 
			
		||||
	    echo '  -lLIBRARY     specifies a dependency on LIBRARY'
 | 
			
		||||
	    echo '  -LDIR         search in DIR for library dependencies at build time'
 | 
			
		||||
	    echo '  -RDIR         search in DIR for library dependencies at run time'
 | 
			
		||||
	    echo '  -linker L     explicity specify the linker program to use (eg: gcc, g++)'
 | 
			
		||||
	    echo '                Not observed on all systems at this time.'
 | 
			
		||||
	    echo '  -ldflags OPT  specify any additional linker flags in OPT'
 | 
			
		||||
	    echo '  -cplusplus    link with C++ runtime'
 | 
			
		||||
	    echo '  -static       make a static library (default is dynamic/shared)'
 | 
			
		||||
	    echo '  -dlopen       make a shared library suitable for dynamic loading'
 | 
			
		||||
	    echo '  -install DIR  put resulting library file(s) in DIR'
 | 
			
		||||
	    echo '  -arch ARCH    override using `uname` to determine host system'
 | 
			
		||||
	    echo '  -archopt OPT  specify an extra achitecture-specific option OPT'
 | 
			
		||||
	    echo '  -altopts OPTS alternate options to override all others'
 | 
			
		||||
	    echo "  -noprefix     don't prefix library name with 'lib' nor add any suffix"
 | 
			
		||||
	    echo '  -exports FILE only export the symbols listed in FILE'
 | 
			
		||||
	    echo '  -id NAME      Sets the id of the dylib (Darwin)'
 | 
			
		||||
	    echo '  -h, --help    display this information and exit'
 | 
			
		||||
	    exit 1
 | 
			
		||||
	    ;;
 | 
			
		||||
	'-o')
 | 
			
		||||
@@ -276,11 +197,11 @@ fi
 | 
			
		||||
# Error checking
 | 
			
		||||
#
 | 
			
		||||
if [ "x${LIBNAME}" = "x" ] ; then
 | 
			
		||||
    echo "mklib: Error: no library name specified (-h for help)"
 | 
			
		||||
    echo "mklib: Error: no library name specified"
 | 
			
		||||
    exit 1
 | 
			
		||||
fi
 | 
			
		||||
if [ "x${OBJECTS}" = "x" ] ; then
 | 
			
		||||
    echo "mklib: Error: no object files specified (-h for help)"
 | 
			
		||||
    echo "mklib: Error: no object files specified"
 | 
			
		||||
    exit 1
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
@@ -307,7 +228,7 @@ fi
 | 
			
		||||
#
 | 
			
		||||
case $ARCH in
 | 
			
		||||
 | 
			
		||||
    'Linux' | 'OpenBSD' | 'DragonFly' | 'GNU' | GNU/* | 'NetBSD')
 | 
			
		||||
    'Linux' | 'OpenBSD' | 'DragonFly' | 'GNU' | GNU/*)
 | 
			
		||||
	# we assume gcc
 | 
			
		||||
 | 
			
		||||
	if [ "x$LINK" = "x" ] ; then
 | 
			
		||||
@@ -348,24 +269,45 @@ case $ARCH in
 | 
			
		||||
            # finish up
 | 
			
		||||
            FINAL_LIBS="${LIBNAME}"
 | 
			
		||||
        elif [ $STATIC = 1 ] ; then
 | 
			
		||||
	    # make a static .a library
 | 
			
		||||
            LIBNAME="lib${LIBNAME}.a"     # prefix with "lib", suffix with ".a"
 | 
			
		||||
            echo "mklib: Making" $ARCH "static library: " ${LIBNAME}
 | 
			
		||||
            LINK="ar"
 | 
			
		||||
            OPTS="-ru"
 | 
			
		||||
            if [ "${ALTOPTS}" ] ; then
 | 
			
		||||
                OPTS=${ALTOPTS}
 | 
			
		||||
            fi
 | 
			
		||||
            rm -f ${LIBNAME}
 | 
			
		||||
 | 
			
		||||
	    # expand .a into .o files
 | 
			
		||||
	    NEW_OBJECTS=`expand_archives ${LIBNAME}.obj $OBJECTS`
 | 
			
		||||
	    # expand any .a objects into constituent .o files.
 | 
			
		||||
	    NEWOBJECTS=""
 | 
			
		||||
	    DELETIA=""
 | 
			
		||||
	    for OBJ in $OBJECTS ; do
 | 
			
		||||
		case $OBJ in
 | 
			
		||||
		    *.a)
 | 
			
		||||
			# extract the .o files from this .a archive
 | 
			
		||||
			FILES=`ar t $OBJ`
 | 
			
		||||
			ar x $OBJ
 | 
			
		||||
			NEWOBJECTS="$NEWOBJECTS $FILES"
 | 
			
		||||
			# keep track of temporary .o files and delete them below
 | 
			
		||||
			DELETIA="$DELETIA $FILES"
 | 
			
		||||
			;;
 | 
			
		||||
		    *)
 | 
			
		||||
			# ordinary .o file
 | 
			
		||||
			NEWOBJECTS="$NEWOBJECTS $OBJ"
 | 
			
		||||
			;;
 | 
			
		||||
		esac
 | 
			
		||||
	    done
 | 
			
		||||
 | 
			
		||||
            # make static lib
 | 
			
		||||
	    FINAL_LIBS=`make_ar_static_lib ${OPTS} 1 ${LIBNAME} ${NEW_OBJECTS}`
 | 
			
		||||
            # make lib
 | 
			
		||||
            ${LINK} ${OPTS} ${LIBNAME} ${NEWOBJECTS}
 | 
			
		||||
            ranlib ${LIBNAME}
 | 
			
		||||
 | 
			
		||||
	    # remove temporary extracted .o files
 | 
			
		||||
	    rm -rf ${LIBNAME}.obj
 | 
			
		||||
	    rm -f ${DELETIA}
 | 
			
		||||
 | 
			
		||||
            # finish up
 | 
			
		||||
            FINAL_LIBS=${LIBNAME}
 | 
			
		||||
        else
 | 
			
		||||
	    # make dynamic library
 | 
			
		||||
	    LIBNAME="lib${LIBNAME}"     # prefix with "lib"
 | 
			
		||||
	    case $ARCH in 'Linux' | 'GNU' | GNU/*)
 | 
			
		||||
		OPTS="-Xlinker -Bsymbolic -shared -Wl,-soname,${LIBNAME}.so.${MAJOR}"
 | 
			
		||||
@@ -426,7 +368,9 @@ case $ARCH in
 | 
			
		||||
        if [ $STATIC = 1 ] ; then
 | 
			
		||||
	    LIBNAME="lib${LIBNAME}.a"
 | 
			
		||||
	    echo "mklib: Making SunOS static library: " ${LIBNAME}
 | 
			
		||||
	    FINAL_LIBS=`make_ar_static_lib -ruc 0 ${LIBNAME} ${OBJECTS}`
 | 
			
		||||
	    rm -f ${LIBNAME}
 | 
			
		||||
	    ar -ruv ${LIBNAME} ${OBJECTS}
 | 
			
		||||
	    FINAL_LIBS=${LIBNAME}
 | 
			
		||||
	else
 | 
			
		||||
	    if [ $NOPREFIX = 0 ] ; then
 | 
			
		||||
		LIBNAME="lib${LIBNAME}.so"
 | 
			
		||||
@@ -494,16 +438,13 @@ case $ARCH in
 | 
			
		||||
		OPTS="${OPTS} -Wl,-Mmapfile.scope"
 | 
			
		||||
	    fi
 | 
			
		||||
 | 
			
		||||
	    # Check if objects are 64-bit
 | 
			
		||||
	    # Check if objects are SPARC v9
 | 
			
		||||
	    # file says: ELF 64-bit MSB relocatable SPARCV9 Version 1
 | 
			
		||||
	    set ${OBJECTS}
 | 
			
		||||
	    if [ ${LINK} = "cc" -o ${LINK} = "CC" ] ; then
 | 
			
		||||
		ABI64=`file $1 | grep "ELF 64-bit"`
 | 
			
		||||
		if [ "${ABI64}" ] ; then
 | 
			
		||||
		    case `uname -p` in
 | 
			
		||||
			sparc)	    OPTS="${OPTS} -xarch=v9" ;;
 | 
			
		||||
			i386)	    OPTS="${OPTS} -xarch=amd64" ;;
 | 
			
		||||
		    esac
 | 
			
		||||
		SPARCV9=`file $1 | grep SPARCV9`
 | 
			
		||||
		if [ "${SPARCV9}" ] ; then
 | 
			
		||||
		    OPTS="${OPTS} -xarch=v9"
 | 
			
		||||
		fi
 | 
			
		||||
	    fi
 | 
			
		||||
            if [ "${ALTOPTS}" ] ; then
 | 
			
		||||
@@ -548,19 +489,13 @@ case $ARCH in
 | 
			
		||||
	    ${LINK} ${OPTS} ${LDFLAGS} -o ${LIBNAME} ${OBJECTS} ${DEPS}
 | 
			
		||||
	    FINAL_LIBS=${LIBNAME}
 | 
			
		||||
        elif [ $STATIC = 1 ] ; then
 | 
			
		||||
	    # make a static .a library
 | 
			
		||||
	    STLIB="lib${LIBNAME}.a"
 | 
			
		||||
	    echo "mklib: Making FreeBSD static library: " ${STLIB}
 | 
			
		||||
 | 
			
		||||
	    # expand .a into .o files
 | 
			
		||||
	    NEW_OBJECTS=`expand_archives ${STLIB}.obj $OBJECTS`
 | 
			
		||||
 | 
			
		||||
	    FINAL_LIBS=`make_ar_static_lib cq 1 ${STLIB} ${NEW_OBJECTS}`
 | 
			
		||||
 | 
			
		||||
	    # remove temporary extracted .o files
 | 
			
		||||
	    rm -rf ${STLIB}.obj
 | 
			
		||||
	    rm -f ${STLIB}
 | 
			
		||||
	    ar cq ${STLIB} ${OBJECTS}
 | 
			
		||||
	    ranlib ${STLIB}
 | 
			
		||||
	    FINAL_LIBS=${STLIB}
 | 
			
		||||
	else
 | 
			
		||||
	    # make dynamic library
 | 
			
		||||
	    SHLIB="lib${LIBNAME}.so.${MAJOR}"
 | 
			
		||||
	    OPTS="-shared -Wl,-soname,${SHLIB}"
 | 
			
		||||
            if [ "${ALTOPTS}" ] ; then
 | 
			
		||||
@@ -574,10 +509,29 @@ case $ARCH in
 | 
			
		||||
	fi
 | 
			
		||||
	;;
 | 
			
		||||
 | 
			
		||||
    'NetBSD')
 | 
			
		||||
        if [ $STATIC = 1 ] ; then
 | 
			
		||||
	    LIBNAME="lib${LIBNAME}_pic.a"
 | 
			
		||||
	    echo "mklib: Making NetBSD PIC static library: " ${LIBNAME}
 | 
			
		||||
	    rm -f ${LIBNAME}
 | 
			
		||||
	    ar cq ${LIBNAME} ${OBJECTS}
 | 
			
		||||
	    ranlib ${LIBNAME}
 | 
			
		||||
	    FINAL_LIBS=${LIBNAME}
 | 
			
		||||
	else
 | 
			
		||||
	    LIBNAME="lib${LIBNAME}.so.${MAJOR}.${MINOR}"
 | 
			
		||||
	    echo "mklib: Making NetBSD PIC shared library: " ${LIBNAME}
 | 
			
		||||
	    rm -f ${LIBNAME}
 | 
			
		||||
	    ld -x -Bshareable -Bforcearchive -o ${LIBNAME} ${OBJECTS}
 | 
			
		||||
	    FINAL_LIBS=${LIBNAME}
 | 
			
		||||
	fi
 | 
			
		||||
	;;
 | 
			
		||||
 | 
			
		||||
    'IRIX' | 'IRIX64')
 | 
			
		||||
        if [ $STATIC = 1 ] ; then
 | 
			
		||||
	    LIBNAME="lib${LIBNAME}.a"
 | 
			
		||||
	    FINAL_LIBS=`make_ar_static_lib rc 0 ${LIBNAME} ${OBJECTS}`
 | 
			
		||||
	    rm -f ${LIBNAME}
 | 
			
		||||
	    ar rc ${LIBNAME} ${OBJECTS}
 | 
			
		||||
	    FINAL_LIBS=${LIBNAME}
 | 
			
		||||
	else
 | 
			
		||||
	    LIBNAME="lib${LIBNAME}.so"  # prefix with "lib", suffix with ".so"
 | 
			
		||||
 | 
			
		||||
@@ -628,7 +582,9 @@ case $ARCH in
 | 
			
		||||
        if [ $STATIC = 1 ] ; then
 | 
			
		||||
	    LIBNAME="lib${LIBNAME}.a"
 | 
			
		||||
	    echo "mklib: Making HP-UX static library: " ${LIBNAME}
 | 
			
		||||
    	    FINAL_LIBS=`make_ar_static_lib -ruv 0 ${LIBNAME} ${OBJECTS}`
 | 
			
		||||
	    rm -f ${LIBNAME}
 | 
			
		||||
	    ar -ruv ${LIBNAME} ${OBJECTS}
 | 
			
		||||
	    FINAL_LIBS=${LIBNAME}
 | 
			
		||||
	else
 | 
			
		||||
            # HP uses a .2 for their current GL/GLU libraries
 | 
			
		||||
	    if [ ${LIBNAME} = "GL" -o ${LIBNAME} = "GLU" ] ; then
 | 
			
		||||
@@ -658,7 +614,8 @@ case $ARCH in
 | 
			
		||||
	if [ $STATIC = 1 ] ; then
 | 
			
		||||
	    LIBNAME="lib${LIBNAME}.a"
 | 
			
		||||
	    echo "mklib: Making AIX static library: " ${LIBNAME}
 | 
			
		||||
    	    FINAL_LIBS=`make_ar_static_lib -ruv 0 ${LIBNAME} ${OBJECTS}`
 | 
			
		||||
	    ar -ruv ${X64} ${LIBNAME} ${OBJECTS}
 | 
			
		||||
	    FINAL_LIBS=${LIBNAME}
 | 
			
		||||
	else
 | 
			
		||||
	    EXPFILE="lib${LIBNAME}.exp"
 | 
			
		||||
	    LIBNAME="lib${LIBNAME}.a"  # shared objects are still stored in the .a libraries
 | 
			
		||||
@@ -709,7 +666,9 @@ case $ARCH in
 | 
			
		||||
        if [ $STATIC = 1 ] ; then
 | 
			
		||||
	    LIBNAME="lib${LIBNAME}.a"
 | 
			
		||||
	    echo "mklib: Making OSF/1 static library: " ${LIBNAME}
 | 
			
		||||
    	    FINAL_LIBS=`make_ar_static_lib -ruv 0 ${LIBNAME} ${OBJECTS}`
 | 
			
		||||
	    rm -f ${LIBNAME}
 | 
			
		||||
	    ar -ruv ${LIBNAME} ${OBJECTS}
 | 
			
		||||
	    FINAL_LIBS=${LIBNAME}
 | 
			
		||||
	else
 | 
			
		||||
	    VERSION="${MAJOR}.${MINOR}"
 | 
			
		||||
	    LIBNAME="lib${LIBNAME}.so"
 | 
			
		||||
@@ -732,20 +691,12 @@ case $ARCH in
 | 
			
		||||
        if [ $STATIC = 1 ] ; then
 | 
			
		||||
            LIBNAME="lib${LIBNAME}.a"
 | 
			
		||||
            echo "mklib: Making Darwin static library: " ${LIBNAME}
 | 
			
		||||
            LINK="ar"
 | 
			
		||||
            OPTS="-ruvs"
 | 
			
		||||
            if [ "${ALTOPTS}" ] ; then
 | 
			
		||||
                OPTS=${ALTOPTS}
 | 
			
		||||
            fi
 | 
			
		||||
 | 
			
		||||
            # expand .a into .o files
 | 
			
		||||
            NEW_OBJECTS=`expand_archives ${LIBNAME}.obj $OBJECTS`
 | 
			
		||||
 | 
			
		||||
            # make static lib
 | 
			
		||||
            FINAL_LIBS=`make_ar_static_lib ${OPTS} 1 ${LIBNAME} ${NEW_OBJECTS}`
 | 
			
		||||
 | 
			
		||||
            # remove temporary extracted .o files
 | 
			
		||||
            rm -rf ${LIBNAME}.obj
 | 
			
		||||
 | 
			
		||||
            ${LINK} ${OPTS} ${LIBNAME} ${OBJECTS}
 | 
			
		||||
            FINAL_LIBS=${LIBNAME}
 | 
			
		||||
        else
 | 
			
		||||
            # On Darwin a .bundle is used for a library that you want to dlopen
 | 
			
		||||
@@ -767,20 +718,36 @@ case $ARCH in
 | 
			
		||||
                OPTS="${OPTS} -exported_symbols_list ${EXPORTS}"
 | 
			
		||||
            fi
 | 
			
		||||
 | 
			
		||||
            LINKNAME="lib${LIBNAME}.${LIBSUFFIX}"
 | 
			
		||||
            LIBNAME="lib${LIBNAME}.${MAJOR}.${LIBSUFFIX}"
 | 
			
		||||
            LINKNAME="lib${LIBNAME}.${MAJOR}.${LIBSUFFIX}"
 | 
			
		||||
            LINKNAME2="lib${LIBNAME}.${LIBSUFFIX}"
 | 
			
		||||
            LIBNAME="lib${LIBNAME}.${MAJOR}.${MINOR}.${LIBSUFFIX}"
 | 
			
		||||
 | 
			
		||||
	    # examine first object to determine ABI
 | 
			
		||||
    	    set ${OBJECTS}
 | 
			
		||||
            ABIS=`lipo -info $1 | sed s/.*://`
 | 
			
		||||
            for ABI in $ABIS; do
 | 
			
		||||
                OPTS="${OPTS} -arch ${ABI}"
 | 
			
		||||
            done
 | 
			
		||||
            ABI_PPC=`file $1 | grep ' ppc'`
 | 
			
		||||
            ABI_I386=`file $1 | grep ' i386'`
 | 
			
		||||
            ABI_PPC64=`file $1 | grep ' ppc64'`
 | 
			
		||||
            ABI_X86_64=`file $1 | grep ' x86_64'`
 | 
			
		||||
            if [ "${ABI_PPC}" ] ; then
 | 
			
		||||
                OPTS="${OPTS} -arch ppc"
 | 
			
		||||
            fi
 | 
			
		||||
            if [ "${ABI_I386}" ] ; then
 | 
			
		||||
                OPTS="${OPTS} -arch i386"
 | 
			
		||||
            fi
 | 
			
		||||
            if [ "${ABI_PPC64}" ] ; then
 | 
			
		||||
                OPTS="${OPTS} -arch ppc64"
 | 
			
		||||
            fi
 | 
			
		||||
            if [ "${ABI_X86_64}" ] ; then
 | 
			
		||||
                OPTS="${OPTS} -arch x86_64"
 | 
			
		||||
            fi
 | 
			
		||||
 | 
			
		||||
            if [ "${ALTOPTS}" ] ; then
 | 
			
		||||
                OPTS=${ALTOPTS}
 | 
			
		||||
            fi
 | 
			
		||||
 | 
			
		||||
	    # XXX can we always add -isysroot /Developer/SDKs/MacOSX10.4u.sdk
 | 
			
		||||
	    # to OPTS here?
 | 
			
		||||
 | 
			
		||||
	    # determine linker
 | 
			
		||||
	    if [ $CPLUSPLUS = 1 ] ; then
 | 
			
		||||
		LINK="g++"
 | 
			
		||||
@@ -792,21 +759,24 @@ case $ARCH in
 | 
			
		||||
 | 
			
		||||
            ${LINK} ${OPTS} ${LDFLAGS} -o ${LIBNAME} ${OBJECTS} ${DEPS}
 | 
			
		||||
            ln -s ${LIBNAME} ${LINKNAME}
 | 
			
		||||
            FINAL_LIBS="${LIBNAME} ${LINKNAME}"
 | 
			
		||||
            ln -s ${LIBNAME} ${LINKNAME2}
 | 
			
		||||
            FINAL_LIBS="${LIBNAME} ${LINKNAME} ${LINKNAME2}"
 | 
			
		||||
        fi
 | 
			
		||||
        ;;
 | 
			
		||||
 | 
			
		||||
    'LynxOS')
 | 
			
		||||
	LIBNAME="lib${LIBNAME}.a"
 | 
			
		||||
	echo "mklib: Making LynxOS static library: " ${LIBNAME}
 | 
			
		||||
        FINAL_LIBS=`make_ar_static_lib -ru 0 ${LIBNAME} ${OBJECTS}`
 | 
			
		||||
	rm -f ${LIBNAME}
 | 
			
		||||
	ar ru ${LIBNAME} ${OBJECTS}
 | 
			
		||||
	FINAL_LIBS=${LIBNAME}
 | 
			
		||||
	;;
 | 
			
		||||
 | 
			
		||||
    'BeOS')
 | 
			
		||||
        if [ $STATIC = 1 ] ; then
 | 
			
		||||
            LIBNAME="lib${LIBNAME}.a"
 | 
			
		||||
            echo "mklib: Making BeOS static library: " ${LIBNAME}
 | 
			
		||||
            FINAL_LIBS=`make_ar_static_lib -cru 0 ${LIBNAME} ${OBJECTS}`
 | 
			
		||||
            ar -cru "${LIBNAME}" ${OBJECTS}
 | 
			
		||||
        else
 | 
			
		||||
	    LIBNAME="lib${LIBNAME}.so"
 | 
			
		||||
	    echo "mklib: Making BeOS shared library: " ${LIBNAME}
 | 
			
		||||
@@ -885,7 +855,9 @@ case $ARCH in
 | 
			
		||||
        if [ $STATIC = 1 ] ; then
 | 
			
		||||
	    LIBNAME="lib${LIBNAME}.a"
 | 
			
		||||
	    echo "mklib: Making AIX GCC static library: " ${LIBNAME}
 | 
			
		||||
            FINAL_LIBS=`make_ar_static_lib ru 0 ${LIBNAME} ${OBJECTS}`
 | 
			
		||||
	    rm -f ${LIBNAME}
 | 
			
		||||
	    ar ru ${LIBNAME} ${OBJECTS}
 | 
			
		||||
	    FINAL_LIBS=${LIBNAME}
 | 
			
		||||
	else
 | 
			
		||||
	    LIBNAME="lib${LIBNAME}.so"  # prefix with "lib", suffix with ".so"
 | 
			
		||||
	    echo "mklib: Making AIX GCC shared library: " ${LIBNAME}
 | 
			
		||||
@@ -906,21 +878,13 @@ case $ARCH in
 | 
			
		||||
	fi
 | 
			
		||||
	LIBNAME="lib${LIBNAME}.a"
 | 
			
		||||
	echo "mklib: Making static library for Ultrix: " ${LIBNAME}
 | 
			
		||||
        FINAL_LIBS=`make_ar_static_lib ru 0 ${LIBNAME} ${OBJECTS}`
 | 
			
		||||
	rm -f ${LIBNAME}
 | 
			
		||||
	ar ru ${LIBNAME} ${OBJECTS}
 | 
			
		||||
	FINAL_LIBS="${LIBNAME}"
 | 
			
		||||
	;;
 | 
			
		||||
 | 
			
		||||
     CYGWIN*)
 | 
			
		||||
	# GCC-based environment
 | 
			
		||||
 | 
			
		||||
	if [ "x$LINK" = "x" ] ; then
 | 
			
		||||
	    # -linker was not specified so set default link command now
 | 
			
		||||
            if [ $CPLUSPLUS = 1 ] ; then
 | 
			
		||||
                LINK=g++
 | 
			
		||||
            else
 | 
			
		||||
                LINK=gcc
 | 
			
		||||
            fi
 | 
			
		||||
	fi
 | 
			
		||||
 | 
			
		||||
	if [ $NOPREFIX = 1 ] ; then
 | 
			
		||||
	    # No "lib" or ".so" part
 | 
			
		||||
	    echo "mklib: Making CYGWIN shared library: " ${LIBNAME}
 | 
			
		||||
@@ -929,33 +893,36 @@ case $ARCH in
 | 
			
		||||
                OPTS=${ALTOPTS}
 | 
			
		||||
            fi
 | 
			
		||||
	    rm -f ${LIBNAME}
 | 
			
		||||
	    ${LINK} ${OPTS} ${LDFLAGS} -o ${LIBNAME} ${OBJECTS} ${DEPS} || exit $?
 | 
			
		||||
	    ${LINK} ${OPTS} ${LDFLAGS} -o ${LIBNAME} ${OBJECTS} ${DEPS}
 | 
			
		||||
	    FINAL_LIBS=${LIBNAME}
 | 
			
		||||
        else
 | 
			
		||||
	CYGNAME="cyg${LIBNAME}"     # prefix with "cyg"
 | 
			
		||||
	LIBNAME="lib${LIBNAME}"     # prefix with "lib"
 | 
			
		||||
 | 
			
		||||
        if [ $STATIC = 1 ] ; then
 | 
			
		||||
	    LIBNAME=${LIBNAME}.a
 | 
			
		||||
            echo "mklib: Making CYGWIN static library: " ${LIBNAME}
 | 
			
		||||
            echo "mklib: Making" $ARCH "static library: " ${LIBNAME}.a
 | 
			
		||||
            LINK="ar"
 | 
			
		||||
            OPTS="-ru"
 | 
			
		||||
            if [ "${ALTOPTS}" ] ; then
 | 
			
		||||
                OPTS=${ALTOPTS}
 | 
			
		||||
            fi
 | 
			
		||||
 | 
			
		||||
            # expand .a into .o files
 | 
			
		||||
            NEW_OBJECTS=`expand_archives ${LIBNAME}.obj $OBJECTS`
 | 
			
		||||
 | 
			
		||||
            FINAL_LIBS=`make_ar_static_lib ${OPTS} 1 ${LIBNAME} ${NEW_OBJECTS}`
 | 
			
		||||
 | 
			
		||||
            # remove temporary extracted .o files
 | 
			
		||||
            rm -rf ${LIBNAME}.obj
 | 
			
		||||
            # make lib
 | 
			
		||||
            ${LINK} ${OPTS} ${LIBNAME}.a ${OBJECTS}
 | 
			
		||||
	    ranlib ${LIBNAME}.a
 | 
			
		||||
            # finish up
 | 
			
		||||
            FINAL_LIBS=${LIBNAME}.a
 | 
			
		||||
        else
 | 
			
		||||
	    OPTS="-shared -Wl,--enable-auto-image-base -Wl,-export-all -Wl,--out-implib=${LIBNAME}-${MAJOR}.dll.a"
 | 
			
		||||
            if [ "${ALTOPTS}" ] ; then
 | 
			
		||||
                OPTS=${ALTOPTS}
 | 
			
		||||
            fi
 | 
			
		||||
            echo "mklib: Making CYGWIN shared library: " ${CYGNAME}-${MAJOR}.dll
 | 
			
		||||
            echo "mklib: Making" $ARCH "shared library: " ${CYGNAME}-${MAJOR}.dll
 | 
			
		||||
 | 
			
		||||
            if [ $CPLUSPLUS = 1 ] ; then
 | 
			
		||||
                LINK="g++"
 | 
			
		||||
            else
 | 
			
		||||
                LINK="gcc"
 | 
			
		||||
            fi
 | 
			
		||||
 | 
			
		||||
            # rm any old libs
 | 
			
		||||
            rm -f ${CYGNAME}-${MAJOR}.dll
 | 
			
		||||
@@ -964,7 +931,7 @@ case $ARCH in
 | 
			
		||||
            rm -f ${LIBNAME}.a
 | 
			
		||||
 | 
			
		||||
            # make lib
 | 
			
		||||
            ${LINK} ${OPTS} ${LDFLAGS} -o ${CYGNAME}-${MAJOR}.dll ${OBJECTS} ${DEPS} || exit $?
 | 
			
		||||
            ${LINK} ${OPTS} ${LDFLAGS} -o ${CYGNAME}-${MAJOR}.dll ${OBJECTS} ${DEPS}
 | 
			
		||||
            # make usual symlinks
 | 
			
		||||
            ln -s ${LIBNAME}-${MAJOR}.dll.a ${LIBNAME}.dll.a
 | 
			
		||||
            # finish up
 | 
			
		||||
@@ -981,7 +948,9 @@ case $ARCH in
 | 
			
		||||
        if [ $STATIC = 1 ] ; then
 | 
			
		||||
	    LIBNAME="lib${LIBNAME}.a"
 | 
			
		||||
	    echo "mklib: Making static library for example arch: " ${LIBNAME}
 | 
			
		||||
            FINAL_LIBS=`make_ar_static_lib rv 0 ${LIBNAME} ${OBJECTS}`
 | 
			
		||||
	    rm -f ${LIBNAME}
 | 
			
		||||
	    ar rv ${LIBNAME} ${OBJECTS}
 | 
			
		||||
	    FINAL_LIBS="${LIBNAME}"
 | 
			
		||||
	else
 | 
			
		||||
	    LIBNAME="lib${LIBNAME}.so"  # prefix with "lib", suffix with ".so"
 | 
			
		||||
	    echo "mklib: Making shared library for example arch: " ${LIBNAME}
 | 
			
		||||
@@ -1004,9 +973,4 @@ if [ ${INSTALLDIR} != "." ] ; then
 | 
			
		||||
    echo "mklib: Installing" ${FINAL_LIBS} "in" ${INSTALLDIR}
 | 
			
		||||
    test -d ${INSTALLDIR} || mkdir -p ${INSTALLDIR}
 | 
			
		||||
    mv ${FINAL_LIBS} ${INSTALLDIR}/
 | 
			
		||||
 | 
			
		||||
    if [ "x${FINAL_BINS}" != "x" ] ; then
 | 
			
		||||
        echo "mklib: Installing" ${FINAL_BINS} "in" ${INSTALLDIR}
 | 
			
		||||
        mv ${FINAL_BINS} ${INSTALLDIR}/
 | 
			
		||||
    fi
 | 
			
		||||
fi
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										366
									
								
								bin/raw2png.py
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										366
									
								
								bin/raw2png.py
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,366 @@
 | 
			
		||||
#!/usr/bin/env python
 | 
			
		||||
##########################################################################
 | 
			
		||||
# 
 | 
			
		||||
# Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
 | 
			
		||||
# All Rights Reserved.
 | 
			
		||||
# 
 | 
			
		||||
# Permission is hereby granted, free of charge, to any person obtaining a
 | 
			
		||||
# copy of this software and associated documentation files (the
 | 
			
		||||
# "Software"), to deal in the Software without restriction, including
 | 
			
		||||
# without limitation the rights to use, copy, modify, merge, publish,
 | 
			
		||||
# distribute, sub license, and/or sell copies of the Software, and to
 | 
			
		||||
# permit persons to whom the Software is furnished to do so, subject to
 | 
			
		||||
# the following conditions:
 | 
			
		||||
# 
 | 
			
		||||
# The above copyright notice and this permission notice (including the
 | 
			
		||||
# next paragraph) shall be included in all copies or substantial portions
 | 
			
		||||
# of the Software.
 | 
			
		||||
# 
 | 
			
		||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
 | 
			
		||||
# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 | 
			
		||||
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
 | 
			
		||||
# IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR
 | 
			
		||||
# ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
 | 
			
		||||
# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
 | 
			
		||||
# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 | 
			
		||||
# 
 | 
			
		||||
##########################################################################
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
import os.path
 | 
			
		||||
import sys
 | 
			
		||||
import struct
 | 
			
		||||
import Image # http://www.pythonware.com/products/pil/
 | 
			
		||||
 | 
			
		||||
PIPE_FORMAT_LAYOUT_RGBAZS   = 0
 | 
			
		||||
PIPE_FORMAT_LAYOUT_YCBCR    = 1
 | 
			
		||||
PIPE_FORMAT_LAYOUT_DXT      = 2
 | 
			
		||||
PIPE_FORMAT_LAYOUT_MIXED    = 3
 | 
			
		||||
 | 
			
		||||
PIPE_FORMAT_COMP_R    = 0
 | 
			
		||||
PIPE_FORMAT_COMP_G    = 1
 | 
			
		||||
PIPE_FORMAT_COMP_B    = 2
 | 
			
		||||
PIPE_FORMAT_COMP_A    = 3
 | 
			
		||||
PIPE_FORMAT_COMP_0    = 4
 | 
			
		||||
PIPE_FORMAT_COMP_1    = 5
 | 
			
		||||
PIPE_FORMAT_COMP_Z    = 6
 | 
			
		||||
PIPE_FORMAT_COMP_S    = 7
 | 
			
		||||
 | 
			
		||||
PIPE_FORMAT_TYPE_UNKNOWN = 0
 | 
			
		||||
PIPE_FORMAT_TYPE_FLOAT   = 1
 | 
			
		||||
PIPE_FORMAT_TYPE_UNORM   = 2
 | 
			
		||||
PIPE_FORMAT_TYPE_SNORM   = 3
 | 
			
		||||
PIPE_FORMAT_TYPE_USCALED = 4
 | 
			
		||||
PIPE_FORMAT_TYPE_SSCALED = 5
 | 
			
		||||
PIPE_FORMAT_TYPE_SRGB    = 6
 | 
			
		||||
PIPE_FORMAT_TYPE_FIXED   = 7
 | 
			
		||||
 | 
			
		||||
def _PIPE_FORMAT_RGBAZS( SWZ, SIZEX, SIZEY, SIZEZ, SIZEW, EXP2, TYPE ):
 | 
			
		||||
   return ((PIPE_FORMAT_LAYOUT_RGBAZS << 0) |\
 | 
			
		||||
   ((SWZ) << 2) |\
 | 
			
		||||
   ((SIZEX) << 14) |\
 | 
			
		||||
   ((SIZEY) << 17) |\
 | 
			
		||||
   ((SIZEZ) << 20) |\
 | 
			
		||||
   ((SIZEW) << 23) |\
 | 
			
		||||
   ((EXP2) << 26) |\
 | 
			
		||||
   ((TYPE) << 29) )
 | 
			
		||||
 | 
			
		||||
def _PIPE_FORMAT_SWZ( SWZX, SWZY, SWZZ, SWZW ):
 | 
			
		||||
	return (((SWZX) << 0) | ((SWZY) << 3) | ((SWZZ) << 6) | ((SWZW) << 9))
 | 
			
		||||
 | 
			
		||||
def _PIPE_FORMAT_RGBAZS_1( SWZ, SIZEX, SIZEY, SIZEZ, SIZEW, TYPE ):
 | 
			
		||||
	return _PIPE_FORMAT_RGBAZS( SWZ, SIZEX, SIZEY, SIZEZ, SIZEW, 0, TYPE )
 | 
			
		||||
 | 
			
		||||
def _PIPE_FORMAT_RGBAZS_2( SWZ, SIZEX, SIZEY, SIZEZ, SIZEW, TYPE ):
 | 
			
		||||
    _PIPE_FORMAT_RGBAZS( SWZ, SIZEX, SIZEY, SIZEZ, SIZEW, 1, TYPE )
 | 
			
		||||
 | 
			
		||||
def _PIPE_FORMAT_RGBAZS_8( SWZ, SIZEX, SIZEY, SIZEZ, SIZEW, TYPE ):
 | 
			
		||||
	return _PIPE_FORMAT_RGBAZS( SWZ, SIZEX, SIZEY, SIZEZ, SIZEW, 3, TYPE )
 | 
			
		||||
 | 
			
		||||
def _PIPE_FORMAT_RGBAZS_64( SWZ, SIZEX, SIZEY, SIZEZ, SIZEW, TYPE ):
 | 
			
		||||
	return _PIPE_FORMAT_RGBAZS( SWZ, SIZEX, SIZEY, SIZEZ, SIZEW, 6, TYPE )
 | 
			
		||||
 | 
			
		||||
def _PIPE_FORMAT_MIXED( SWZ, SIZEX, SIZEY, SIZEZ, SIZEW, SIGNX, SIGNY, SIGNZ, SIGNW, NORMALIZED, SCALE8 ):
 | 
			
		||||
    return ((PIPE_FORMAT_LAYOUT_MIXED << 0) |\
 | 
			
		||||
    ((SWZ) << 2) |\
 | 
			
		||||
    ((SIZEX) << 14) |\
 | 
			
		||||
    ((SIZEY) << 17) |\
 | 
			
		||||
    ((SIZEZ) << 20) |\
 | 
			
		||||
    ((SIZEW) << 23) |\
 | 
			
		||||
    ((SIGNX) << 26) |\
 | 
			
		||||
    ((SIGNY) << 27) |\
 | 
			
		||||
    ((SIGNZ) << 28) |\
 | 
			
		||||
    ((SIGNW) << 29) |\
 | 
			
		||||
    ((NORMALIZED) << 30) |\
 | 
			
		||||
    ((SCALE8) << 31) )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
_PIPE_FORMAT_R001 = _PIPE_FORMAT_SWZ( PIPE_FORMAT_COMP_R, PIPE_FORMAT_COMP_0, PIPE_FORMAT_COMP_0, PIPE_FORMAT_COMP_1 )
 | 
			
		||||
_PIPE_FORMAT_RG01 = _PIPE_FORMAT_SWZ( PIPE_FORMAT_COMP_R, PIPE_FORMAT_COMP_G, PIPE_FORMAT_COMP_0, PIPE_FORMAT_COMP_1 )
 | 
			
		||||
_PIPE_FORMAT_RGB1 = _PIPE_FORMAT_SWZ( PIPE_FORMAT_COMP_R, PIPE_FORMAT_COMP_G, PIPE_FORMAT_COMP_B, PIPE_FORMAT_COMP_1 )
 | 
			
		||||
_PIPE_FORMAT_RGBA = _PIPE_FORMAT_SWZ( PIPE_FORMAT_COMP_R, PIPE_FORMAT_COMP_G, PIPE_FORMAT_COMP_B, PIPE_FORMAT_COMP_A )
 | 
			
		||||
_PIPE_FORMAT_ARGB = _PIPE_FORMAT_SWZ( PIPE_FORMAT_COMP_A, PIPE_FORMAT_COMP_R, PIPE_FORMAT_COMP_G, PIPE_FORMAT_COMP_B )
 | 
			
		||||
_PIPE_FORMAT_ABGR = _PIPE_FORMAT_SWZ( PIPE_FORMAT_COMP_A, PIPE_FORMAT_COMP_B, PIPE_FORMAT_COMP_G, PIPE_FORMAT_COMP_R )
 | 
			
		||||
_PIPE_FORMAT_BGRA = _PIPE_FORMAT_SWZ( PIPE_FORMAT_COMP_B, PIPE_FORMAT_COMP_G, PIPE_FORMAT_COMP_R, PIPE_FORMAT_COMP_A )
 | 
			
		||||
_PIPE_FORMAT_1RGB = _PIPE_FORMAT_SWZ( PIPE_FORMAT_COMP_1, PIPE_FORMAT_COMP_R, PIPE_FORMAT_COMP_G, PIPE_FORMAT_COMP_B )
 | 
			
		||||
_PIPE_FORMAT_1BGR = _PIPE_FORMAT_SWZ( PIPE_FORMAT_COMP_1, PIPE_FORMAT_COMP_B, PIPE_FORMAT_COMP_G, PIPE_FORMAT_COMP_R )
 | 
			
		||||
_PIPE_FORMAT_BGR1 = _PIPE_FORMAT_SWZ( PIPE_FORMAT_COMP_B, PIPE_FORMAT_COMP_G, PIPE_FORMAT_COMP_R, PIPE_FORMAT_COMP_1 )
 | 
			
		||||
_PIPE_FORMAT_0000 = _PIPE_FORMAT_SWZ( PIPE_FORMAT_COMP_0, PIPE_FORMAT_COMP_0, PIPE_FORMAT_COMP_0, PIPE_FORMAT_COMP_0 )
 | 
			
		||||
_PIPE_FORMAT_000R = _PIPE_FORMAT_SWZ( PIPE_FORMAT_COMP_0, PIPE_FORMAT_COMP_0, PIPE_FORMAT_COMP_0, PIPE_FORMAT_COMP_R )
 | 
			
		||||
_PIPE_FORMAT_RRR1 = _PIPE_FORMAT_SWZ( PIPE_FORMAT_COMP_R, PIPE_FORMAT_COMP_R, PIPE_FORMAT_COMP_R, PIPE_FORMAT_COMP_1 )
 | 
			
		||||
_PIPE_FORMAT_RRRR = _PIPE_FORMAT_SWZ( PIPE_FORMAT_COMP_R, PIPE_FORMAT_COMP_R, PIPE_FORMAT_COMP_R, PIPE_FORMAT_COMP_R )
 | 
			
		||||
_PIPE_FORMAT_RRRG = _PIPE_FORMAT_SWZ( PIPE_FORMAT_COMP_R, PIPE_FORMAT_COMP_R, PIPE_FORMAT_COMP_R, PIPE_FORMAT_COMP_G )
 | 
			
		||||
_PIPE_FORMAT_Z000 = _PIPE_FORMAT_SWZ( PIPE_FORMAT_COMP_Z, PIPE_FORMAT_COMP_0, PIPE_FORMAT_COMP_0, PIPE_FORMAT_COMP_0 )
 | 
			
		||||
_PIPE_FORMAT_0Z00 = _PIPE_FORMAT_SWZ( PIPE_FORMAT_COMP_0, PIPE_FORMAT_COMP_Z, PIPE_FORMAT_COMP_0, PIPE_FORMAT_COMP_0 )
 | 
			
		||||
_PIPE_FORMAT_SZ00 = _PIPE_FORMAT_SWZ( PIPE_FORMAT_COMP_S, PIPE_FORMAT_COMP_Z, PIPE_FORMAT_COMP_0, PIPE_FORMAT_COMP_0 )
 | 
			
		||||
_PIPE_FORMAT_ZS00 = _PIPE_FORMAT_SWZ( PIPE_FORMAT_COMP_Z, PIPE_FORMAT_COMP_S, PIPE_FORMAT_COMP_0, PIPE_FORMAT_COMP_0 )
 | 
			
		||||
_PIPE_FORMAT_S000 = _PIPE_FORMAT_SWZ( PIPE_FORMAT_COMP_S, PIPE_FORMAT_COMP_0, PIPE_FORMAT_COMP_0, PIPE_FORMAT_COMP_0 )
 | 
			
		||||
 | 
			
		||||
def _PIPE_FORMAT_YCBCR( REV ):
 | 
			
		||||
   return ((PIPE_FORMAT_LAYOUT_YCBCR << 0) |\
 | 
			
		||||
   ((REV) << 2) )
 | 
			
		||||
 | 
			
		||||
def _PIPE_FORMAT_DXT( LEVEL, RSIZE, GSIZE, BSIZE, ASIZE ):
 | 
			
		||||
    return ((PIPE_FORMAT_LAYOUT_DXT << 0) | \
 | 
			
		||||
    ((LEVEL) << 2) | \
 | 
			
		||||
    ((RSIZE) << 5) | \
 | 
			
		||||
    ((GSIZE) << 8) | \
 | 
			
		||||
    ((BSIZE) << 11) | \
 | 
			
		||||
    ((ASIZE) << 14) )
 | 
			
		||||
 | 
			
		||||
PIPE_FORMAT_NONE                  = _PIPE_FORMAT_RGBAZS_1 ( _PIPE_FORMAT_0000, 0, 0, 0, 0, PIPE_FORMAT_TYPE_UNKNOWN )
 | 
			
		||||
PIPE_FORMAT_A8R8G8B8_UNORM        = _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_ARGB, 1, 1, 1, 1, PIPE_FORMAT_TYPE_UNORM )
 | 
			
		||||
PIPE_FORMAT_X8R8G8B8_UNORM        = _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_1RGB, 1, 1, 1, 1, PIPE_FORMAT_TYPE_UNORM )
 | 
			
		||||
PIPE_FORMAT_B8G8R8A8_UNORM        = _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_BGRA, 1, 1, 1, 1, PIPE_FORMAT_TYPE_UNORM )
 | 
			
		||||
PIPE_FORMAT_B8G8R8X8_UNORM        = _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_BGR1, 1, 1, 1, 1, PIPE_FORMAT_TYPE_UNORM )
 | 
			
		||||
PIPE_FORMAT_A1R5G5B5_UNORM        = _PIPE_FORMAT_RGBAZS_1 ( _PIPE_FORMAT_ARGB, 1, 5, 5, 5, PIPE_FORMAT_TYPE_UNORM )
 | 
			
		||||
PIPE_FORMAT_A4R4G4B4_UNORM        = _PIPE_FORMAT_RGBAZS_1 ( _PIPE_FORMAT_ARGB, 4, 4, 4, 4, PIPE_FORMAT_TYPE_UNORM )
 | 
			
		||||
PIPE_FORMAT_R5G6B5_UNORM          = _PIPE_FORMAT_RGBAZS_1 ( _PIPE_FORMAT_RGB1, 5, 6, 5, 0, PIPE_FORMAT_TYPE_UNORM )
 | 
			
		||||
PIPE_FORMAT_A2B10G10R10_UNORM     = _PIPE_FORMAT_RGBAZS_2 ( _PIPE_FORMAT_ABGR, 1, 5, 5, 5, PIPE_FORMAT_TYPE_UNORM )
 | 
			
		||||
PIPE_FORMAT_L8_UNORM              = _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RRR1, 1, 1, 1, 0, PIPE_FORMAT_TYPE_UNORM )
 | 
			
		||||
PIPE_FORMAT_A8_UNORM              = _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_000R, 0, 0, 0, 1, PIPE_FORMAT_TYPE_UNORM )
 | 
			
		||||
PIPE_FORMAT_I8_UNORM              = _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RRRR, 1, 1, 1, 1, PIPE_FORMAT_TYPE_UNORM )
 | 
			
		||||
PIPE_FORMAT_A8L8_UNORM            = _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RRRG, 1, 1, 1, 1, PIPE_FORMAT_TYPE_UNORM )
 | 
			
		||||
PIPE_FORMAT_L16_UNORM             = _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RRR1, 2, 2, 2, 0, PIPE_FORMAT_TYPE_UNORM )
 | 
			
		||||
PIPE_FORMAT_YCBCR                 = _PIPE_FORMAT_YCBCR( 0 )
 | 
			
		||||
PIPE_FORMAT_YCBCR_REV             = _PIPE_FORMAT_YCBCR( 1 )
 | 
			
		||||
PIPE_FORMAT_Z16_UNORM             = _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_Z000, 2, 0, 0, 0, PIPE_FORMAT_TYPE_UNORM )
 | 
			
		||||
PIPE_FORMAT_Z32_UNORM             = _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_Z000, 4, 0, 0, 0, PIPE_FORMAT_TYPE_UNORM )
 | 
			
		||||
PIPE_FORMAT_Z32_FLOAT             = _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_Z000, 4, 0, 0, 0, PIPE_FORMAT_TYPE_FLOAT )
 | 
			
		||||
PIPE_FORMAT_S8Z24_UNORM           = _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_SZ00, 1, 3, 0, 0, PIPE_FORMAT_TYPE_UNORM )
 | 
			
		||||
PIPE_FORMAT_Z24S8_UNORM           = _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_ZS00, 3, 1, 0, 0, PIPE_FORMAT_TYPE_UNORM )
 | 
			
		||||
PIPE_FORMAT_X8Z24_UNORM           = _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_0Z00, 1, 3, 0, 0, PIPE_FORMAT_TYPE_UNORM )
 | 
			
		||||
PIPE_FORMAT_Z24X8_UNORM           = _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_Z000, 3, 1, 0, 0, PIPE_FORMAT_TYPE_UNORM )
 | 
			
		||||
PIPE_FORMAT_S8_UNORM              = _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_S000, 1, 0, 0, 0, PIPE_FORMAT_TYPE_UNORM )
 | 
			
		||||
PIPE_FORMAT_R64_FLOAT             = _PIPE_FORMAT_RGBAZS_64( _PIPE_FORMAT_R001, 1, 0, 0, 0, PIPE_FORMAT_TYPE_FLOAT )
 | 
			
		||||
PIPE_FORMAT_R64G64_FLOAT          = _PIPE_FORMAT_RGBAZS_64( _PIPE_FORMAT_RG01, 1, 1, 0, 0, PIPE_FORMAT_TYPE_FLOAT )
 | 
			
		||||
PIPE_FORMAT_R64G64B64_FLOAT       = _PIPE_FORMAT_RGBAZS_64( _PIPE_FORMAT_RGB1, 1, 1, 1, 0, PIPE_FORMAT_TYPE_FLOAT )
 | 
			
		||||
PIPE_FORMAT_R64G64B64A64_FLOAT    = _PIPE_FORMAT_RGBAZS_64( _PIPE_FORMAT_RGBA, 1, 1, 1, 1, PIPE_FORMAT_TYPE_FLOAT )
 | 
			
		||||
PIPE_FORMAT_R32_FLOAT             = _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_R001, 4, 0, 0, 0, PIPE_FORMAT_TYPE_FLOAT )
 | 
			
		||||
PIPE_FORMAT_R32G32_FLOAT          = _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RG01, 4, 4, 0, 0, PIPE_FORMAT_TYPE_FLOAT )
 | 
			
		||||
PIPE_FORMAT_R32G32B32_FLOAT       = _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RGB1, 4, 4, 4, 0, PIPE_FORMAT_TYPE_FLOAT )
 | 
			
		||||
PIPE_FORMAT_R32G32B32A32_FLOAT    = _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RGBA, 4, 4, 4, 4, PIPE_FORMAT_TYPE_FLOAT )
 | 
			
		||||
PIPE_FORMAT_R32_UNORM             = _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_R001, 4, 0, 0, 0, PIPE_FORMAT_TYPE_UNORM )
 | 
			
		||||
PIPE_FORMAT_R32G32_UNORM          = _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RG01, 4, 4, 0, 0, PIPE_FORMAT_TYPE_UNORM )
 | 
			
		||||
PIPE_FORMAT_R32G32B32_UNORM       = _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RGB1, 4, 4, 4, 0, PIPE_FORMAT_TYPE_UNORM )
 | 
			
		||||
PIPE_FORMAT_R32G32B32A32_UNORM    = _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RGBA, 4, 4, 4, 4, PIPE_FORMAT_TYPE_UNORM )
 | 
			
		||||
PIPE_FORMAT_R32_USCALED           = _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_R001, 4, 0, 0, 0, PIPE_FORMAT_TYPE_USCALED )
 | 
			
		||||
PIPE_FORMAT_R32G32_USCALED        = _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RG01, 4, 4, 0, 0, PIPE_FORMAT_TYPE_USCALED )
 | 
			
		||||
PIPE_FORMAT_R32G32B32_USCALED     = _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RGB1, 4, 4, 4, 0, PIPE_FORMAT_TYPE_USCALED )
 | 
			
		||||
PIPE_FORMAT_R32G32B32A32_USCALED  = _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RGBA, 4, 4, 4, 4, PIPE_FORMAT_TYPE_USCALED )
 | 
			
		||||
PIPE_FORMAT_R32_SNORM             = _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_R001, 4, 0, 0, 0, PIPE_FORMAT_TYPE_SNORM )
 | 
			
		||||
PIPE_FORMAT_R32G32_SNORM          = _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RG01, 4, 4, 0, 0, PIPE_FORMAT_TYPE_SNORM )
 | 
			
		||||
PIPE_FORMAT_R32G32B32_SNORM       = _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RGB1, 4, 4, 4, 0, PIPE_FORMAT_TYPE_SNORM )
 | 
			
		||||
PIPE_FORMAT_R32G32B32A32_SNORM    = _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RGBA, 4, 4, 4, 4, PIPE_FORMAT_TYPE_SNORM )
 | 
			
		||||
PIPE_FORMAT_R32_SSCALED           = _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_R001, 4, 0, 0, 0, PIPE_FORMAT_TYPE_SSCALED )
 | 
			
		||||
PIPE_FORMAT_R32G32_SSCALED        = _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RG01, 4, 4, 0, 0, PIPE_FORMAT_TYPE_SSCALED )
 | 
			
		||||
PIPE_FORMAT_R32G32B32_SSCALED     = _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RGB1, 4, 4, 4, 0, PIPE_FORMAT_TYPE_SSCALED )
 | 
			
		||||
PIPE_FORMAT_R32G32B32A32_SSCALED  = _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RGBA, 4, 4, 4, 4, PIPE_FORMAT_TYPE_SSCALED )
 | 
			
		||||
PIPE_FORMAT_R16_UNORM             = _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_R001, 2, 0, 0, 0, PIPE_FORMAT_TYPE_UNORM )
 | 
			
		||||
PIPE_FORMAT_R16G16_UNORM          = _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RG01, 2, 2, 0, 0, PIPE_FORMAT_TYPE_UNORM )
 | 
			
		||||
PIPE_FORMAT_R16G16B16_UNORM       = _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RGB1, 2, 2, 2, 0, PIPE_FORMAT_TYPE_UNORM )
 | 
			
		||||
PIPE_FORMAT_R16G16B16A16_UNORM    = _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RGBA, 2, 2, 2, 2, PIPE_FORMAT_TYPE_UNORM )
 | 
			
		||||
PIPE_FORMAT_R16_USCALED           = _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_R001, 2, 0, 0, 0, PIPE_FORMAT_TYPE_USCALED )
 | 
			
		||||
PIPE_FORMAT_R16G16_USCALED        = _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RG01, 2, 2, 0, 0, PIPE_FORMAT_TYPE_USCALED )
 | 
			
		||||
PIPE_FORMAT_R16G16B16_USCALED     = _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RGB1, 2, 2, 2, 0, PIPE_FORMAT_TYPE_USCALED )
 | 
			
		||||
PIPE_FORMAT_R16G16B16A16_USCALED  = _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RGBA, 2, 2, 2, 2, PIPE_FORMAT_TYPE_USCALED )
 | 
			
		||||
PIPE_FORMAT_R16_SNORM             = _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_R001, 2, 0, 0, 0, PIPE_FORMAT_TYPE_SNORM )
 | 
			
		||||
PIPE_FORMAT_R16G16_SNORM          = _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RG01, 2, 2, 0, 0, PIPE_FORMAT_TYPE_SNORM )
 | 
			
		||||
PIPE_FORMAT_R16G16B16_SNORM       = _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RGB1, 2, 2, 2, 0, PIPE_FORMAT_TYPE_SNORM )
 | 
			
		||||
PIPE_FORMAT_R16G16B16A16_SNORM    = _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RGBA, 2, 2, 2, 2, PIPE_FORMAT_TYPE_SNORM )
 | 
			
		||||
PIPE_FORMAT_R16_SSCALED           = _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_R001, 2, 0, 0, 0, PIPE_FORMAT_TYPE_SSCALED )
 | 
			
		||||
PIPE_FORMAT_R16G16_SSCALED        = _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RG01, 2, 2, 0, 0, PIPE_FORMAT_TYPE_SSCALED )
 | 
			
		||||
PIPE_FORMAT_R16G16B16_SSCALED     = _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RGB1, 2, 2, 2, 0, PIPE_FORMAT_TYPE_SSCALED )
 | 
			
		||||
PIPE_FORMAT_R16G16B16A16_SSCALED  = _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RGBA, 2, 2, 2, 2, PIPE_FORMAT_TYPE_SSCALED )
 | 
			
		||||
PIPE_FORMAT_R8_UNORM              = _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_R001, 1, 0, 0, 0, PIPE_FORMAT_TYPE_UNORM )
 | 
			
		||||
PIPE_FORMAT_R8G8_UNORM            = _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RG01, 1, 1, 0, 0, PIPE_FORMAT_TYPE_UNORM )
 | 
			
		||||
PIPE_FORMAT_R8G8B8_UNORM          = _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RGB1, 1, 1, 1, 0, PIPE_FORMAT_TYPE_UNORM )
 | 
			
		||||
PIPE_FORMAT_R8G8B8A8_UNORM        = _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RGBA, 1, 1, 1, 1, PIPE_FORMAT_TYPE_UNORM )
 | 
			
		||||
PIPE_FORMAT_R8G8B8X8_UNORM        = _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RGB1, 1, 1, 1, 1, PIPE_FORMAT_TYPE_UNORM )
 | 
			
		||||
PIPE_FORMAT_R8_USCALED            = _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_R001, 1, 0, 0, 0, PIPE_FORMAT_TYPE_USCALED )
 | 
			
		||||
PIPE_FORMAT_R8G8_USCALED          = _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RG01, 1, 1, 0, 0, PIPE_FORMAT_TYPE_USCALED )
 | 
			
		||||
PIPE_FORMAT_R8G8B8_USCALED        = _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RGB1, 1, 1, 1, 0, PIPE_FORMAT_TYPE_USCALED )
 | 
			
		||||
PIPE_FORMAT_R8G8B8A8_USCALED      = _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RGBA, 1, 1, 1, 1, PIPE_FORMAT_TYPE_USCALED )
 | 
			
		||||
PIPE_FORMAT_R8G8B8X8_USCALED      = _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RGB1, 1, 1, 1, 1, PIPE_FORMAT_TYPE_USCALED )
 | 
			
		||||
PIPE_FORMAT_R8_SNORM              = _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_R001, 1, 0, 0, 0, PIPE_FORMAT_TYPE_SNORM )
 | 
			
		||||
PIPE_FORMAT_R8G8_SNORM            = _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RG01, 1, 1, 0, 0, PIPE_FORMAT_TYPE_SNORM )
 | 
			
		||||
PIPE_FORMAT_R8G8B8_SNORM          = _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RGB1, 1, 1, 1, 0, PIPE_FORMAT_TYPE_SNORM )
 | 
			
		||||
PIPE_FORMAT_R8G8B8A8_SNORM        = _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RGBA, 1, 1, 1, 1, PIPE_FORMAT_TYPE_SNORM )
 | 
			
		||||
PIPE_FORMAT_R8G8B8X8_SNORM        = _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RGB1, 1, 1, 1, 1, PIPE_FORMAT_TYPE_SNORM )
 | 
			
		||||
PIPE_FORMAT_B6G5R5_SNORM          = _PIPE_FORMAT_RGBAZS_1 ( _PIPE_FORMAT_BGR1, 6, 5, 5, 0, PIPE_FORMAT_TYPE_SNORM )
 | 
			
		||||
PIPE_FORMAT_A8B8G8R8_SNORM        = _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_BGRA, 1, 1, 1, 1, PIPE_FORMAT_TYPE_SNORM )
 | 
			
		||||
PIPE_FORMAT_X8B8G8R8_SNORM        = _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RGB1, 1, 1, 1, 1, PIPE_FORMAT_TYPE_SNORM )
 | 
			
		||||
PIPE_FORMAT_R8_SSCALED            = _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_R001, 1, 0, 0, 0, PIPE_FORMAT_TYPE_SSCALED )
 | 
			
		||||
PIPE_FORMAT_R8G8_SSCALED          = _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RG01, 1, 1, 0, 0, PIPE_FORMAT_TYPE_SSCALED )
 | 
			
		||||
PIPE_FORMAT_R8G8B8_SSCALED        = _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RGB1, 1, 1, 1, 0, PIPE_FORMAT_TYPE_SSCALED )
 | 
			
		||||
PIPE_FORMAT_R8G8B8A8_SSCALED      = _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RGBA, 1, 1, 1, 1, PIPE_FORMAT_TYPE_SSCALED )
 | 
			
		||||
PIPE_FORMAT_R8G8B8X8_SSCALED      = _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RGB1, 1, 1, 1, 1, PIPE_FORMAT_TYPE_SSCALED )
 | 
			
		||||
PIPE_FORMAT_R32_FIXED             = _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_R001, 4, 0, 0, 0, PIPE_FORMAT_TYPE_FIXED )
 | 
			
		||||
PIPE_FORMAT_R32G32_FIXED          = _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RG01, 4, 4, 0, 0, PIPE_FORMAT_TYPE_FIXED )
 | 
			
		||||
PIPE_FORMAT_R32G32B32_FIXED       = _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RGB1, 4, 4, 4, 0, PIPE_FORMAT_TYPE_FIXED )
 | 
			
		||||
PIPE_FORMAT_R32G32B32A32_FIXED    = _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RGBA, 4, 4, 4, 4, PIPE_FORMAT_TYPE_FIXED )
 | 
			
		||||
PIPE_FORMAT_L8_SRGB               = _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RRR1, 1, 1, 1, 0, PIPE_FORMAT_TYPE_SRGB )
 | 
			
		||||
PIPE_FORMAT_A8_L8_SRGB            = _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RRRG, 1, 1, 1, 1, PIPE_FORMAT_TYPE_SRGB )
 | 
			
		||||
PIPE_FORMAT_R8G8B8_SRGB           = _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RGB1, 1, 1, 1, 0, PIPE_FORMAT_TYPE_SRGB )
 | 
			
		||||
PIPE_FORMAT_R8G8B8A8_SRGB         = _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RGBA, 1, 1, 1, 1, PIPE_FORMAT_TYPE_SRGB )
 | 
			
		||||
PIPE_FORMAT_R8G8B8X8_SRGB         = _PIPE_FORMAT_RGBAZS_8 ( _PIPE_FORMAT_RGB1, 1, 1, 1, 1, PIPE_FORMAT_TYPE_SRGB )
 | 
			
		||||
PIPE_FORMAT_X8UB8UG8SR8S_NORM     = _PIPE_FORMAT_MIXED( _PIPE_FORMAT_1BGR, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1 )
 | 
			
		||||
PIPE_FORMAT_B6UG5SR5S_NORM        = _PIPE_FORMAT_MIXED( _PIPE_FORMAT_BGR1, 6, 5, 5, 0, 0, 1, 1, 0, 1, 0 )
 | 
			
		||||
PIPE_FORMAT_DXT1_RGB              = _PIPE_FORMAT_DXT( 1, 8, 8, 8, 0 )
 | 
			
		||||
PIPE_FORMAT_DXT1_RGBA             = _PIPE_FORMAT_DXT( 1, 8, 8, 8, 8 )
 | 
			
		||||
PIPE_FORMAT_DXT3_RGBA             = _PIPE_FORMAT_DXT( 3, 8, 8, 8, 8 )
 | 
			
		||||
PIPE_FORMAT_DXT5_RGBA             = _PIPE_FORMAT_DXT( 5, 8, 8, 8, 8 )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
formats = {}
 | 
			
		||||
for name, value in globals().items():
 | 
			
		||||
    if name.startswith("PIPE_FORMAT_") and isinstance(value, int):
 | 
			
		||||
        formats[value] = name
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def clip(g):
 | 
			
		||||
	return min(max(g, 0), 255)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def yuv2rgb(y, u, v):
 | 
			
		||||
	C = y - 16
 | 
			
		||||
	D = u - 128
 | 
			
		||||
	E = v - 128
 | 
			
		||||
 | 
			
		||||
	r = clip(( 298 * C           + 409 * E + 128) >> 8)
 | 
			
		||||
	g = clip(( 298 * C - 100 * D - 208 * E + 128) >> 8)
 | 
			
		||||
	b = clip(( 298 * C + 516 * D           + 128) >> 8)
 | 
			
		||||
	
 | 
			
		||||
	return r, g, b
 | 
			
		||||
 | 
			
		||||
	
 | 
			
		||||
def translate_r5g6b5(data):
 | 
			
		||||
	value, = struct.unpack_from("H", data)
 | 
			
		||||
	r = ((value >> 11) & 0x1f)*0xff/0x1f
 | 
			
		||||
	g = ((value >>  5) & 0x3f)*0xff/0x3f
 | 
			
		||||
	b = ((value >>  0) & 0x1f)*0xff/0x1f
 | 
			
		||||
	a = 255
 | 
			
		||||
	return [[(r, g, b, a)]]
 | 
			
		||||
 | 
			
		||||
def translate_a8r8g8b8(data):
 | 
			
		||||
    b, g, r, a = struct.unpack_from("BBBB", data)
 | 
			
		||||
    return [[(r, g, b, a)]]
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def translate_x8r8g8b8(data):
 | 
			
		||||
    b, g, r, x = struct.unpack_from("BBBB", data)
 | 
			
		||||
    a = 255
 | 
			
		||||
    return [[(r, g, b, a)]]
 | 
			
		||||
 | 
			
		||||
def translate_r8g8b8a8(data):
 | 
			
		||||
	r, g, b, a = struct.unpack_from("BBBB", data)
 | 
			
		||||
	return [[(r, g, b, a)]]
 | 
			
		||||
 | 
			
		||||
def translate_ycbcr(data):
 | 
			
		||||
	y1, u, y2, v = struct.unpack_from("BBBB", data)
 | 
			
		||||
	r1, g1, b1 = yuv2rgb(y1, u, v)
 | 
			
		||||
	r2, g2, b2 = yuv2rgb(y1, u, v)
 | 
			
		||||
	return [[(r1, g1, b1, 255), (r2, g2, b2, 255)]]
 | 
			
		||||
 | 
			
		||||
def translate_ycbcr_rev(data):
 | 
			
		||||
    v, y2, u, y1 = struct.unpack_from("BBBB", data)
 | 
			
		||||
    r1, g1, b1 = yuv2rgb(y1, u, v)
 | 
			
		||||
    r2, g2, b2 = yuv2rgb(y1, u, v)
 | 
			
		||||
    return [[(r1, g1, b1, 255), (r2, g2, b2, 255)]]
 | 
			
		||||
 | 
			
		||||
def translate_x8z24(data):
 | 
			
		||||
    value, = struct.unpack_from("I", data)
 | 
			
		||||
    r = g = b = (value & 0xffffff)*0xff/0xffffff
 | 
			
		||||
    a = 255
 | 
			
		||||
    return [[(r, g, b, a)]]
 | 
			
		||||
 | 
			
		||||
def translate_s8z24(data):
 | 
			
		||||
    value, = struct.unpack_from("I", data)
 | 
			
		||||
    r = (value & 0xffffff)*0xff/0xffffff
 | 
			
		||||
    g = value >> 24
 | 
			
		||||
    b = 0
 | 
			
		||||
    a = 255
 | 
			
		||||
    return [[(r, g, b, a)]]
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
translate = {
 | 
			
		||||
	PIPE_FORMAT_A8R8G8B8_UNORM: (4, 1, 1, translate_a8r8g8b8),
 | 
			
		||||
	PIPE_FORMAT_X8R8G8B8_UNORM: (4, 1, 1, translate_x8r8g8b8),
 | 
			
		||||
	PIPE_FORMAT_B8G8R8A8_UNORM: (4, 1, 1, translate_r8g8b8a8),
 | 
			
		||||
	PIPE_FORMAT_B8G8R8X8_UNORM: (4, 1, 1, translate_r8g8b8a8),
 | 
			
		||||
	PIPE_FORMAT_A8B8G8R8_SNORM: (4, 1, 1, translate_r8g8b8a8),
 | 
			
		||||
	PIPE_FORMAT_R5G6B5_UNORM: (2, 1, 1, translate_r5g6b5),
 | 
			
		||||
	PIPE_FORMAT_YCBCR: (4, 2, 1, translate_ycbcr),
 | 
			
		||||
	PIPE_FORMAT_YCBCR_REV: (4, 2, 1, translate_ycbcr_rev),
 | 
			
		||||
    PIPE_FORMAT_S8Z24_UNORM: (4, 1, 1, translate_s8z24),
 | 
			
		||||
    PIPE_FORMAT_X8Z24_UNORM: (4, 1, 1, translate_x8z24),
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
def read_header(infile):
 | 
			
		||||
	header_fmt = "IIII"
 | 
			
		||||
	header = infile.read(struct.calcsize(header_fmt))
 | 
			
		||||
	return struct.unpack_from(header_fmt, header)
 | 
			
		||||
 | 
			
		||||
def process(infilename, outfilename):
 | 
			
		||||
	sys.stderr.write("%s -> %s\n" % (infilename, outfilename))
 | 
			
		||||
	infile = open(infilename, "rb")
 | 
			
		||||
	format, cpp, width, height = read_header(infile)
 | 
			
		||||
	sys.stderr.write("  %ux%ux%ubpp %s\n" % (width, height, cpp*8, formats[format]))
 | 
			
		||||
	outimage = Image.new(
 | 
			
		||||
	mode='RGB',
 | 
			
		||||
	size=(width, height),
 | 
			
		||||
	color=(0,0,0))
 | 
			
		||||
	outpixels = outimage.load()
 | 
			
		||||
	try:
 | 
			
		||||
		bsize, bwidth, bheight, translate_func = translate[format]
 | 
			
		||||
	except KeyError:
 | 
			
		||||
		sys.stderr.write('error: unsupported format %s\n' % formats[format])
 | 
			
		||||
		return
 | 
			
		||||
	for y in range(0, height, bheight):
 | 
			
		||||
		for x in range(0, width, bwidth):
 | 
			
		||||
			indata = infile.read(bsize)
 | 
			
		||||
			outdata = translate_func(indata)
 | 
			
		||||
			for j in range(bheight):
 | 
			
		||||
				for i in range(bwidth):
 | 
			
		||||
					r, g, b, a = outdata[j][i]
 | 
			
		||||
					outpixels[x+i, y+j] = r, g, b
 | 
			
		||||
	outimage.save(outfilename, "PNG")
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def main():
 | 
			
		||||
	if sys.platform == 'win32':
 | 
			
		||||
		# wildcard expansion
 | 
			
		||||
		from glob import glob
 | 
			
		||||
		args = []
 | 
			
		||||
		for arg in sys.argv[1:]:
 | 
			
		||||
			args.extend(glob(arg))
 | 
			
		||||
	else:
 | 
			
		||||
		args = sys.argv[1:]
 | 
			
		||||
	for infilename in args:
 | 
			
		||||
		root, ext = os.path.splitext(infilename)
 | 
			
		||||
		outfilename = root + ".png"
 | 
			
		||||
		process(infilename, outfilename)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
if __name__ == '__main__':
 | 
			
		||||
	main()
 | 
			
		||||
							
								
								
									
										309
									
								
								bin/win32kprof.py
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										309
									
								
								bin/win32kprof.py
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,309 @@
 | 
			
		||||
#!/usr/bin/env python
 | 
			
		||||
##########################################################################
 | 
			
		||||
# 
 | 
			
		||||
# Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
 | 
			
		||||
# All Rights Reserved.
 | 
			
		||||
# 
 | 
			
		||||
# Permission is hereby granted, free of charge, to any person obtaining a
 | 
			
		||||
# copy of this software and associated documentation files (the
 | 
			
		||||
# "Software"), to deal in the Software without restriction, including
 | 
			
		||||
# without limitation the rights to use, copy, modify, merge, publish,
 | 
			
		||||
# distribute, sub license, and/or sell copies of the Software, and to
 | 
			
		||||
# permit persons to whom the Software is furnished to do so, subject to
 | 
			
		||||
# the following conditions:
 | 
			
		||||
# 
 | 
			
		||||
# The above copyright notice and this permission notice (including the
 | 
			
		||||
# next paragraph) shall be included in all copies or substantial portions
 | 
			
		||||
# of the Software.
 | 
			
		||||
# 
 | 
			
		||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
 | 
			
		||||
# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 | 
			
		||||
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
 | 
			
		||||
# IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR
 | 
			
		||||
# ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
 | 
			
		||||
# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
 | 
			
		||||
# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 | 
			
		||||
# 
 | 
			
		||||
##########################################################################
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
import sys
 | 
			
		||||
import optparse
 | 
			
		||||
import re
 | 
			
		||||
import struct
 | 
			
		||||
 | 
			
		||||
from gprof2dot import Call, Function, Profile
 | 
			
		||||
from gprof2dot import CALLS, SAMPLES, TIME, TIME_RATIO, TOTAL_TIME, TOTAL_TIME_RATIO
 | 
			
		||||
from gprof2dot import DotWriter, TEMPERATURE_COLORMAP
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
__version__ = '0.1'
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class ParseError(Exception):
 | 
			
		||||
    pass
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class MsvcDemangler:
 | 
			
		||||
    # http://www.kegel.com/mangle.html
 | 
			
		||||
 | 
			
		||||
    def __init__(self, symbol):
 | 
			
		||||
        self._symbol = symbol
 | 
			
		||||
        self._pos = 0
 | 
			
		||||
 | 
			
		||||
    def lookahead(self):
 | 
			
		||||
        return self._symbol[self._pos]
 | 
			
		||||
 | 
			
		||||
    def consume(self):
 | 
			
		||||
        ret = self.lookahead()
 | 
			
		||||
        self._pos += 1
 | 
			
		||||
        return ret
 | 
			
		||||
    
 | 
			
		||||
    def match(self, c):
 | 
			
		||||
        if self.lookahead() != c:
 | 
			
		||||
            raise ParseError
 | 
			
		||||
        self.consume()
 | 
			
		||||
 | 
			
		||||
    def parse(self):
 | 
			
		||||
        self.match('?')
 | 
			
		||||
        name = self.parse_name()
 | 
			
		||||
        qualifications = self.parse_qualifications()
 | 
			
		||||
        return '::'.join(qualifications + [name])
 | 
			
		||||
 | 
			
		||||
    def parse_name(self):
 | 
			
		||||
        if self.lookahead() == '?':
 | 
			
		||||
            return self.consume() + self.consume()
 | 
			
		||||
        else:
 | 
			
		||||
            name = self.parse_id()
 | 
			
		||||
            self.match('@')
 | 
			
		||||
            return name
 | 
			
		||||
 | 
			
		||||
    def parse_qualifications(self):
 | 
			
		||||
        qualifications = []
 | 
			
		||||
        while self.lookahead() != '@':
 | 
			
		||||
            name = self.parse_id()
 | 
			
		||||
            qualifications.append(name)
 | 
			
		||||
            self.match('@')
 | 
			
		||||
        return qualifications
 | 
			
		||||
 | 
			
		||||
    def parse_id(self):
 | 
			
		||||
        s = ''
 | 
			
		||||
        while True:
 | 
			
		||||
            c = self.lookahead()
 | 
			
		||||
            if c.isalnum() or c in '_':
 | 
			
		||||
                s += c
 | 
			
		||||
                self.consume()
 | 
			
		||||
            else:
 | 
			
		||||
                break
 | 
			
		||||
        return s
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def demangle(name):
 | 
			
		||||
    if name.startswith('_'):
 | 
			
		||||
        name = name[1:]
 | 
			
		||||
        idx = name.rfind('@')
 | 
			
		||||
        if idx != -1 and name[idx+1:].isdigit():
 | 
			
		||||
            name = name[:idx]
 | 
			
		||||
        return name
 | 
			
		||||
    if name.startswith('?'):
 | 
			
		||||
        demangler = MsvcDemangler(name)
 | 
			
		||||
        return demangler.parse()
 | 
			
		||||
    return name
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class Reader:
 | 
			
		||||
 | 
			
		||||
    def __init__(self):
 | 
			
		||||
        self.symbols = []
 | 
			
		||||
        self.symbol_cache = {}
 | 
			
		||||
        self.base_addr = None
 | 
			
		||||
    
 | 
			
		||||
    def read_map(self, mapfile):
 | 
			
		||||
        # See http://msdn.microsoft.com/en-us/library/k7xkk3e2.aspx
 | 
			
		||||
        last_addr = 0
 | 
			
		||||
        last_name = 0
 | 
			
		||||
        for line in file(mapfile, "rt"):
 | 
			
		||||
            fields = line.split()
 | 
			
		||||
            try:
 | 
			
		||||
                section_offset, name, addr, type, lib_object = fields
 | 
			
		||||
            except ValueError:
 | 
			
		||||
                continue
 | 
			
		||||
            if type != 'f':
 | 
			
		||||
                continue
 | 
			
		||||
            section, offset = section_offset.split(':')
 | 
			
		||||
            addr = int(offset, 16)
 | 
			
		||||
            self.symbols.append((addr, name))
 | 
			
		||||
            last_addr = addr
 | 
			
		||||
            last_name = name
 | 
			
		||||
 | 
			
		||||
        # sort symbols
 | 
			
		||||
        self.symbols.sort(key = lambda (addr, name): addr)
 | 
			
		||||
 | 
			
		||||
    def lookup_addr(self, addr):
 | 
			
		||||
        try:
 | 
			
		||||
            return self.symbol_cache[addr]
 | 
			
		||||
        except KeyError:
 | 
			
		||||
            pass
 | 
			
		||||
 | 
			
		||||
        tolerance = 4196
 | 
			
		||||
        s, e = 0, len(self.symbols)
 | 
			
		||||
        while s != e:
 | 
			
		||||
            i = (s + e)//2
 | 
			
		||||
            start_addr, name = self.symbols[i]
 | 
			
		||||
            try:
 | 
			
		||||
                end_addr, next_name = self.symbols[i + 1]
 | 
			
		||||
            except IndexError:
 | 
			
		||||
                end_addr = start_addr + tolerance
 | 
			
		||||
            if addr < start_addr:
 | 
			
		||||
                e = i
 | 
			
		||||
                continue
 | 
			
		||||
            if addr == end_addr:
 | 
			
		||||
                return next_name, addr - start_addr
 | 
			
		||||
            if addr > end_addr:
 | 
			
		||||
                s = i
 | 
			
		||||
                continue
 | 
			
		||||
            return name, addr - start_addr
 | 
			
		||||
        raise ValueError
 | 
			
		||||
 | 
			
		||||
    def lookup_symbol(self, name):
 | 
			
		||||
        for symbol_addr, symbol_name in self.symbols:
 | 
			
		||||
            if name == symbol_name:
 | 
			
		||||
                return symbol_addr
 | 
			
		||||
        return 0
 | 
			
		||||
 | 
			
		||||
    def read_data(self, data):
 | 
			
		||||
        profile = Profile()
 | 
			
		||||
 | 
			
		||||
        fp = file(data, "rb")
 | 
			
		||||
        entry_format = "IIII"
 | 
			
		||||
        entry_size = struct.calcsize(entry_format)
 | 
			
		||||
        caller = None
 | 
			
		||||
        caller_stack = []
 | 
			
		||||
        while True:
 | 
			
		||||
            entry = fp.read(entry_size)
 | 
			
		||||
            if len(entry) < entry_size:
 | 
			
		||||
                break
 | 
			
		||||
            caller_addr, callee_addr, samples_lo, samples_hi = struct.unpack(entry_format, entry)
 | 
			
		||||
            if caller_addr == 0 and callee_addr == 0:
 | 
			
		||||
                continue
 | 
			
		||||
 | 
			
		||||
            if self.base_addr is None:
 | 
			
		||||
                ref_addr = self.lookup_symbol('___debug_profile_reference@0')
 | 
			
		||||
                if ref_addr:
 | 
			
		||||
                    self.base_addr = (caller_addr - ref_addr) & ~(options.align - 1)
 | 
			
		||||
                else:
 | 
			
		||||
                    self.base_addr = 0
 | 
			
		||||
                sys.stderr.write('Base addr: %08x\n' % self.base_addr)
 | 
			
		||||
 | 
			
		||||
            samples = (samples_hi << 32) | samples_lo
 | 
			
		||||
            
 | 
			
		||||
            try:
 | 
			
		||||
                caller_raddr = caller_addr - self.base_addr
 | 
			
		||||
                caller_sym, caller_ofs = self.lookup_addr(caller_raddr)
 | 
			
		||||
 | 
			
		||||
                try:
 | 
			
		||||
                    caller = profile.functions[caller_sym]
 | 
			
		||||
                except KeyError:
 | 
			
		||||
                    caller_name = demangle(caller_sym)
 | 
			
		||||
                    caller = Function(caller_sym, caller_name)
 | 
			
		||||
                    profile.add_function(caller)
 | 
			
		||||
                    caller[CALLS] = 0
 | 
			
		||||
                    caller[SAMPLES] = 0
 | 
			
		||||
            except ValueError:
 | 
			
		||||
                caller = None
 | 
			
		||||
 | 
			
		||||
            if not callee_addr:
 | 
			
		||||
                if caller:
 | 
			
		||||
                    caller[SAMPLES] += samples
 | 
			
		||||
            else:
 | 
			
		||||
                callee_raddr = callee_addr - self.base_addr
 | 
			
		||||
                callee_sym, callee_ofs = self.lookup_addr(callee_raddr)
 | 
			
		||||
 | 
			
		||||
                try:
 | 
			
		||||
                    callee = profile.functions[callee_sym]
 | 
			
		||||
                except KeyError:
 | 
			
		||||
                    callee_name = demangle(callee_sym)
 | 
			
		||||
                    callee = Function(callee_sym, callee_name)
 | 
			
		||||
                    profile.add_function(callee)
 | 
			
		||||
                    callee[CALLS] = samples
 | 
			
		||||
                    callee[SAMPLES] = 0
 | 
			
		||||
                else:
 | 
			
		||||
                    callee[CALLS] += samples
 | 
			
		||||
 | 
			
		||||
                if caller is not None:
 | 
			
		||||
                    try:
 | 
			
		||||
                        call = caller.calls[callee.id]
 | 
			
		||||
                    except KeyError:
 | 
			
		||||
                        call = Call(callee.id)
 | 
			
		||||
                        call[CALLS] = samples
 | 
			
		||||
                        caller.add_call(call)
 | 
			
		||||
                    else:
 | 
			
		||||
                        call[CALLS] += samples
 | 
			
		||||
            
 | 
			
		||||
            if options.verbose:
 | 
			
		||||
                if not callee_addr:
 | 
			
		||||
                    sys.stderr.write('%s+%u: %u\n' % (caller_sym, caller_ofs, samples))
 | 
			
		||||
                else:
 | 
			
		||||
                    sys.stderr.write('%s+%u -> %s+%u: %u\n' % (caller_sym, caller_ofs, callee_sym, callee_ofs, samples))
 | 
			
		||||
 | 
			
		||||
        # compute derived data
 | 
			
		||||
        profile.validate()
 | 
			
		||||
        profile.find_cycles()
 | 
			
		||||
        profile.aggregate(SAMPLES)
 | 
			
		||||
        profile.ratio(TIME_RATIO, SAMPLES)
 | 
			
		||||
        profile.call_ratios(CALLS)
 | 
			
		||||
        profile.integrate(TOTAL_TIME_RATIO, TIME_RATIO)
 | 
			
		||||
 | 
			
		||||
        return profile
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def main():
 | 
			
		||||
    parser = optparse.OptionParser(
 | 
			
		||||
        usage="\n\t%prog [options] [file] ...",
 | 
			
		||||
        version="%%prog %s" % __version__)
 | 
			
		||||
    parser.add_option(
 | 
			
		||||
        '-a', '--align', metavar='NUMBER',
 | 
			
		||||
        type="int", dest="align", default=16,
 | 
			
		||||
        help="section alignment")
 | 
			
		||||
    parser.add_option(
 | 
			
		||||
        '-m', '--map', metavar='FILE',
 | 
			
		||||
        type="string", dest="map",
 | 
			
		||||
        help="map file")
 | 
			
		||||
    parser.add_option(
 | 
			
		||||
        '-b', '--base', metavar='FILE',
 | 
			
		||||
        type="string", dest="base",
 | 
			
		||||
        help="base addr")
 | 
			
		||||
    parser.add_option(
 | 
			
		||||
        '-n', '--node-thres', metavar='PERCENTAGE',
 | 
			
		||||
        type="float", dest="node_thres", default=0.5,
 | 
			
		||||
        help="eliminate nodes below this threshold [default: %default]")
 | 
			
		||||
    parser.add_option(
 | 
			
		||||
        '-e', '--edge-thres', metavar='PERCENTAGE',
 | 
			
		||||
        type="float", dest="edge_thres", default=0.1,
 | 
			
		||||
        help="eliminate edges below this threshold [default: %default]")
 | 
			
		||||
    parser.add_option(
 | 
			
		||||
        '-v', '--verbose',
 | 
			
		||||
        action="count",
 | 
			
		||||
        dest="verbose", default=0,
 | 
			
		||||
        help="verbose output")
 | 
			
		||||
 | 
			
		||||
    global options
 | 
			
		||||
    (options, args) = parser.parse_args(sys.argv[1:])
 | 
			
		||||
 | 
			
		||||
    reader = Reader()
 | 
			
		||||
    if options.base is not None:
 | 
			
		||||
        reader.base_addr = int(options.base, 16)
 | 
			
		||||
    if options.map is not None:
 | 
			
		||||
        reader.read_map(options.map)
 | 
			
		||||
    for arg in args:
 | 
			
		||||
        profile = reader.read_data(arg)
 | 
			
		||||
        profile.prune(options.node_thres/100.0, options.edge_thres/100.0)
 | 
			
		||||
        output = sys.stdout
 | 
			
		||||
        dot = DotWriter(output)
 | 
			
		||||
        colormap = TEMPERATURE_COLORMAP
 | 
			
		||||
        dot.graph(profile, colormap)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
if __name__ == '__main__':
 | 
			
		||||
    main()
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										76
									
								
								common.py
									
									
									
									
									
								
							
							
						
						
									
										76
									
								
								common.py
									
									
									
									
									
								
							@@ -3,27 +3,20 @@
 | 
			
		||||
 | 
			
		||||
import os
 | 
			
		||||
import os.path
 | 
			
		||||
import re
 | 
			
		||||
import subprocess
 | 
			
		||||
import sys
 | 
			
		||||
import platform as _platform
 | 
			
		||||
 | 
			
		||||
import SCons.Script.SConscript
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#######################################################################
 | 
			
		||||
# Defaults
 | 
			
		||||
 | 
			
		||||
host_platform = _platform.system().lower()
 | 
			
		||||
if host_platform.startswith('cygwin'):
 | 
			
		||||
    host_platform = 'cygwin'
 | 
			
		||||
_platform_map = {
 | 
			
		||||
	'linux2': 'linux',
 | 
			
		||||
	'win32': 'winddk',
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Search sys.argv[] for a "platform=foo" argument since we don't have
 | 
			
		||||
# an 'env' variable at this point.
 | 
			
		||||
if 'platform' in SCons.Script.ARGUMENTS:
 | 
			
		||||
    target_platform = SCons.Script.ARGUMENTS['platform']
 | 
			
		||||
else:
 | 
			
		||||
    target_platform = host_platform
 | 
			
		||||
default_platform = sys.platform
 | 
			
		||||
default_platform = _platform_map.get(default_platform, default_platform)
 | 
			
		||||
 | 
			
		||||
_machine_map = {
 | 
			
		||||
	'x86': 'x86',
 | 
			
		||||
@@ -32,37 +25,20 @@ _machine_map = {
 | 
			
		||||
	'i586': 'x86',
 | 
			
		||||
	'i686': 'x86',
 | 
			
		||||
	'ppc' : 'ppc',
 | 
			
		||||
	'AMD64': 'x86_64',
 | 
			
		||||
	'x86_64': 'x86_64',
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# find host_machine value
 | 
			
		||||
if 'PROCESSOR_ARCHITECTURE' in os.environ:
 | 
			
		||||
	host_machine = os.environ['PROCESSOR_ARCHITECTURE']
 | 
			
		||||
	default_machine = os.environ['PROCESSOR_ARCHITECTURE']
 | 
			
		||||
else:
 | 
			
		||||
	host_machine = _platform.machine()
 | 
			
		||||
host_machine = _machine_map.get(host_machine, 'generic')
 | 
			
		||||
	default_machine = _platform.machine()
 | 
			
		||||
default_machine = _machine_map.get(default_machine, 'generic')
 | 
			
		||||
 | 
			
		||||
default_machine = host_machine
 | 
			
		||||
default_toolchain = 'default'
 | 
			
		||||
 | 
			
		||||
if target_platform == 'windows' and host_platform != 'windows':
 | 
			
		||||
    default_machine = 'x86'
 | 
			
		||||
    default_toolchain = 'crossmingw'
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# find default_llvm value
 | 
			
		||||
if 'LLVM' in os.environ:
 | 
			
		||||
    default_llvm = 'yes'
 | 
			
		||||
if default_platform in ('linux', 'freebsd'):
 | 
			
		||||
	default_dri = 'yes'
 | 
			
		||||
elif default_platform in ('winddk', 'windows', 'wince', 'darwin'):
 | 
			
		||||
	default_dri = 'no'
 | 
			
		||||
else:
 | 
			
		||||
    default_llvm = 'no'
 | 
			
		||||
    try:
 | 
			
		||||
        if target_platform != 'windows' and \
 | 
			
		||||
           subprocess.call(['llvm-config', '--version'], stdout=subprocess.PIPE) == 0:
 | 
			
		||||
            default_llvm = 'yes'
 | 
			
		||||
    except:
 | 
			
		||||
        pass
 | 
			
		||||
	default_dri = 'no'
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#######################################################################
 | 
			
		||||
@@ -77,19 +53,15 @@ def AddOptions(opts):
 | 
			
		||||
		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(BoolOption('debug', 'debug build', 'no'))
 | 
			
		||||
	opts.Add(BoolOption('profile', 'profile build', 'no'))
 | 
			
		||||
	opts.Add(BoolOption('quiet', 'quiet command lines', 'yes'))
 | 
			
		||||
	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=('linux', 'cell', 'windows', 'winddk', 'wince', 'darwin', 'cygwin', 'sunos', 'freebsd8')))
 | 
			
		||||
	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('debug', 'DEPRECATED: debug build', 'yes'))
 | 
			
		||||
	opts.Add(BoolOption('profile', 'DEPRECATED: profile build', 'no'))
 | 
			
		||||
	opts.Add(BoolOption('quiet', 'DEPRECATED: quiet command lines', 'yes'))
 | 
			
		||||
	if host_platform == 'windows':
 | 
			
		||||
		opts.Add(EnumOption('MSVS_VERSION', 'MS Visual C++ version', None, allowed_values=('7.1', '8.0', '9.0')))
 | 
			
		||||
	opts.Add(EnumOption('platform', 'target platform', default_platform,
 | 
			
		||||
											 allowed_values=('linux', 'cell', 'windows', 'winddk', 'wince', 'darwin')))
 | 
			
		||||
	opts.Add(EnumOption('toolchain', 'compiler toolchain', 'default',
 | 
			
		||||
											 allowed_values=('default', 'crossmingw', 'winsdk', 'winddk')))
 | 
			
		||||
	opts.Add(BoolOption('llvm', 'use LLVM', 'no'))
 | 
			
		||||
	opts.Add(BoolOption('dri', 'build DRI drivers', default_dri))
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -14,37 +14,16 @@ ARCH_FLAGS = @ARCH_FLAGS@
 | 
			
		||||
ASM_FLAGS = @ASM_FLAGS@
 | 
			
		||||
PIC_FLAGS = @PIC_FLAGS@
 | 
			
		||||
DEFINES = @DEFINES@
 | 
			
		||||
API_DEFINES = @API_DEFINES@
 | 
			
		||||
SHARED_GLAPI = @SHARED_GLAPI@
 | 
			
		||||
CFLAGS_NOVISIBILITY = @CPPFLAGS@ @CFLAGS@ \
 | 
			
		||||
CFLAGS = @CPPFLAGS@ @CFLAGS@ \
 | 
			
		||||
	$(OPT_FLAGS) $(PIC_FLAGS) $(ARCH_FLAGS) $(ASM_FLAGS) $(DEFINES)
 | 
			
		||||
CXXFLAGS_NOVISIBILITY = @CPPFLAGS@ @CXXFLAGS@ \
 | 
			
		||||
CXXFLAGS = @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_LDFLAGS = @RADEON_LDFLAGS@
 | 
			
		||||
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_CFLAGS = @LLVM_CFLAGS@
 | 
			
		||||
LLVM_LDFLAGS = @LLVM_LDFLAGS@
 | 
			
		||||
LLVM_LIBS = @LLVM_LIBS@
 | 
			
		||||
GLW_CFLAGS = @GLW_CFLAGS@
 | 
			
		||||
GLUT_CFLAGS = @GLUT_CFLAGS@
 | 
			
		||||
GLX_TLS = @GLX_TLS@
 | 
			
		||||
DRI_CFLAGS = @DRI_CFLAGS@
 | 
			
		||||
DRI_CXXFLAGS = @DRI_CXXFLAGS@
 | 
			
		||||
 | 
			
		||||
# dlopen
 | 
			
		||||
DLOPEN_LIBS = @DLOPEN_LIBS@
 | 
			
		||||
 | 
			
		||||
# Source selection
 | 
			
		||||
# Assembler
 | 
			
		||||
MESA_ASM_SOURCES = @MESA_ASM_SOURCES@
 | 
			
		||||
GLAPI_ASM_SOURCES = @GLAPI_ASM_SOURCES@
 | 
			
		||||
 | 
			
		||||
@@ -57,25 +36,15 @@ MKDEP_OPTIONS = @MKDEP_OPTIONS@
 | 
			
		||||
INSTALL = @INSTALL@
 | 
			
		||||
 | 
			
		||||
# Python and flags (generally only needed by the developers)
 | 
			
		||||
PYTHON2 = @PYTHON2@
 | 
			
		||||
PYTHON2 = python
 | 
			
		||||
PYTHON_FLAGS = -t -O -O
 | 
			
		||||
 | 
			
		||||
# Flex and Bison for GLSL compiler
 | 
			
		||||
FLEX = @FLEX@
 | 
			
		||||
BISON = @BISON@
 | 
			
		||||
 | 
			
		||||
# Library names (base name)
 | 
			
		||||
GL_LIB = GL
 | 
			
		||||
GLU_LIB = GLU
 | 
			
		||||
GLUT_LIB = glut
 | 
			
		||||
GLW_LIB = GLw
 | 
			
		||||
OSMESA_LIB = @OSMESA_LIB@
 | 
			
		||||
GLESv1_CM_LIB = GLESv1_CM
 | 
			
		||||
GLESv2_LIB = GLESv2
 | 
			
		||||
VG_LIB = OpenVG
 | 
			
		||||
GLAPI_LIB = glapi
 | 
			
		||||
WAYLAND_EGL_LIB = wayland-egl
 | 
			
		||||
GBM_LIB = gbm
 | 
			
		||||
 | 
			
		||||
# Library names (actual file names)
 | 
			
		||||
GL_LIB_NAME = @GL_LIB_NAME@
 | 
			
		||||
@@ -83,13 +52,6 @@ GLU_LIB_NAME = @GLU_LIB_NAME@
 | 
			
		||||
GLUT_LIB_NAME = @GLUT_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@
 | 
			
		||||
WAYLAND_EGL_LIB_NAME = @WAYLAND_EGL_LIB_NAME@
 | 
			
		||||
GBM_LIB_NAME = @GBM_LIB_NAME@
 | 
			
		||||
 | 
			
		||||
# Globs used to install the lib and all symlinks
 | 
			
		||||
GL_LIB_GLOB = @GL_LIB_GLOB@
 | 
			
		||||
@@ -97,36 +59,28 @@ GLU_LIB_GLOB = @GLU_LIB_GLOB@
 | 
			
		||||
GLUT_LIB_GLOB = @GLUT_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@
 | 
			
		||||
WAYLAND_EGL_LIB_GLOB = @WAYLAND_EGL_LIB_GLOB@
 | 
			
		||||
GBM_LIB_GLOB = @GBM_LIB_GLOB@
 | 
			
		||||
 | 
			
		||||
# Directories to build
 | 
			
		||||
LIB_DIR = @LIB_DIR@
 | 
			
		||||
SRC_DIRS = @SRC_DIRS@
 | 
			
		||||
GLU_DIRS = @GLU_DIRS@
 | 
			
		||||
DRIVER_DIRS = @DRIVER_DIRS@
 | 
			
		||||
EGL_DRIVERS_DIRS = @EGL_DRIVERS_DIRS@
 | 
			
		||||
GBM_BACKEND_DIRS = @GBM_BACKEND_DIRS@
 | 
			
		||||
GALLIUM_DIRS = @GALLIUM_DIRS@
 | 
			
		||||
GALLIUM_AUXILIARY_DIRS = @GALLIUM_AUXILIARY_DIRS@
 | 
			
		||||
GALLIUM_DRIVERS_DIRS = @GALLIUM_DRIVERS_DIRS@
 | 
			
		||||
GALLIUM_WINSYS_DIRS = @GALLIUM_WINSYS_DIRS@
 | 
			
		||||
GALLIUM_TARGET_DIRS = @GALLIUM_TARGET_DIRS@
 | 
			
		||||
GALLIUM_WINSYS_DRM_DIRS = @GALLIUM_WINSYS_DRM_DIRS@
 | 
			
		||||
GALLIUM_STATE_TRACKERS_DIRS = @GALLIUM_STATE_TRACKERS_DIRS@
 | 
			
		||||
GALLIUM_AUXILIARIES = $(TOP)/src/gallium/auxiliary/libgallium.a
 | 
			
		||||
GALLIUM_AUXILIARIES = $(foreach DIR,$(GALLIUM_AUXILIARY_DIRS),$(TOP)/src/gallium/auxiliary/$(DIR)/lib$(DIR).a)
 | 
			
		||||
GALLIUM_DRIVERS = $(foreach DIR,$(GALLIUM_DRIVERS_DIRS),$(TOP)/src/gallium/drivers/$(DIR)/lib$(DIR).a)
 | 
			
		||||
 | 
			
		||||
# Which subdirs under $(TOP)/progs/ to enter:
 | 
			
		||||
PROGRAM_DIRS = @PROGRAM_DIRS@
 | 
			
		||||
 | 
			
		||||
# Driver specific build vars
 | 
			
		||||
DRI_DIRS = @DRI_DIRS@
 | 
			
		||||
DRICORE_GLSL_LIBS = @DRICORE_GLSL_LIBS@
 | 
			
		||||
DRICORE_LIBS = @DRICORE_LIBS@
 | 
			
		||||
DRICORE_LIB_DEPS = @DRICORE_LIB_DEPS@
 | 
			
		||||
EGL_PLATFORMS = @EGL_PLATFORMS@
 | 
			
		||||
EGL_CLIENT_APIS = @EGL_CLIENT_APIS@
 | 
			
		||||
DRI_DIRS = @DRI_DIRS@ 
 | 
			
		||||
WINDOW_SYSTEM = @WINDOW_SYSTEM@
 | 
			
		||||
USING_EGL = @USING_EGL@
 | 
			
		||||
 | 
			
		||||
# Dependencies
 | 
			
		||||
X11_INCLUDES = @X11_INCLUDES@
 | 
			
		||||
@@ -147,20 +101,12 @@ GLUT_LIB_DEPS = -L$(TOP)/$(LIB_DIR) @GLUT_MESA_DEPS@ \
 | 
			
		||||
GLW_LIB_DEPS = -L$(TOP)/$(LIB_DIR) @GLW_MESA_DEPS@ \
 | 
			
		||||
	$(EXTRA_LIB_PATH) @GLW_LIB_DEPS@
 | 
			
		||||
APP_LIB_DEPS = $(EXTRA_LIB_PATH) @APP_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@
 | 
			
		||||
WAYLAND_EGL_LIB_DEPS = $(EXTRA_LIB_PATH) @WAYLAND_EGL_LIB_DEPS@
 | 
			
		||||
GBM_LIB_DEPS = $(EXTRA_LIB_PATH) @GBM_LIB_DEPS@
 | 
			
		||||
 | 
			
		||||
# DRI dependencies
 | 
			
		||||
MESA_MODULES = @MESA_MODULES@
 | 
			
		||||
DRI_LIB_DEPS = $(EXTRA_LIB_PATH) @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
 | 
			
		||||
@@ -180,9 +126,6 @@ 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@
 | 
			
		||||
 | 
			
		||||
# Xorg driver install directory (for xorg state-tracker)
 | 
			
		||||
XORG_DRIVER_INSTALL_DIR = @XORG_DRIVER_INSTALL_DIR@
 | 
			
		||||
 | 
			
		||||
@@ -203,31 +146,3 @@ 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@
 | 
			
		||||
WAYLAND_EGL_PC_REQ_PRIV = @WAYLAND_EGL_PC_REQ_PRIV@
 | 
			
		||||
WAYLAND_EGL_PC_LIB_PRIV = @WAYLAND_EGL_PC_LIB_PRIV@
 | 
			
		||||
WAYLAND_EGL_PC_CFLAGS = @WAYLAND_EGL_PC_CFLAGS@
 | 
			
		||||
GBM_PC_REQ_PRIV = @GBM_PC_REQ_PRIV@
 | 
			
		||||
GBM_PC_LIB_PRIV = @GBM_PC_LIB_PRIV@
 | 
			
		||||
GBM_PC_CFLAGS = @GBM_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@
 | 
			
		||||
ifneq ($(LLVM_VERSION),)
 | 
			
		||||
  HAVE_LLVM := 0x0$(subst .,0,$(LLVM_VERSION:svn=))
 | 
			
		||||
  DEFINES += -DHAVE_LLVM=$(HAVE_LLVM)
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
HAVE_XF86VIDMODE = @HAVE_XF86VIDMODE@
 | 
			
		||||
 
 | 
			
		||||
@@ -90,9 +90,10 @@ else
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
# Directories
 | 
			
		||||
SRC_DIRS = gallium mesa glu glut/beos
 | 
			
		||||
SRC_DIRS = gallium mesa glu glut/beos glew
 | 
			
		||||
GLU_DIRS = sgi
 | 
			
		||||
DRIVER_DIRS = beos
 | 
			
		||||
PROGRAM_DIRS = beos samples redbook demos tests
 | 
			
		||||
 | 
			
		||||
# Library/program dependencies
 | 
			
		||||
GL_LIB_DEPS = 
 | 
			
		||||
 
 | 
			
		||||
@@ -24,6 +24,7 @@ OSMESA_LIB_NAME = libOSMesa.a
 | 
			
		||||
# Directories
 | 
			
		||||
SRC_DIRS = mesa glu
 | 
			
		||||
DRIVER_DIRS = osmesa
 | 
			
		||||
PROGRAM_DIRS = osdemos
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Dependencies
 | 
			
		||||
 
 | 
			
		||||
@@ -20,6 +20,7 @@ OSMESA_LIB_NAME = libOSMesa.a
 | 
			
		||||
# Directories
 | 
			
		||||
SRC_DIRS = mesa glu
 | 
			
		||||
DRIVER_DIRS = osmesa
 | 
			
		||||
PROGRAM_DIRS = osdemos
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Dependencies
 | 
			
		||||
 
 | 
			
		||||
@@ -23,6 +23,7 @@ OSMESA_LIB_NAME = libOSMesa.a
 | 
			
		||||
# Directories
 | 
			
		||||
SRC_DIRS = mesa glu
 | 
			
		||||
DRIVER_DIRS = osmesa
 | 
			
		||||
PROGRAM_DIRS = osdemos
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Dependencies
 | 
			
		||||
 
 | 
			
		||||
@@ -12,52 +12,46 @@ X11_DIR = $(INSTALL_DIR)
 | 
			
		||||
CC = gcc
 | 
			
		||||
CXX = g++
 | 
			
		||||
PIC_FLAGS = -fPIC
 | 
			
		||||
DEFINES =  -D_DARWIN_C_SOURCE -DPTHREADS -D_GNU_SOURCE \
 | 
			
		||||
	   -DGLX_ALIAS_UNSUPPORTED \
 | 
			
		||||
	   -DGLX_DIRECT_RENDERING -DGLX_USE_APPLEGL
 | 
			
		||||
DEFINES =  -D_DARWIN_C_SOURCE -D_POSIX_SOURCE -D_POSIX_C_SOURCE=199309L \
 | 
			
		||||
	   -D_BSD_SOURCE -D_SVID_SOURCE -D_GNU_SOURCE -DPTHREADS \
 | 
			
		||||
	   -DGLX_ALIAS_UNSUPPORTED -DGLX_INDIRECT_RENDERING
 | 
			
		||||
 | 
			
		||||
# -DGLX_INDIRECT_RENDERING \
 | 
			
		||||
 | 
			
		||||
# -D_GNU_SOURCE          - for src/mesa/main ...
 | 
			
		||||
# -DGLX_DIRECT_RENDERING - pulls in libdrm stuff in glx
 | 
			
		||||
# -DGLX_DIRECT_RENDERING - pulls in libdrm stuff in glx/x11
 | 
			
		||||
# -DGLX_USE_APPLEGL      - supposed to be used with GLX_DIRECT_RENDERING to use AGL rather than DRM, but doesn't compile
 | 
			
		||||
# -DIN_DRI_DRIVER
 | 
			
		||||
 | 
			
		||||
ARCH_FLAGS += $(RC_CFLAGS)
 | 
			
		||||
 | 
			
		||||
CFLAGS =  -ggdb3 -Os -Wall -Wmissing-prototypes -std=c99 -ffast-math -fno-strict-aliasing -fvisibility=hidden \
 | 
			
		||||
CFLAGS =  -ggdb3 -Os -Wall -Wmissing-prototypes -std=c99 -ffast-math -fno-strict-aliasing \
 | 
			
		||||
	-I$(INSTALL_DIR)/include -I$(X11_DIR)/include $(OPT_FLAGS) $(PIC_FLAGS) $(ARCH_FLAGS) $(ASM_FLAGS) $(DEFINES)
 | 
			
		||||
CXXFLAGS =  -ggdb3 -Os -Wall -fno-strict-aliasing -fvisibility=hidden \
 | 
			
		||||
CXXFLAGS =  -ggdb3 -Os -Wall -fno-strict-aliasing \
 | 
			
		||||
	-I$(INSTALL_DIR)/include -I$(X11_DIR)/include $(OPT_FLAGS) $(PIC_FLAGS) $(ARCH_FLAGS) $(ASM_FLAGS) $(DEFINES)
 | 
			
		||||
 | 
			
		||||
# Library names (actual file names)
 | 
			
		||||
GL_LIB_NAME = lib$(GL_LIB).dylib
 | 
			
		||||
GLU_LIB_NAME = lib$(GLU_LIB).dylib
 | 
			
		||||
GLUT_LIB_NAME = lib$(GLUT_LIB).dylib
 | 
			
		||||
GLW_LIB_NAME = lib$(GLW_LIB).dylib
 | 
			
		||||
OSMESA_LIB_NAME = lib$(OSMESA_LIB).dylib
 | 
			
		||||
VG_LIB_NAME = lib$(VG_LIB).dylib
 | 
			
		||||
GL_LIB_NAME = libGL.dylib
 | 
			
		||||
GLU_LIB_NAME = libGLU.dylib
 | 
			
		||||
GLUT_LIB_NAME = libglut.dylib
 | 
			
		||||
GLW_LIB_NAME = libGLw.dylib
 | 
			
		||||
OSMESA_LIB_NAME = libOSMesa.dylib
 | 
			
		||||
 | 
			
		||||
# globs used to install the lib and all symlinks
 | 
			
		||||
GL_LIB_GLOB = lib$(GL_LIB).*dylib
 | 
			
		||||
GLU_LIB_GLOB = lib$(GLU_LIB).*dylib
 | 
			
		||||
GLUT_LIB_GLOB = lib$(GLUT_LIB).*dylib
 | 
			
		||||
GLW_LIB_GLOB = lib$(GLW_LIB).*dylib
 | 
			
		||||
OSMESA_LIB_GLOB = lib$(OSMESA_LIB).*dylib
 | 
			
		||||
VG_LIB_GLOB = lib$(VG_LIB).*dylib
 | 
			
		||||
GL_LIB_GLOB = libGL.*dylib
 | 
			
		||||
GLU_LIB_GLOB = libGLU.*dylib
 | 
			
		||||
GLUT_LIB_GLOB = libglut.*dylib
 | 
			
		||||
GLW_LIB_GLOB = libGLw.*dylib
 | 
			
		||||
OSMESA_LIB_GLOB = libOSMesa.*dylib
 | 
			
		||||
 | 
			
		||||
GL_LIB_DEPS = -L$(INSTALL_DIR)/$(LIB_DIR) -L$(X11_DIR)/$(LIB_DIR) -lX11 -lXext -lm -lpthread
 | 
			
		||||
OSMESA_LIB_DEPS =
 | 
			
		||||
OSMESA_LIB_DEPS = -L$(TOP)/$(LIB_DIR) -l$(GL_LIB)
 | 
			
		||||
GLU_LIB_DEPS = -L$(TOP)/$(LIB_DIR) -l$(GL_LIB)
 | 
			
		||||
GLUT_LIB_DEPS = -L$(TOP)/$(LIB_DIR) -l$(GLU_LIB) -l$(GL_LIB)  -L$(INSTALL_DIR)/$(LIB_DIR) -L$(X11_DIR)/$(LIB_DIR) -lX11 -lXmu -lXi -lXext
 | 
			
		||||
GLW_LIB_DEPS = -L$(TOP)/$(LIB_DIR) -l$(GL_LIB) -L$(INSTALL_DIR)/$(LIB_DIR) -L$(X11_DIR)/$(LIB_DIR) -lX11 -lXt
 | 
			
		||||
APP_LIB_DEPS = -L$(TOP)/$(LIB_DIR) -l$(GLUT_LIB) -l$(GLU_LIB) -l$(GL_LIB) -L$(INSTALL_DIR)/$(LIB_DIR) -L$(X11_DIR)/$(LIB_DIR) -lX11 -lXmu -lXt -lXi -lm
 | 
			
		||||
 | 
			
		||||
# omit glw lib for now:
 | 
			
		||||
SRC_DIRS = glsl mapi/glapi mapi/vgapi glx/apple mesa gallium glu glut/glx
 | 
			
		||||
SRC_DIRS = glx/x11 mesa glu glut/glx glew
 | 
			
		||||
GLU_DIRS = sgi
 | 
			
		||||
DRIVER_DIRS = osmesa
 | 
			
		||||
#DRIVER_DIRS = dri
 | 
			
		||||
DRI_DIRS = swrast
 | 
			
		||||
GALLIUM_DRIVERS_DIRS = softpipe trace rbug noop identity galahad failover
 | 
			
		||||
#GALLIUM_DRIVERS_DIRS += llvmpipe
 | 
			
		||||
PROGRAM_DIRS = xdemos
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										33
									
								
								configs/darwin-x86ppc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								configs/darwin-x86ppc
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,33 @@
 | 
			
		||||
# Configuration for Darwin / MacOS X, making dynamic libs
 | 
			
		||||
 | 
			
		||||
include $(TOP)/configs/default
 | 
			
		||||
 | 
			
		||||
CONFIG_NAME = darwin
 | 
			
		||||
 | 
			
		||||
# Compiler and flags
 | 
			
		||||
CC = cc
 | 
			
		||||
CXX = cc
 | 
			
		||||
CFLAGS = -arch ppc -arch i386 -isysroot /Developer/SDKs/MacOSX10.4u.sdk \
 | 
			
		||||
         -I/usr/X11R6/include -O3 -fPIC -fno-common -ffast-math -funroll-loops -fexpensive-optimizations -no-cpp-precomp -dynamic -Ddarwin
 | 
			
		||||
CXXFLAGS = -arch ppc -arch i386 -isysroot /Developer/SDKs/MacOSX10.4u.sdk \
 | 
			
		||||
         -I/usr/X11R6/include -O3 -fPIC -fno-common -ffast-math -funroll-loops -fexpensive-optimizations -no-cpp-precomp -dynamic -Ddarwin
 | 
			
		||||
 | 
			
		||||
MKLIB_OPTIONS = -archopt "-isysroot /Developer/SDKs/MacOSX10.4u.sdk"
 | 
			
		||||
 | 
			
		||||
# Library names (actual file names)
 | 
			
		||||
GL_LIB_NAME = libGL.dylib
 | 
			
		||||
GLU_LIB_NAME = libGLU.dylib
 | 
			
		||||
GLUT_LIB_NAME = libglut.dylib
 | 
			
		||||
GLW_LIB_NAME = libGLw.dylib
 | 
			
		||||
OSMESA_LIB_NAME = libOSMesa.dylib
 | 
			
		||||
 | 
			
		||||
GL_LIB_DEPS = -L/usr/X11R6/lib -lX11 -lXext -lm -lpthread
 | 
			
		||||
OSMESA_LIB_DEPS = -L$(TOP)/$(LIB_DIR) -lGL
 | 
			
		||||
GLU_LIB_DEPS = -L$(TOP)/$(LIB_DIR) -lGL
 | 
			
		||||
GLUT_LIB_DEPS = -L$(TOP)/$(LIB_DIR) -lGL -lGLU -L/usr/X11R6/lib -lX11 -lXmu -lXi -lXext
 | 
			
		||||
GLW_LIB_DEPS = -L/usr/X11R6/lib -lX11 -lXt $(TOP)/lib/GL.dylib
 | 
			
		||||
APP_LIB_DEPS = -L$(TOP)/lib -l$(GLUT_LIB) -l$(GLU_LIB) -l$(GL_LIB) -L/usr/X11R6/lib -lX11 -lXmu -lXt -lXi -lm
 | 
			
		||||
 | 
			
		||||
# omit glw lib for now:
 | 
			
		||||
SRC_DIRS = gallium mesa glu glut/glx glew
 | 
			
		||||
 | 
			
		||||
@@ -9,8 +9,8 @@ CONFIG_NAME = default
 | 
			
		||||
 | 
			
		||||
# Version info
 | 
			
		||||
MESA_MAJOR=7
 | 
			
		||||
MESA_MINOR=11
 | 
			
		||||
MESA_TINY=0
 | 
			
		||||
MESA_MINOR=6
 | 
			
		||||
MESA_TINY=1
 | 
			
		||||
MESA_VERSION = $(MESA_MAJOR).$(MESA_MINOR).$(MESA_TINY)
 | 
			
		||||
 | 
			
		||||
# external projects.  This should be useless now that we use libdrm.
 | 
			
		||||
@@ -25,7 +25,6 @@ CXXFLAGS = -O
 | 
			
		||||
LDFLAGS =
 | 
			
		||||
HOST_CFLAGS = $(CFLAGS)
 | 
			
		||||
GLU_CFLAGS = 
 | 
			
		||||
GLX_TLS = no
 | 
			
		||||
 | 
			
		||||
# Compiler for building demos/tests/etc
 | 
			
		||||
APP_CC = $(CC)
 | 
			
		||||
@@ -38,8 +37,6 @@ MKLIB_OPTIONS =
 | 
			
		||||
MKDEP = makedepend
 | 
			
		||||
MKDEP_OPTIONS = -fdepend
 | 
			
		||||
MAKE = make
 | 
			
		||||
FLEX = flex
 | 
			
		||||
BISON = bison
 | 
			
		||||
 | 
			
		||||
# Use MINSTALL for installing libraries, INSTALL for everything else
 | 
			
		||||
MINSTALL = $(SHELL) $(TOP)/bin/minstall
 | 
			
		||||
@@ -55,29 +52,18 @@ INDENT_FLAGS = -i4 -nut -br -brs -npcs -ce -T GLubyte -T GLbyte -T Bool
 | 
			
		||||
GL_LIB = GL
 | 
			
		||||
GLU_LIB = GLU
 | 
			
		||||
GLUT_LIB = glut
 | 
			
		||||
GLEW_LIB = GLEW
 | 
			
		||||
GLW_LIB = GLw
 | 
			
		||||
OSMESA_LIB = OSMesa
 | 
			
		||||
EGL_LIB = EGL
 | 
			
		||||
GLESv1_CM_LIB = GLESv1_CM
 | 
			
		||||
GLESv2_LIB = GLESv2
 | 
			
		||||
VG_LIB = OpenVG
 | 
			
		||||
GLAPI_LIB = glapi
 | 
			
		||||
WAYLAND_EGL_LIB = wayland-egl
 | 
			
		||||
GBM_LIB = gbm
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Library names (actual file names)
 | 
			
		||||
GL_LIB_NAME = lib$(GL_LIB).so
 | 
			
		||||
GLU_LIB_NAME = lib$(GLU_LIB).so
 | 
			
		||||
GLUT_LIB_NAME = lib$(GLUT_LIB).so
 | 
			
		||||
GLEW_LIB_NAME = lib$(GLEW_LIB).a
 | 
			
		||||
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
 | 
			
		||||
WAYLAND_EGL_LIB_NAME = lib$(WAYLAND_EGL_LIB).so
 | 
			
		||||
GBM_LIB_NAME = lib$(GBM_LIB).so
 | 
			
		||||
 | 
			
		||||
# globs used to install the lib and all symlinks
 | 
			
		||||
GL_LIB_GLOB = $(GL_LIB_NAME)*
 | 
			
		||||
@@ -85,16 +71,6 @@ GLU_LIB_GLOB = $(GLU_LIB_NAME)*
 | 
			
		||||
GLUT_LIB_GLOB = $(GLUT_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)*
 | 
			
		||||
WAYLAND_EGL_LIB_GLOB = $(WAYLAND_EGL_LIB_NAME)*
 | 
			
		||||
GBM_LIB_GLOB = $(GBM_LIB_NAME)*
 | 
			
		||||
 | 
			
		||||
DRI_CFLAGS = $(CFLAGS)
 | 
			
		||||
DRI_CXXFLAGS = $(CXXFLAGS)
 | 
			
		||||
 | 
			
		||||
# Optional assembly language optimization files for libGL
 | 
			
		||||
MESA_ASM_SOURCES = 
 | 
			
		||||
@@ -107,29 +83,25 @@ 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 glut/glx glw
 | 
			
		||||
SRC_DIRS = mesa gallium egl gallium/winsys glu glut/glx glew glw
 | 
			
		||||
GLU_DIRS = sgi
 | 
			
		||||
DRIVER_DIRS = x11 osmesa
 | 
			
		||||
# Which subdirs under $(TOP)/progs/ to enter:
 | 
			
		||||
PROGRAM_DIRS = demos redbook samples glsl xdemos
 | 
			
		||||
 | 
			
		||||
# EGL drivers to build
 | 
			
		||||
EGL_DRIVERS_DIRS = glx
 | 
			
		||||
 | 
			
		||||
# gbm backends to build
 | 
			
		||||
GBM_BACKEND_DIRS = dri
 | 
			
		||||
# EGL directories
 | 
			
		||||
EGL_DRIVERS_DIRS = demo
 | 
			
		||||
 | 
			
		||||
# 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 i965 svga r300 nvfx nv50 failover
 | 
			
		||||
GALLIUM_AUXILIARY_DIRS = rbug draw translate cso_cache pipebuffer tgsi sct rtasm util indices
 | 
			
		||||
GALLIUM_AUXILIARIES = $(foreach DIR,$(GALLIUM_AUXILIARY_DIRS),$(TOP)/src/gallium/auxiliary/$(DIR)/lib$(DIR).a)
 | 
			
		||||
GALLIUM_DRIVERS_DIRS = softpipe i915simple failover trace identity
 | 
			
		||||
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
 | 
			
		||||
GALLIUM_WINSYS_DIRS = xlib egl_xlib
 | 
			
		||||
GALLIUM_WINSYS_DRM_DIRS =
 | 
			
		||||
GALLIUM_STATE_TRACKERS_DIRS = glx
 | 
			
		||||
 | 
			
		||||
# native platforms EGL should support
 | 
			
		||||
EGL_PLATFORMS = x11
 | 
			
		||||
EGL_CLIENT_APIS = $(GL_LIB)
 | 
			
		||||
 | 
			
		||||
# Library dependencies
 | 
			
		||||
#EXTRA_LIB_PATH ?=
 | 
			
		||||
@@ -140,18 +112,10 @@ GLU_LIB_DEPS    = $(EXTRA_LIB_PATH) -L$(TOP)/$(LIB_DIR) -l$(GL_LIB) -lm
 | 
			
		||||
GLUT_LIB_DEPS   = $(EXTRA_LIB_PATH) -L$(TOP)/$(LIB_DIR) -l$(GLU_LIB) -l$(GL_LIB) -lX11 -lXmu -lXi -lm
 | 
			
		||||
GLW_LIB_DEPS    = $(EXTRA_LIB_PATH) -L$(TOP)/$(LIB_DIR) -l$(GL_LIB) -lXt -lX11
 | 
			
		||||
APP_LIB_DEPS    = $(EXTRA_LIB_PATH) -L$(TOP)/$(LIB_DIR) -l$(GLUT_LIB) -l$(GLU_LIB) -l$(GL_LIB) -lm
 | 
			
		||||
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
 | 
			
		||||
WAYLAND_EGL_LIB_DEPS = $(EXTRA_LIB_PATH) -lwayland-client -ldrm
 | 
			
		||||
GBM_LIB_DEPS = $(EXTRA_LIB_PATH) -ludev -ldl
 | 
			
		||||
 | 
			
		||||
# Program dependencies - specific GL/glut libraries added in Makefiles
 | 
			
		||||
APP_LIB_DEPS = -lm
 | 
			
		||||
X11_LIBS = -lX11
 | 
			
		||||
 | 
			
		||||
DLOPEN_LIBS = -ldl
 | 
			
		||||
 | 
			
		||||
# Installation directories (for make install)
 | 
			
		||||
INSTALL_DIR = /usr/local
 | 
			
		||||
@@ -162,12 +126,6 @@ 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
 | 
			
		||||
 | 
			
		||||
# gbm backend install directory
 | 
			
		||||
GBM_BACKEND_INSTALL_DIR = $(INSTALL_LIB_DIR)/gbm
 | 
			
		||||
 | 
			
		||||
# Xorg driver install directory (for xorg state-tracker)
 | 
			
		||||
XORG_DRIVER_INSTALL_DIR = $(INSTALL_LIB_DIR)/xorg/modules/drivers
 | 
			
		||||
 | 
			
		||||
@@ -188,18 +146,3 @@ 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 =
 | 
			
		||||
WAYLAND_EGL_PC_REQ_PRIV =
 | 
			
		||||
WAYLAND_EGL_PC_LIB_PRIV =
 | 
			
		||||
WAYLAND_EGL_PC_CFLAGS =
 | 
			
		||||
GBM_PC_REQ_PRIV =
 | 
			
		||||
GBM_PC_LIB_PRIV =
 | 
			
		||||
GBM_PC_CFLAGS =
 | 
			
		||||
 
 | 
			
		||||
@@ -30,11 +30,9 @@ ASM_SOURCES =
 | 
			
		||||
MESA_ASM_SOURCES = 
 | 
			
		||||
 | 
			
		||||
# Library/program dependencies
 | 
			
		||||
MESA_MODULES  = $(TOP)/src/mesa/libmesa.a
 | 
			
		||||
 | 
			
		||||
LIBDRM_CFLAGS = `pkg-config --cflags libdrm`
 | 
			
		||||
LIBDRM_LIB = `pkg-config --libs libdrm`
 | 
			
		||||
DRI_LIB_DEPS = $(MESA_MODULES) -L/usr/local/lib -lm -pthread -lexpat $(LIBDRM_LIB)
 | 
			
		||||
DRI_LIB_DEPS = -L/usr/local/lib -lm -pthread -lexpat $(LIBDRM_LIB)
 | 
			
		||||
GL_LIB_DEPS = -L/usr/local/lib -lX11 -lXext -lXxf86vm -lXdamage -lXfixes \
 | 
			
		||||
	-lm -pthread $(LIBDRM_LIB)
 | 
			
		||||
 | 
			
		||||
@@ -43,11 +41,15 @@ GLW_LIB_DEPS = -L$(TOP)/$(LIB_DIR) -L/usr/local/lib -lGL -lXt -lX11
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Directories
 | 
			
		||||
SRC_DIRS = glx gallium mesa glu glut/glx glw
 | 
			
		||||
SRC_DIRS = glx/x11 gallium mesa glu glut/glx glew glw
 | 
			
		||||
DRIVER_DIRS = dri
 | 
			
		||||
PROGRAM_DIRS = 
 | 
			
		||||
WINDOW_SYSTEM=dri
 | 
			
		||||
 | 
			
		||||
DRM_SOURCE_PATH=$(TOP)/../drm
 | 
			
		||||
 | 
			
		||||
# ffb and gamma are missing because they have not been converted to use the new
 | 
			
		||||
# interface.
 | 
			
		||||
DRI_DIRS = i810 i915 i965 mach64 mga r128 r200 r300 radeon tdfx \
 | 
			
		||||
	   unichrome savage sis
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -23,11 +23,11 @@ DEFINES = -D_POSIX_SOURCE -D_POSIX_C_SOURCE=199309L -D_SVID_SOURCE \
 | 
			
		||||
X11_INCLUDES = -I/usr/X11R6/include
 | 
			
		||||
 | 
			
		||||
CFLAGS = -Wall -Wmissing-prototypes -Wdeclaration-after-statement \
 | 
			
		||||
	-Wpointer-arith $(OPT_FLAGS) $(PIC_FLAGS) $(ARCH_FLAGS) \
 | 
			
		||||
	$(DEFINES) $(ASM_FLAGS) $(X11_INCLUDES) -std=c99 -ffast-math
 | 
			
		||||
	$(OPT_FLAGS) $(PIC_FLAGS) $(ARCH_FLAGS) \
 | 
			
		||||
	$(DEFINES) $(ASM_FLAGS) $(X11_INCLUDES) -std=c99 -ffast-math 
 | 
			
		||||
 | 
			
		||||
CXXFLAGS = -Wall -Wpointer-arith $(OPT_FLAGS) $(PIC_FLAGS) $(ARCH_FLAGS) \
 | 
			
		||||
	$(DEFINES) $(X11_INCLUDES)
 | 
			
		||||
CXXFLAGS = -Wall $(OPT_FLAGS) $(PIC_FLAGS) $(ARCH_FLAGS) $(DEFINES) \
 | 
			
		||||
	$(X11_INCLUDES) 
 | 
			
		||||
 | 
			
		||||
# Work around aliasing bugs - developers should comment this out
 | 
			
		||||
CFLAGS += -fno-strict-aliasing
 | 
			
		||||
 
 | 
			
		||||
@@ -1,12 +1,12 @@
 | 
			
		||||
# linux-cell  (non-debug build)
 | 
			
		||||
 | 
			
		||||
include $(TOP)/configs/linux
 | 
			
		||||
include $(TOP)/configs/default
 | 
			
		||||
 | 
			
		||||
CONFIG_NAME = linux-cell
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Omiting other gallium drivers:
 | 
			
		||||
GALLIUM_DRIVERS_DIRS = cell softpipe trace rbug identity
 | 
			
		||||
GALLIUM_DRIVERS_DIRS = cell softpipe trace
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Compiler and flags
 | 
			
		||||
@@ -25,20 +25,15 @@ OPT_FLAGS = -O3
 | 
			
		||||
SDK = /opt/cell/sdk/usr
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
COMMON_C_CPP_FLAGS = $(OPT_FLAGS) -Wall -Winline \
 | 
			
		||||
	-fPIC -m32 -mabi=altivec -maltivec \
 | 
			
		||||
CFLAGS = $(OPT_FLAGS) -Wall -Winline -Wmissing-prototypes \
 | 
			
		||||
	-fPIC -m32 -std=c99 -mabi=altivec -maltivec \
 | 
			
		||||
	-I. -I$(SDK)/include \
 | 
			
		||||
	-DGALLIUM_CELL $(DEFINES)
 | 
			
		||||
 | 
			
		||||
CFLAGS = $(COMMON_C_CPP_FLAGS) -Wmissing-prototypes -std=c99
 | 
			
		||||
 | 
			
		||||
CXXFLAGS = $(COMMON_C_CPP_FLAGS)
 | 
			
		||||
	-DGALLIUM_CELL -DUSE_XSHM -D_BSD_SOURCE -D_SVID_SOURCE
 | 
			
		||||
 | 
			
		||||
CXXFLAGS = $(CFLAGS)
 | 
			
		||||
 | 
			
		||||
# Omitting glw here:
 | 
			
		||||
SRC_DIRS = glsl mapi/glapi mapi/vgapi mesa \
 | 
			
		||||
	gallium gallium/winsys gallium/targets glu glut/glx
 | 
			
		||||
SRC_DIRS = gallium mesa gallium/winsys glu glut/glx glew
 | 
			
		||||
 | 
			
		||||
# Build no traditional Mesa drivers:
 | 
			
		||||
DRIVER_DIRS =
 | 
			
		||||
 
 | 
			
		||||
@@ -4,6 +4,5 @@ include $(TOP)/configs/linux
 | 
			
		||||
 | 
			
		||||
CONFIG_NAME = linux-debug
 | 
			
		||||
 | 
			
		||||
OPT_FLAGS = -g
 | 
			
		||||
#CFLAGS += -pedantic
 | 
			
		||||
OPT_FLAGS = -g -ansi -pedantic
 | 
			
		||||
DEFINES += -DDEBUG -DDEBUG_MATH
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										38
									
								
								configs/linux-directfb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								configs/linux-directfb
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,38 @@
 | 
			
		||||
# Configuration for DirectFB
 | 
			
		||||
 | 
			
		||||
include $(TOP)/configs/default
 | 
			
		||||
 | 
			
		||||
CONFIG_NAME = linux-directfb
 | 
			
		||||
 | 
			
		||||
# Compiler and flags
 | 
			
		||||
CC  = gcc
 | 
			
		||||
CXX = g++
 | 
			
		||||
 | 
			
		||||
CFLAGS   = -Wall -O3 -ffast-math -fPIC -std=c99 -D_GNU_SOURCE -D_POSIX_SOURCE -D_SVID_SOURCE \
 | 
			
		||||
         -D_POSIX_C_SOURCE=199309L -D_BSD_SOURCE -DPTHREADS
 | 
			
		||||
 | 
			
		||||
CXXFLAGS = -Wall -O3 -fPIC -D_POSIX_SOURCE -D_POSIX_C_SOURCE=199309L -D_SVID_SOURCE -D_BSD_SOURCE   
 | 
			
		||||
 | 
			
		||||
# Work around aliasing bugs - developers should comment this out
 | 
			
		||||
CFLAGS += -fno-strict-aliasing
 | 
			
		||||
CXXFLAGS += -fno-strict-aliasing
 | 
			
		||||
 | 
			
		||||
HAVE_X86 = $(shell uname -m | grep 'i[3-6]86' >/dev/null && echo yes)
 | 
			
		||||
ifeq ($(HAVE_X86), yes)
 | 
			
		||||
     CFLAGS   += -DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM
 | 
			
		||||
     CXXFLAGS += -DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM
 | 
			
		||||
     MESA_ASM_SOURCES = $(X86_SOURCES)
 | 
			
		||||
     GLAPI_ASM_SOURCES = $(X86_API)
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
# Directories
 | 
			
		||||
SRC_DIRS     = gallium mesa glu glut/directfb glew
 | 
			
		||||
GLU_DIRS     = sgi
 | 
			
		||||
DRIVER_DIRS  = directfb
 | 
			
		||||
PROGRAM_DIRS = demos directfb
 | 
			
		||||
 | 
			
		||||
# Library/program dependencies
 | 
			
		||||
GL_LIB_DEPS   = -lm -lpthread
 | 
			
		||||
GLUT_LIB_DEPS = -L$(TOP)/$(LIB_DIR) -l$(GL_LIB) -l$(GLU_LIB)
 | 
			
		||||
APP_LIB_DEPS  = -L$(TOP)/$(LIB_DIR) -l$(GL_LIB) -l$(GLU_LIB) -l$(GLUT_LIB)
 | 
			
		||||
 | 
			
		||||
@@ -43,36 +43,25 @@ MESA_ASM_SOURCES =
 | 
			
		||||
# Library/program dependencies
 | 
			
		||||
EXTRA_LIB_PATH=-L/usr/X11R6/lib
 | 
			
		||||
 | 
			
		||||
MESA_MODULES  = $(TOP)/src/mesa/libmesa.a
 | 
			
		||||
 | 
			
		||||
LIBDRM_CFLAGS = $(shell pkg-config --cflags libdrm)
 | 
			
		||||
LIBDRM_LIB = $(shell pkg-config --libs libdrm)
 | 
			
		||||
DRI_LIB_DEPS  = $(MESA_MODULES) $(EXTRA_LIB_PATH) -lm -lpthread -lexpat -ldl $(LIBDRM_LIB)
 | 
			
		||||
DRI_LIB_DEPS  = $(EXTRA_LIB_PATH) -lm -lpthread -lexpat -ldl $(LIBDRM_LIB)
 | 
			
		||||
GL_LIB_DEPS   = $(EXTRA_LIB_PATH) -lX11 -lXext -lXxf86vm -lXdamage -lXfixes \
 | 
			
		||||
		-lm -lpthread -ldl $(LIBDRM_LIB)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Directories
 | 
			
		||||
SRC_DIRS := glx egl $(SRC_DIRS)
 | 
			
		||||
SRC_DIRS := glx/x11 egl $(SRC_DIRS)
 | 
			
		||||
PROGRAM_DIRS := egl $(PROGRAM_DIRS)
 | 
			
		||||
 | 
			
		||||
# EGL directories
 | 
			
		||||
EGL_DRIVERS_DIRS = glx
 | 
			
		||||
EGL_DRIVERS_DIRS = demo glx
 | 
			
		||||
 | 
			
		||||
DRIVER_DIRS = dri
 | 
			
		||||
GALLIUM_WINSYS_DIRS = sw sw/xlib drm/vmware drm/intel drm/i965
 | 
			
		||||
GALLIUM_TARGET_DIRS = 
 | 
			
		||||
WINDOW_SYSTEM = dri
 | 
			
		||||
GALLIUM_WINSYS_DIRS = drm
 | 
			
		||||
GALLIUM_WINSYS_DRM_DIRS = intel
 | 
			
		||||
GALLIUM_STATE_TRACKERS_DIRS = egl
 | 
			
		||||
 | 
			
		||||
DRI_DIRS = i810 i915 i965 mach64 mga nouveau r128 r200 r300 r600 radeon \
 | 
			
		||||
	savage sis tdfx unichrome swrast
 | 
			
		||||
 | 
			
		||||
INTEL_LIBS = $(shell pkg-config --libs libdrm_intel)
 | 
			
		||||
INTEL_CFLAGS = $(shell pkg-config --cflags libdrm_intel)
 | 
			
		||||
 | 
			
		||||
NOUVEAU_LIBS = $(shell pkg-config --libs libdrm_nouveau)
 | 
			
		||||
NOUVEAU_CFLAGS = $(shell pkg-config --cflags libdrm_nouveau)
 | 
			
		||||
 | 
			
		||||
LIBDRM_RADEON_LIBS = $(shell pkg-config --libs libdrm_radeon)
 | 
			
		||||
LIBDRM_RADEON_CFLAGS = $(shell pkg-config --cflags libdrm_radeon)
 | 
			
		||||
RADEON_CFLAGS = "-DHAVE_LIBDRM_RADEON=1 $(LIBDRM_RADEON_CFLAGS)"
 | 
			
		||||
RADEON_LDFLAGS = $(LIBDRM_RADEON_LIBS)
 | 
			
		||||
DRI_DIRS = i810 i915 i965 mach64 mga r128 r200 r300 radeon s3v \
 | 
			
		||||
	savage sis tdfx trident unichrome ffb swrast
 | 
			
		||||
 
 | 
			
		||||
@@ -11,6 +11,6 @@ ARCH_FLAGS = -DDEBUG
 | 
			
		||||
#DRI_DIRS = i915tex i915 
 | 
			
		||||
#DRI_DIRS = i965
 | 
			
		||||
#DRI_DIRS = radeon r200 r300
 | 
			
		||||
#DRI_DIRS = unichrome sis
 | 
			
		||||
#DRI_DIRS = unichrome sis trident
 | 
			
		||||
#DRI_DIRS = i810 mga r128 tdfx
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -16,7 +16,7 @@ LIB_DIR = lib64
 | 
			
		||||
# Library/program dependencies
 | 
			
		||||
EXTRA_LIB_PATH=-L/usr/X11R6/lib64
 | 
			
		||||
 | 
			
		||||
# sis is missing because it has not been converted to use
 | 
			
		||||
# ffb, gamma, and sis are missing because they have not be converted to use
 | 
			
		||||
# the new interface.  i810 are missing because there is no x86-64
 | 
			
		||||
# system where they could *ever* be used.
 | 
			
		||||
#
 | 
			
		||||
 
 | 
			
		||||
@@ -41,16 +41,32 @@ MESA_ASM_SOURCES =
 | 
			
		||||
# Library/program dependencies
 | 
			
		||||
EXTRA_LIB_PATH=$(shell pkg-config --libs-only-L x11)
 | 
			
		||||
 | 
			
		||||
MESA_MODULES  = $(TOP)/src/mesa/libmesa.a
 | 
			
		||||
 | 
			
		||||
LIBDRM_CFLAGS = $(shell pkg-config --cflags libdrm)
 | 
			
		||||
LIBDRM_LIB = $(shell pkg-config --libs libdrm)
 | 
			
		||||
DRI_LIB_DEPS  = $(MESA_MODULES) $(EXTRA_LIB_PATH) -lm -lpthread -lexpat -ldl $(LIBDRM_LIB)
 | 
			
		||||
DRI_LIB_DEPS  = $(EXTRA_LIB_PATH) -lm -lpthread -lexpat -ldl $(LIBDRM_LIB)
 | 
			
		||||
GL_LIB_DEPS   = $(EXTRA_LIB_PATH) -lX11 -lXext -lXxf86vm -lm -lpthread -ldl \
 | 
			
		||||
                $(LIBDRM_LIB) $(shell pkg-config --libs xcb) $(shell pkg-config --libs x11-xcb) $(shell pkg-config --libs xcb-glx)
 | 
			
		||||
 | 
			
		||||
SRC_DIRS = glx gallium mesa glu glut/glx glw
 | 
			
		||||
 | 
			
		||||
# This is now 0 by default since it seems to confuse the hell out of people
 | 
			
		||||
# and generate a lot of extra noise on bugzilla.  If you need to build with
 | 
			
		||||
# EGL, do 'make linux-dri USING_EGL=1'
 | 
			
		||||
 | 
			
		||||
USING_EGL=0
 | 
			
		||||
 | 
			
		||||
# Directories
 | 
			
		||||
ifeq ($(USING_EGL), 1)
 | 
			
		||||
SRC_DIRS = egl glx/x11 gallium mesa glu glut/glx glew glw
 | 
			
		||||
PROGRAM_DIRS = egl
 | 
			
		||||
else
 | 
			
		||||
SRC_DIRS = glx/x11 gallium mesa glu glut/glx glew glw
 | 
			
		||||
PROGRAM_DIRS = xdemos
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
DRIVER_DIRS = dri
 | 
			
		||||
DRI_DIRS = i810 i915 mach64 mga r128 r200 r300 radeon \
 | 
			
		||||
	savage sis tdfx unichrome
 | 
			
		||||
WINDOW_SYSTEM=dri
 | 
			
		||||
 | 
			
		||||
# gamma are missing because they have not been converted to use the new
 | 
			
		||||
# interface.
 | 
			
		||||
DRI_DIRS = i810 i915 mach64 mga r128 r200 r300 radeon s3v \
 | 
			
		||||
	savage sis tdfx trident unichrome ffb 
 | 
			
		||||
 
 | 
			
		||||
@@ -38,21 +38,28 @@ MESA_ASM_SOURCES =
 | 
			
		||||
# Library/program dependencies
 | 
			
		||||
EXTRA_LIB_PATH=-L/usr/X11R6/lib
 | 
			
		||||
 | 
			
		||||
MESA_MODULES  = $(TOP)/src/mesa/libmesa.a
 | 
			
		||||
 | 
			
		||||
LIBDRM_CFLAGS = $(shell pkg-config --cflags libdrm)
 | 
			
		||||
LIBDRM_LIB = $(shell pkg-config --libs libdrm)
 | 
			
		||||
DRI_LIB_DEPS  = $(MESA_MODULES) $(EXTRA_LIB_PATH) -lm -lpthread -lexpat -ldl $(LIBDRM_LIB)
 | 
			
		||||
DRI_LIB_DEPS  = $(EXTRA_LIB_PATH) -lm -lpthread -lexpat -ldl $(LIBDRM_LIB)
 | 
			
		||||
GL_LIB_DEPS   = $(EXTRA_LIB_PATH) -lX11 -lXext -lXxf86vm -lXdamage -lXfixes \
 | 
			
		||||
		-lm -lpthread -ldl \
 | 
			
		||||
                $(LIBDRM_LIB)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# This is now 0 by default since it seems to confuse the hell out of people
 | 
			
		||||
# and generate a lot of extra noise on bugzilla.  If you need to build with
 | 
			
		||||
# EGL, do 'make linux-dri USING_EGL=1'
 | 
			
		||||
 | 
			
		||||
USING_EGL=0
 | 
			
		||||
 | 
			
		||||
# Directories
 | 
			
		||||
SRC_DIRS = gallium mesa gallium/winsys gallium/targets glu egl
 | 
			
		||||
SRC_DIRS = gallium mesa gallium/winsys glu egl
 | 
			
		||||
PROGRAM_DIRS = egl
 | 
			
		||||
 | 
			
		||||
DRIVER_DIRS = dri
 | 
			
		||||
WINDOW_SYSTEM = dri
 | 
			
		||||
GALLIUM_WINSYS_DIRS = egl_drm
 | 
			
		||||
GALLIUM_TARGET_DIRS =
 | 
			
		||||
 | 
			
		||||
# gamma are missing because they have not been converted to use the new
 | 
			
		||||
# interface.
 | 
			
		||||
DRI_DIRS = intel 
 | 
			
		||||
 
 | 
			
		||||
@@ -4,13 +4,14 @@ include $(TOP)/configs/linux
 | 
			
		||||
 | 
			
		||||
CONFIG_NAME = linux-fbdev
 | 
			
		||||
 | 
			
		||||
CFLAGS += -DUSE_GLFBDEV_DRIVER
 | 
			
		||||
CFLAGS = -O3 -ffast-math -ansi -pedantic -fPIC -D_POSIX_C_SOURCE=199309L -D_SVID_SOURCE -D_BSD_SOURCE -DPTHREADS -DUSE_GLFBDEV_DRIVER
 | 
			
		||||
 | 
			
		||||
# Work around aliasing bugs - developers should comment this out
 | 
			
		||||
CFLAGS += -fno-strict-aliasing
 | 
			
		||||
 | 
			
		||||
SRC_DIRS += glut/fbdev
 | 
			
		||||
SRC_DIRS = gallium mesa glu glut/fbdev glew
 | 
			
		||||
DRIVER_DIRS = fbdev osmesa
 | 
			
		||||
PROGRAM_DIRS = fbdev demos redbook samples
 | 
			
		||||
 | 
			
		||||
GL_LIB_DEPS = $(EXTRA_LIB_PATH) -lm -lpthread
 | 
			
		||||
OSMESA_LIB_DEPS = -lm -lpthread
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										23
									
								
								configs/linux-glide
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								configs/linux-glide
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,23 @@
 | 
			
		||||
# Configuration for generic Linux with 3Dfx Glide driver
 | 
			
		||||
 | 
			
		||||
include $(TOP)/configs/default
 | 
			
		||||
 | 
			
		||||
CONFIG_NAME = linux-glide
 | 
			
		||||
 | 
			
		||||
# Compiler and flags
 | 
			
		||||
CC = gcc
 | 
			
		||||
CXX = g++
 | 
			
		||||
 | 
			
		||||
CFLAGS = -O3 -ansi -pedantic -fPIC -ffast-math -D_POSIX_SOURCE -D_POSIX_C_SOURCE=199309L -D_SVID_SOURCE -D_BSD_SOURCE -DUSE_XSHM -DPTHREADS -I/usr/X11R6/include -DFX -I/usr/include/glide -I/usr/local/glide/include
 | 
			
		||||
CXXFLAGS = -O3 -ansi -pedantic -fPIC -ffast-math -D_POSIX_SOURCE -D_POSIX_C_SOURCE=199309L -D_SVID_SOURCE -D_BSD_SOURCE
 | 
			
		||||
GLUT_CFLAGS = -fexceptions
 | 
			
		||||
 | 
			
		||||
# Work around aliasing bugs - developers should comment this out
 | 
			
		||||
CFLAGS += -fno-strict-aliasing
 | 
			
		||||
CXXFLAGS += -fno-strict-aliasing
 | 
			
		||||
 | 
			
		||||
# Library/program dependencies
 | 
			
		||||
GL_LIB_DEPS = -L/usr/X11R6/lib -lX11 -lXext -L/usr/local/glide/lib -lglide3x -lm -lpthread
 | 
			
		||||
GLUT_LIB_DEPS = -L$(TOP)/$(LIB_DIR) -l$(GLU_LIB) -l$(GL_LIB) -L/usr/X11R6/lib -lX11 -lXmu -lXt -lXi -lm
 | 
			
		||||
GLW_LIB_DEPS = -L$(TOP)/$(LIB_DIR) -l$(GL_LIB) -L/usr/X11R6/lib -lXt -lX11
 | 
			
		||||
APP_LIB_DEPS = -L$(TOP)/$(LIB_DIR) -l$(GLUT_LIB) -l$(GLU_LIB) -l$(GL_LIB) -L/usr/local/glide/lib -lglide3x -lm
 | 
			
		||||
@@ -1,9 +0,0 @@
 | 
			
		||||
# Configuration for standalone mode i965 debug
 | 
			
		||||
 | 
			
		||||
include $(TOP)/configs/linux-debug
 | 
			
		||||
 | 
			
		||||
CONFIG_NAME = linux-i965
 | 
			
		||||
 | 
			
		||||
GALLIUM_DRIVER_DIRS = i965
 | 
			
		||||
GALLIUM_WINSYS_DIRS = drm/i965/xlib
 | 
			
		||||
GALLIUM_TARGET_DIRS =
 | 
			
		||||
@@ -42,11 +42,12 @@ MESA_ASM_SOURCES =
 | 
			
		||||
# Library/program dependencies
 | 
			
		||||
EXTRA_LIB_PATH=-L/usr/X11R6/lib
 | 
			
		||||
 | 
			
		||||
MESA_MODULES  = $(TOP)/src/mesa/libmesa.a
 | 
			
		||||
DRI_LIB_DEPS  = $(MESA_MODULES) $(EXTRA_LIB_PATH) -lm -lpthread -lexpat -ldl
 | 
			
		||||
DRI_LIB_DEPS  = $(EXTRA_LIB_PATH) -lm -lpthread -lexpat -ldl
 | 
			
		||||
GL_LIB_DEPS   = $(EXTRA_LIB_PATH) -lX11 -lXext -lXxf86vm -lm -lpthread -ldl
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Directories
 | 
			
		||||
SRC_DIRS = glx glu glut/glx glw
 | 
			
		||||
SRC_DIRS = glx/x11 glu glut/glx glew glw
 | 
			
		||||
DRIVER_DIRS =
 | 
			
		||||
PROGRAM_DIRS = 
 | 
			
		||||
WINDOW_SYSTEM=dri
 | 
			
		||||
 
 | 
			
		||||
@@ -1,18 +1,18 @@
 | 
			
		||||
# -*-makefile-*-
 | 
			
		||||
# Configuration for Linux and LLVM with optimizations
 | 
			
		||||
# Configuration for Linux and LLVM with debugging info
 | 
			
		||||
# Builds the llvmpipe gallium driver
 | 
			
		||||
 | 
			
		||||
include $(TOP)/configs/linux
 | 
			
		||||
 | 
			
		||||
CONFIG_NAME = linux-llvm
 | 
			
		||||
 | 
			
		||||
#GALLIUM_AUXILIARY_DIRS += gallivm
 | 
			
		||||
 | 
			
		||||
# Add llvmpipe driver
 | 
			
		||||
GALLIUM_DRIVERS_DIRS += llvmpipe
 | 
			
		||||
 | 
			
		||||
OPT_FLAGS = -O3 -ansi -pedantic
 | 
			
		||||
ARCH_FLAGS = -mmmx -msse -msse2 -mstackrealign
 | 
			
		||||
 | 
			
		||||
DEFINES += -DNDEBUG -DGALLIUM_LLVMPIPE
 | 
			
		||||
OPT_FLAGS = -g -ansi -pedantic
 | 
			
		||||
DEFINES += -DDEBUG -DDEBUG_MATH -DGALLIUM_LLVMPIPE -DHAVE_UDIS86
 | 
			
		||||
 | 
			
		||||
# override -std=c99
 | 
			
		||||
CFLAGS += -std=gnu99
 | 
			
		||||
@@ -24,16 +24,14 @@ ifeq ($(LLVM_VERSION),)
 | 
			
		||||
  MESA_LLVM=0
 | 
			
		||||
else
 | 
			
		||||
  MESA_LLVM=1
 | 
			
		||||
  HAVE_LLVM := 0x0$(subst .,0,$(LLVM_VERSION:svn=))
 | 
			
		||||
  DEFINES += -DHAVE_LLVM=$(HAVE_LLVM)
 | 
			
		||||
#  $(info Using LLVM version: $(LLVM_VERSION))
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
ifeq ($(MESA_LLVM),1)
 | 
			
		||||
  LLVM_CFLAGS=`llvm-config --cppflags`
 | 
			
		||||
  LLVM_CXXFLAGS=`llvm-config --cxxflags` -Wno-long-long
 | 
			
		||||
  LLVM_LDFLAGS = $(shell llvm-config --ldflags)
 | 
			
		||||
  LLVM_LIBS = $(shell llvm-config --libs)
 | 
			
		||||
#  LLVM_CFLAGS=`llvm-config --cflags`
 | 
			
		||||
  LLVM_CXXFLAGS=`llvm-config --cxxflags backend bitreader engine ipo interpreter instrumentation` -Wno-long-long
 | 
			
		||||
  LLVM_LDFLAGS = $(shell llvm-config --ldflags backend bitreader engine ipo interpreter instrumentation)
 | 
			
		||||
  LLVM_LIBS = $(shell llvm-config --libs backend bitreader engine ipo interpreter instrumentation)
 | 
			
		||||
  MKLIB_OPTIONS=-cplusplus
 | 
			
		||||
else
 | 
			
		||||
  LLVM_CFLAGS=
 | 
			
		||||
@@ -41,4 +39,4 @@ else
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
LD = g++
 | 
			
		||||
GL_LIB_DEPS = $(LLVM_LDFLAGS) $(LLVM_LIBS) $(EXTRA_LIB_PATH) -lX11 -lXext -lm -lpthread -lstdc++
 | 
			
		||||
GL_LIB_DEPS = $(LLVM_LDFLAGS) $(LLVM_LIBS) $(EXTRA_LIB_PATH) -lX11 -lXext -lm -lpthread -lstdc++ -ludis86
 | 
			
		||||
 
 | 
			
		||||
@@ -1,12 +0,0 @@
 | 
			
		||||
# -*-makefile-*-
 | 
			
		||||
# Configuration for Linux and LLVM with debugging info
 | 
			
		||||
# Builds the llvmpipe gallium driver
 | 
			
		||||
 | 
			
		||||
include $(TOP)/configs/linux-llvm
 | 
			
		||||
 | 
			
		||||
CONFIG_NAME = linux-llvm-debug
 | 
			
		||||
 | 
			
		||||
OPT_FLAGS = -g -ansi -pedantic
 | 
			
		||||
 | 
			
		||||
DEFINES += -DDEBUG -UNDEBUG
 | 
			
		||||
 | 
			
		||||
@@ -1,28 +0,0 @@
 | 
			
		||||
# Configuration for OpenGL ES on Linux
 | 
			
		||||
 | 
			
		||||
include $(TOP)/configs/linux
 | 
			
		||||
 | 
			
		||||
CONFIG_NAME = linux-opengl-es
 | 
			
		||||
 | 
			
		||||
# Directories to build
 | 
			
		||||
LIB_DIR = lib
 | 
			
		||||
SRC_DIRS = egl glsl mapi/es1api mapi/es2api mesa/es \
 | 
			
		||||
	gallium gallium/winsys gallium/targets
 | 
			
		||||
 | 
			
		||||
# egl st needs this
 | 
			
		||||
DEFINES += -DGLX_DIRECT_RENDERING
 | 
			
		||||
 | 
			
		||||
# no mesa or egl drivers
 | 
			
		||||
DRIVER_DIRS =
 | 
			
		||||
EGL_DRIVERS_DIRS =
 | 
			
		||||
 | 
			
		||||
GALLIUM_DRIVERS_DIRS = softpipe
 | 
			
		||||
 | 
			
		||||
# build libGLES*.so
 | 
			
		||||
GALLIUM_STATE_TRACKERS_DIRS = es
 | 
			
		||||
 | 
			
		||||
# build egl_x11_{swrast,i915}.so
 | 
			
		||||
GALLIUM_DRIVERS_DIRS += trace rbug i915
 | 
			
		||||
GALLIUM_STATE_TRACKERS_DIRS += egl
 | 
			
		||||
GALLIUM_WINSYS_DIRS += drm/intel
 | 
			
		||||
GALLIUM_TARGET_DIRS += egl-swrast egl-i915
 | 
			
		||||
@@ -9,7 +9,7 @@ CONFIG_NAME = linux-osmesa
 | 
			
		||||
# Compiler and flags
 | 
			
		||||
CC = gcc
 | 
			
		||||
CXX = g++
 | 
			
		||||
CFLAGS = -g -ansi -pedantic -fPIC -ffast-math -D_POSIX_SOURCE -D_POSIX_C_SOURCE=199309L -D_SVID_SOURCE -D_BSD_SOURCE -D_GNU_SOURCE -DPTHREADS
 | 
			
		||||
CFLAGS = -O3 -ansi -pedantic -fPIC -ffast-math -D_POSIX_SOURCE -D_POSIX_C_SOURCE=199309L -D_SVID_SOURCE -D_BSD_SOURCE -DPTHREADS
 | 
			
		||||
CXXFLAGS = -O3 -ansi -pedantic -fPIC -ffast-math -D_POSIX_SOURCE -D_POSIX_C_SOURCE=199309L -D_SVID_SOURCE -D_BSD_SOURCE
 | 
			
		||||
 | 
			
		||||
# Work around aliasing bugs - developers should comment this out
 | 
			
		||||
@@ -17,11 +17,12 @@ CFLAGS += -fno-strict-aliasing
 | 
			
		||||
CXXFLAGS += -fno-strict-aliasing
 | 
			
		||||
 | 
			
		||||
# Directories
 | 
			
		||||
SRC_DIRS = mapi/glapi glsl mesa glu
 | 
			
		||||
SRC_DIRS = gallium mesa glu
 | 
			
		||||
DRIVER_DIRS = osmesa
 | 
			
		||||
PROGRAM_DIRS = osdemos
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Dependencies
 | 
			
		||||
OSMESA_LIB_DEPS = -lm -lpthread -ldl
 | 
			
		||||
OSMESA_LIB_DEPS = -lm -lpthread
 | 
			
		||||
GLU_LIB_DEPS = -L$(TOP)/$(LIB_DIR) -l$(OSMESA_LIB)
 | 
			
		||||
APP_LIB_DEPS = -lm -lpthread
 | 
			
		||||
 
 | 
			
		||||
@@ -24,6 +24,7 @@ OSMESA_LIB_NAME = libOSMesa.a
 | 
			
		||||
# Directories
 | 
			
		||||
SRC_DIRS = mesa glu
 | 
			
		||||
DRIVER_DIRS = osmesa
 | 
			
		||||
PROGRAM_DIRS = osdemos
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Dependencies
 | 
			
		||||
 
 | 
			
		||||
@@ -20,8 +20,9 @@ OSMESA_LIB_NAME = libOSMesa16.so
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Directories
 | 
			
		||||
SRC_DIRS = mapi/glapi glsl mesa glu
 | 
			
		||||
SRC_DIRS = gallium mesa glu
 | 
			
		||||
DRIVER_DIRS = osmesa
 | 
			
		||||
PROGRAM_DIRS = 
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Dependencies
 | 
			
		||||
 
 | 
			
		||||
@@ -24,6 +24,7 @@ OSMESA_LIB_NAME = libOSMesa16.a
 | 
			
		||||
# Directories
 | 
			
		||||
SRC_DIRS = gallium mesa glu
 | 
			
		||||
DRIVER_DIRS = osmesa
 | 
			
		||||
PROGRAM_DIRS = 
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Dependencies
 | 
			
		||||
 
 | 
			
		||||
@@ -20,8 +20,9 @@ OSMESA_LIB_NAME = libOSMesa32.so
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Directories
 | 
			
		||||
SRC_DIRS = mapi/glapi glsl mesa glu
 | 
			
		||||
SRC_DIRS = gallium mesa glu
 | 
			
		||||
DRIVER_DIRS = osmesa
 | 
			
		||||
PROGRAM_DIRS = 
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Dependencies
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										54
									
								
								configs/linux-solo
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								configs/linux-solo
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,54 @@
 | 
			
		||||
# Configuration for linux-solo: Linux DRI hardware drivers for fbdev
 | 
			
		||||
 | 
			
		||||
include $(TOP)/configs/default
 | 
			
		||||
 | 
			
		||||
CONFIG_NAME = linux-solo
 | 
			
		||||
 | 
			
		||||
# Compiler and flags
 | 
			
		||||
CC = gcc
 | 
			
		||||
CXX = g++
 | 
			
		||||
 | 
			
		||||
WARN_FLAGS = -Wall -Wundef
 | 
			
		||||
OPT_FLAGS  = -O3 -g
 | 
			
		||||
PIC_FLAGS  = -fPIC
 | 
			
		||||
 | 
			
		||||
# Add '-DGLX_USE_TLS' to ARCH_FLAGS to enable TLS support.
 | 
			
		||||
ARCH_FLAGS ?=
 | 
			
		||||
 | 
			
		||||
# DRM and pciaccess
 | 
			
		||||
LIBDRM_CFLAGS = $(shell pkg-config --cflags libdrm)
 | 
			
		||||
LIBDRM_LIB = $(shell pkg-config --libs libdrm)
 | 
			
		||||
PCIACCESS_CFLAGS = $(shell pkg-config --cflags pciaccess)
 | 
			
		||||
PCIACCESS_LIB = $(shell pkg-config --libs pciaccess)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
DEFINES = -D_POSIX_SOURCE -D_POSIX_C_SOURCE=199309L -D_SVID_SOURCE \
 | 
			
		||||
	-D_BSD_SOURCE -D_GNU_SOURCE -DHAVE_POSIX_MEMALIGN \
 | 
			
		||||
	-DPTHREADS -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER \
 | 
			
		||||
	-DHAVE_ALIAS
 | 
			
		||||
 | 
			
		||||
CFLAGS   = $(WARN_FLAGS) $(OPT_FLAGS) $(PIC_FLAGS) $(ARCH_FLAGS) $(DEFINES) \
 | 
			
		||||
	$(ASM_FLAGS) -std=c99 -ffast-math 
 | 
			
		||||
 | 
			
		||||
CXXFLAGS = $(WARN_FLAGS) $(OPT_FLAGS) $(PIC_FLAGS) $(ARCH_FLAGS) $(DEFINES)
 | 
			
		||||
 | 
			
		||||
# Work around aliasing bugs - developers should comment this out
 | 
			
		||||
CFLAGS += -fno-strict-aliasing
 | 
			
		||||
CXXFLAGS += -fno-strict-aliasing
 | 
			
		||||
 | 
			
		||||
MESA_ASM_SOURCES = 
 | 
			
		||||
 | 
			
		||||
# Library/program dependencies
 | 
			
		||||
DRI_LIB_DEPS = -lm -lpthread -lexpat -ldl -L$(TOP)/$(LIB_DIR) $(PCIACCESS_LIB)
 | 
			
		||||
GL_LIB_DEPS = -lm -lpthread -ldl
 | 
			
		||||
GLU_LIB_DEPS = -L$(TOP)/$(LIB_DIR) -l$(GL_LIB) -lm
 | 
			
		||||
GLUT_LIB_DEPS = -L$(TOP)/$(LIB_DIR) -l$(GLU_LIB) -l$(GL_LIB) -lm
 | 
			
		||||
APP_LIB_DEPS = -L$(TOP)/$(LIB_DIR) -l$(GLUT_LIB) -l$(GLU_LIB) -l$(GL_LIB) -lm -lpthread
 | 
			
		||||
 | 
			
		||||
# Directories
 | 
			
		||||
SRC_DIRS = glx/mini gallium mesa glu glut/mini glew
 | 
			
		||||
DRIVER_DIRS = dri
 | 
			
		||||
PROGRAM_DIRS = miniglx
 | 
			
		||||
 | 
			
		||||
#DRI_DIRS = ffb gamma sis savage tdfx unichrome fb
 | 
			
		||||
DRI_DIRS = i810 i915tex i915 mach64 mga r128 r200 radeon
 | 
			
		||||
							
								
								
									
										7
									
								
								configs/linux-solo-ia64
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								configs/linux-solo-ia64
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,7 @@
 | 
			
		||||
# Configuration for linux-solo-ia64: Linux DRI hardware drivers for fbdev
 | 
			
		||||
 | 
			
		||||
include $(TOP)/configs/linux-solo
 | 
			
		||||
 | 
			
		||||
CONFIG_NAME = linux-solo-ia64
 | 
			
		||||
 | 
			
		||||
DRI_DIRS = fb mach64 mga r128 r200 radeon sis tdfx unichrome
 | 
			
		||||
							
								
								
									
										10
									
								
								configs/linux-solo-x86
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								configs/linux-solo-x86
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,10 @@
 | 
			
		||||
# -*-makefile-*-
 | 
			
		||||
# Configuration for linux-solo-x86: Linux hardware drivers for fbdev for x86
 | 
			
		||||
 | 
			
		||||
include $(TOP)/configs/linux-solo
 | 
			
		||||
 | 
			
		||||
CONFIG_NAME = linux-solo-x86
 | 
			
		||||
 | 
			
		||||
ASM_FLAGS = -DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM
 | 
			
		||||
MESA_ASM_SOURCES = $(X86_SOURCES)
 | 
			
		||||
GLAPI_ASM_SOURCES = $(X86_API)
 | 
			
		||||
							
								
								
									
										28
									
								
								configs/linux-x86-glide
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								configs/linux-x86-glide
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,28 @@
 | 
			
		||||
# Configuration for Linux with 3Dfx Glide driver and x86 optimizations
 | 
			
		||||
 | 
			
		||||
include $(TOP)/configs/default
 | 
			
		||||
 | 
			
		||||
CONFIG_NAME = linux-x86-glide
 | 
			
		||||
 | 
			
		||||
# Compiler and flags
 | 
			
		||||
CC = gcc
 | 
			
		||||
CXX = g++
 | 
			
		||||
 | 
			
		||||
CFLAGS = -Wall -O3 -ansi -pedantic -fPIC -D_POSIX_SOURCE -D_POSIX_C_SOURCE=199309L -D_SVID_SOURCE -D_BSD_SOURCE -DUSE_XSHM -DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM -DPTHREADS -I/usr/X11R6/include -DFX -I/usr/include/glide -I/usr/local/glide/include
 | 
			
		||||
 | 
			
		||||
CXXFLAGS = -Wall -O3 -ansi -pedantic -fPIC -D_POSIX_SOURCE -D_POSIX_C_SOURCE=199309L -D_SVID_SOURCE -D_BSD_SOURCE
 | 
			
		||||
 | 
			
		||||
GLUT_CFLAGS = -fexceptions
 | 
			
		||||
 | 
			
		||||
# Work around aliasing bugs - developers should comment this out
 | 
			
		||||
CFLAGS += -fno-strict-aliasing
 | 
			
		||||
CXXFLAGS += -fno-strict-aliasing
 | 
			
		||||
 | 
			
		||||
MESA_ASM_SOURCES = $(X86_SOURCES)
 | 
			
		||||
GLAPI_ASM_SOURCES = $(X86_API)
 | 
			
		||||
 | 
			
		||||
# Library/program dependencies
 | 
			
		||||
GL_LIB_DEPS = -L/usr/X11R6/lib -lX11 -lXext -L/usr/local/glide/lib -lglide3x -lm -lpthread
 | 
			
		||||
GLUT_LIB_DEPS = -L$(TOP)/$(LIB_DIR) -l$(GLU_LIB) -l$(GL_LIB) -L/usr/X11R6/lib -lX11 -lXmu -lXt -lXi -lm
 | 
			
		||||
GLW_LIB_DEPS = -L$(TOP)/$(LIB_DIR) -l$(GL_LIB) -L/usr/X11R6/lib -lXt -lX11
 | 
			
		||||
APP_LIB_DEPS = -L$(TOP)/$(LIB_DIR) -l$(GLUT_LIB) -l$(GLU_LIB) -l$(GL_LIB) -L/usr/local/glide/lib -lglide3x -lm
 | 
			
		||||
							
								
								
									
										1166
									
								
								configure.ac
									
									
									
									
									
								
							
							
						
						
									
										1166
									
								
								configure.ac
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -1,4 +0,0 @@
 | 
			
		||||
Known issues in the ARB_color_buffer_float implementation:
 | 
			
		||||
- Rendering to multiple render targets, some fixed-point, some floating-point, with FIXED_ONLY fragment clamping and polygon smooth enabled may write incorrect values to the fixed point buffers (depends on spec interpretation)
 | 
			
		||||
- For fragment programs with ARB_fog_* options, colors are clamped before fog application regardless of the fragment clamping setting (this depends on spec interpretation)
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										119
									
								
								docs/GL3.txt
									
									
									
									
									
								
							
							
						
						
									
										119
									
								
								docs/GL3.txt
									
									
									
									
									
								
							@@ -1,119 +0,0 @@
 | 
			
		||||
 | 
			
		||||
Status of OpenGL 3.x features in Mesa
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Note: when an item is marked as "DONE" it means all the core Mesa
 | 
			
		||||
infrastructure is complete but it may be the case that few (if any) drivers
 | 
			
		||||
implement the features.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Feature                                               Status
 | 
			
		||||
----------------------------------------------------- ------------------------
 | 
			
		||||
 | 
			
		||||
GL 3.0:
 | 
			
		||||
 | 
			
		||||
GLSL 1.30 (GL_EXT_gpu_shader4, etc.)                  started
 | 
			
		||||
Conditional rendering (GL_NV_conditional_render)      DONE (swrast, softpipe, i965)
 | 
			
		||||
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 (gallium r300)
 | 
			
		||||
GL_EXT_packed_float                                   DONE (gallium r600)
 | 
			
		||||
GL_EXT_texture_shared_exponent                        DONE (gallium, swrast)
 | 
			
		||||
Float depth buffers (GL_ARB_depth_buffer_float)       not started
 | 
			
		||||
Framebuffer objects (GL_EXT_framebuffer_object)       DONE
 | 
			
		||||
Half-float                                            DONE
 | 
			
		||||
Multisample blit                                      DONE
 | 
			
		||||
Non-normalized Integer texture/framebuffer formats    ~50% done
 | 
			
		||||
1D/2D Texture arrays                                  core Mesa, swrast done
 | 
			
		||||
Packed depth/stencil formats                          DONE
 | 
			
		||||
Per-buffer blend and masks (GL_EXT_draw_buffers2)     DONE
 | 
			
		||||
GL_EXT_texture_compression_rgtc                       DONE (swrast, gallium r600)
 | 
			
		||||
Red and red/green texture formats                     DONE (swrast, i965, gallium)
 | 
			
		||||
Transform feedback (GL_EXT_transform_feedback)        ~50% done
 | 
			
		||||
   glBindFragDataLocation, glGetFragDataLocation,
 | 
			
		||||
   glBindBufferRange, glBindBufferBase commands
 | 
			
		||||
Vertex array objects (GL_APPLE_vertex_array_object)   DONE
 | 
			
		||||
sRGB framebuffer format (GL_EXT_framebuffer_sRGB)     core GL done (i965, gallium), GLX todo
 | 
			
		||||
glClearBuffer commands                                DONE
 | 
			
		||||
glGetStringi command                                  DONE
 | 
			
		||||
glTexParameterI, glGetTexParameterI commands          DONE
 | 
			
		||||
glVertexAttribI commands                              DONE (but converts int
 | 
			
		||||
                                                            values to floats)
 | 
			
		||||
Depth format cube textures                            0% done
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
GL 3.1:
 | 
			
		||||
 | 
			
		||||
GLSL 1.40                                             not started
 | 
			
		||||
Instanced drawing (GL_ARB_draw_instanced)             DONE (gallium, swrast)
 | 
			
		||||
Buffer copying (GL_ARB_copy_buffer)                   DONE
 | 
			
		||||
Primitive restart (GL_NV_primitive_restart)           DONE (gallium)
 | 
			
		||||
16 vertex texture image units                         not started
 | 
			
		||||
Texture buffer objs (GL_ARB_texture_buffer_object)    not started
 | 
			
		||||
Rectangular textures (GL_ARB_texture_rectangle)       DONE
 | 
			
		||||
Uniform buffer objs (GL_ARB_uniform_buffer_object)    not started
 | 
			
		||||
Signed normalized textures (GL_EXT_texture_snorm)     DONE (gallium)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
GL 3.2:
 | 
			
		||||
 | 
			
		||||
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
 | 
			
		||||
Base vertex offset(GL_ARB_draw_elements_base_vertex)  DONE
 | 
			
		||||
Frag shader coord (GL_ARB_fragment_coord_conventions) DONE (swrast, gallium)
 | 
			
		||||
Provoking vertex (GL_ARB_provoking_vertex)            DONE
 | 
			
		||||
Seamless cubemaps (GL_ARB_seamless_cube_map)          DONE
 | 
			
		||||
Multisample textures (GL_ARB_texture_multisample)     not started
 | 
			
		||||
Frag depth clamp (GL_ARB_depth_clamp)                 DONE
 | 
			
		||||
Fence objects (GL_ARB_sync)                           DONE
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
GL 3.3:
 | 
			
		||||
 | 
			
		||||
GLSL 3.30                                             not started
 | 
			
		||||
GL_ARB_blend_func_extended                            not started
 | 
			
		||||
GL_ARB_explicit_attrib_location                       DONE (swrast, i915, i965)
 | 
			
		||||
GL_ARB_occlusion_query2                               DONE (swrast, gallium)
 | 
			
		||||
GL_ARB_sampler_objects                                DONE (gallium)
 | 
			
		||||
GL_ARB_texture_rgb10_a2ui                             not started
 | 
			
		||||
GL_ARB_texture_swizzle                                DONE (same as EXT version)
 | 
			
		||||
GL_ARB_timer_query                                    ~60% done (the EXT variant)
 | 
			
		||||
GL_ARB_instanced_arrays                               DONE (gallium)
 | 
			
		||||
GL_ARB_vertex_type_2_10_10_10_rev                     not started
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
GL 4.0:
 | 
			
		||||
 | 
			
		||||
GLSL 4.0                                             not started
 | 
			
		||||
GL_ARB_texture_query_lod                             not started
 | 
			
		||||
GL_ARB_draw_buffers_blend                            DONE (gallium softpipe)
 | 
			
		||||
GL_ARB_draw_indirect                                 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                           not started
 | 
			
		||||
GL_ARB_transform_feedback3                           not started
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
GL 4.1:
 | 
			
		||||
 | 
			
		||||
GLSL 4.1                                             not started
 | 
			
		||||
GL_ARB_ES2_compatibility                             DONE (i965)
 | 
			
		||||
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
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
More info about these features and the work involved can be found at
 | 
			
		||||
http://dri.freedesktop.org/wiki/MissingFunctionality
 | 
			
		||||
@@ -67,7 +67,7 @@ Additions to Chapter 3 the GLX 1.4 Specification (Functions and Errors)
 | 
			
		||||
    On "PC" computers, AGP memory can be allocated with glXAllocateMemoryNV
 | 
			
		||||
    and freed with glXFreeMemoryNV.  Sometimes it's useful to know where a
 | 
			
		||||
    block of AGP memory is located with respect to the start of the AGP
 | 
			
		||||
    aperture.  The function
 | 
			
		||||
    aperature.  The function
 | 
			
		||||
 | 
			
		||||
        GLuint glXGetAGPOffsetMESA( const GLvoid *pointer )
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,153 +0,0 @@
 | 
			
		||||
Name
 | 
			
		||||
 | 
			
		||||
    MESA_drm_image
 | 
			
		||||
 | 
			
		||||
Name Strings
 | 
			
		||||
 | 
			
		||||
    EGL_MESA_drm_image
 | 
			
		||||
 | 
			
		||||
Contact
 | 
			
		||||
 | 
			
		||||
    Kristian Høgsberg <krh@bitplanet.net>
 | 
			
		||||
 | 
			
		||||
Status
 | 
			
		||||
 | 
			
		||||
    Proposal
 | 
			
		||||
 | 
			
		||||
Version
 | 
			
		||||
 | 
			
		||||
    Version 2, August 25, 2010
 | 
			
		||||
 | 
			
		||||
Number
 | 
			
		||||
 | 
			
		||||
    EGL Extension #not assigned
 | 
			
		||||
 | 
			
		||||
Dependencies
 | 
			
		||||
 | 
			
		||||
    Requires EGL 1.4 or later.  This extension is written against the
 | 
			
		||||
    wording of the EGL 1.4 specification.
 | 
			
		||||
 | 
			
		||||
    EGL_KHR_base_image is required.
 | 
			
		||||
 | 
			
		||||
Overview
 | 
			
		||||
 | 
			
		||||
    This extension provides entry points for integrating EGLImage with the
 | 
			
		||||
    Linux DRM mode setting and memory management drivers.  The extension
 | 
			
		||||
    lets applications create EGLImages without a client API resource and
 | 
			
		||||
    lets the application get the DRM buffer handles.
 | 
			
		||||
 | 
			
		||||
IP Status
 | 
			
		||||
 | 
			
		||||
    Open-source; freely implementable.
 | 
			
		||||
 | 
			
		||||
New Procedures and Functions
 | 
			
		||||
 | 
			
		||||
    EGLImageKHR eglCreateDRMImageMESA(EGLDisplay dpy,
 | 
			
		||||
                                      const EGLint *attrib_list);
 | 
			
		||||
 | 
			
		||||
    EGLBoolean eglExportDRMImageMESA(EGLDisplay dpy,
 | 
			
		||||
                                     EGLImageKHR image,
 | 
			
		||||
                                     EGLint *name,
 | 
			
		||||
				     EGLint *handle,
 | 
			
		||||
				     EGLint *stride);
 | 
			
		||||
 | 
			
		||||
New Tokens
 | 
			
		||||
 | 
			
		||||
    Accepted in the <attrib_list> parameter of eglCreateDRMImageMESA:
 | 
			
		||||
 | 
			
		||||
        EGL_DRM_BUFFER_FORMAT_MESA		0x31D0
 | 
			
		||||
        EGL_DRM_BUFFER_USE_MESA			0x31D1
 | 
			
		||||
 | 
			
		||||
    Accepted as values for the EGL_IMAGE_FORMAT_MESA attribute:
 | 
			
		||||
 | 
			
		||||
        EGL_DRM_BUFFER_FORMAT_ARGB32_MESA	0x31D2
 | 
			
		||||
 | 
			
		||||
    Bits accepted in EGL_DRM_BUFFER_USE_MESA:
 | 
			
		||||
 | 
			
		||||
        EGL_DRM_BUFFER_USE_SCANOUT_MESA		0x0001
 | 
			
		||||
        EGL_DRM_BUFFER_USE_SHARE_MESA		0x0002
 | 
			
		||||
        EGL_DRM_BUFFER_USE_CURSOR_MESA		0x0004
 | 
			
		||||
 | 
			
		||||
    Accepted in the <target> parameter of eglCreateImageKHR:
 | 
			
		||||
 | 
			
		||||
        EGL_DRM_BUFFER_MESA			0x31D3
 | 
			
		||||
 | 
			
		||||
    Use when importing drm buffer:
 | 
			
		||||
 | 
			
		||||
        EGL_DRM_BUFFER_STRIDE_MESA		0x31D4
 | 
			
		||||
        EGL_DRM_BUFFER_FORMAT_MESA		0x31D0
 | 
			
		||||
 | 
			
		||||
Additions to the EGL 1.4 Specification:
 | 
			
		||||
 | 
			
		||||
    To create a DRM EGLImage, call
 | 
			
		||||
 | 
			
		||||
        EGLImageKHR eglCreateDRMImageMESA(EGLDisplay dpy,
 | 
			
		||||
                                          const EGLint *attrib_list);
 | 
			
		||||
 | 
			
		||||
    In the attribute list, pass EGL_WIDTH, EGL_HEIGHT and format and
 | 
			
		||||
    use in the attrib list using EGL_DRM_BUFFER_FORMAT_MESA and
 | 
			
		||||
    EGL_DRM_BUFFER_USE_MESA.  The only format specified by this
 | 
			
		||||
    extension is EGL_DRM_BUFFER_FORMAT_ARGB32_MESA, where each pixel
 | 
			
		||||
    is a CPU-endian, 32-bit quantity, with alpha in the upper 8 bits,
 | 
			
		||||
    then red, then green, then blue.  The bit values accepted by
 | 
			
		||||
    EGL_DRM_BUFFER_USE_MESA are EGL_DRM_BUFFER_USE_SCANOUT_MESA,
 | 
			
		||||
    EGL_DRM_BUFFER_USE_SHARE_MESA and EGL_DRM_BUFFER_USE_CURSOR_MESA.
 | 
			
		||||
    EGL_DRM_BUFFER_USE_SCANOUT_MESA requests that the created EGLImage
 | 
			
		||||
    should be usable as a scanout buffer with the DRM kernel
 | 
			
		||||
    modesetting API.  EGL_DRM_BUFFER_USE_SHARE_MESA requests that the
 | 
			
		||||
    EGLImage can be shared with other processes by passing the
 | 
			
		||||
    underlying DRM buffer name.  EGL_DRM_BUFFER_USE_CURSOR_MESA
 | 
			
		||||
    requests that the image must be usable as a cursor with KMS.  When
 | 
			
		||||
    EGL_DRM_BUFFER_USE_CURSOR_MESA is set, width and height must both
 | 
			
		||||
    be 64.
 | 
			
		||||
 | 
			
		||||
    To create a process local handle or a global DRM name for a
 | 
			
		||||
    buffer, call
 | 
			
		||||
 | 
			
		||||
        EGLBoolean eglExportDRMImageMESA(EGLDisplay dpy,
 | 
			
		||||
                                         EGLImageKHR image,
 | 
			
		||||
                                         EGLint *name,
 | 
			
		||||
                                         EGLint *handle,
 | 
			
		||||
                                         EGLint *stride);
 | 
			
		||||
 | 
			
		||||
    If <name> is non-NULL, a global name is assigned to the image and
 | 
			
		||||
    written to <name>, the handle (local to the DRM file descriptor,
 | 
			
		||||
    for use with DRM kernel modesetting API) is written to <handle> if
 | 
			
		||||
    non-NULL and the stride (in bytes) is written to <stride>, if
 | 
			
		||||
    non-NULL.
 | 
			
		||||
 | 
			
		||||
    Import a shared buffer by calling eglCreateImageKHR with
 | 
			
		||||
    EGL_DRM_BUFFER_MESA as the target, using EGL_WIDTH, EGL_HEIGHT,
 | 
			
		||||
    EGL_DRM_BUFFER_FORMAT_MESA, EGL_DRM_BUFFER_STRIDE_MESA
 | 
			
		||||
    in the attrib list.
 | 
			
		||||
 | 
			
		||||
Issues
 | 
			
		||||
 | 
			
		||||
    1.  Why don't we use eglCreateImageKHR with a target that
 | 
			
		||||
        indicates that we want to create an EGLImage from scratch?
 | 
			
		||||
 | 
			
		||||
        RESOLVED: The eglCreateImageKHR entry point is reserved for
 | 
			
		||||
        creating an EGLImage from an already existing client API
 | 
			
		||||
        resource.  This is fine when we're creating the EGLImage from
 | 
			
		||||
        an existing DRM buffer name, it doesn't seem right to overload
 | 
			
		||||
        the function to also allocate the underlying resource.
 | 
			
		||||
 | 
			
		||||
    2.  Why don't we use an eglQueryImageMESA type functions for
 | 
			
		||||
        querying the DRM EGLImage attributes (name, handle, and stride)?
 | 
			
		||||
 | 
			
		||||
        RESOLVED: The eglQueryImage function has been proposed often,
 | 
			
		||||
        but it goes against the EGLImage design.  EGLImages are opaque
 | 
			
		||||
        handles to a 2D array of pixels, which can be passed between
 | 
			
		||||
        client APIs.  By referencing an EGLImage in a client API, the
 | 
			
		||||
        EGLImage target (a texture, a renderbuffer or such) can be
 | 
			
		||||
        used to query the attributes of the EGLImage.  We don't have a
 | 
			
		||||
        full client API for creating and querying DRM buffers, though,
 | 
			
		||||
        so we use a new EGL extension entry point instead.
 | 
			
		||||
 | 
			
		||||
Revision History
 | 
			
		||||
 | 
			
		||||
    Version 1, June 3, 2010
 | 
			
		||||
        Initial draft (Kristian Høgsberg)
 | 
			
		||||
    Version 2, August 25, 2010
 | 
			
		||||
        Flesh out the extension a bit, add final EGL tokens, capture
 | 
			
		||||
        some of the original discussion in the issues section.
 | 
			
		||||
@@ -1,158 +0,0 @@
 | 
			
		||||
Name
 | 
			
		||||
 | 
			
		||||
    MESA_multithread_makecurrent
 | 
			
		||||
 | 
			
		||||
Name Strings
 | 
			
		||||
 | 
			
		||||
    GLX_MESA_multithread_makecurrent
 | 
			
		||||
 | 
			
		||||
Contact
 | 
			
		||||
 | 
			
		||||
    Eric Anholt (eric@anholt.net)
 | 
			
		||||
 | 
			
		||||
Status
 | 
			
		||||
 | 
			
		||||
    Not shipping.
 | 
			
		||||
 | 
			
		||||
Version
 | 
			
		||||
 | 
			
		||||
    Last Modified Date:  21 February 2011
 | 
			
		||||
 | 
			
		||||
Number
 | 
			
		||||
 | 
			
		||||
    TBD
 | 
			
		||||
 | 
			
		||||
Dependencies
 | 
			
		||||
 | 
			
		||||
    OpenGL 1.0 or later is required.
 | 
			
		||||
    GLX 1.3 or later is required.
 | 
			
		||||
 | 
			
		||||
Overview
 | 
			
		||||
 | 
			
		||||
    The GLX context setup encourages multithreaded applications to
 | 
			
		||||
    create a context per thread which each operate on their own
 | 
			
		||||
    objects in parallel, and leaves synchronization for write access
 | 
			
		||||
    to shared objects up to the application.
 | 
			
		||||
 | 
			
		||||
    For some applications, maintaining per-thread contexts and
 | 
			
		||||
    ensuring that the glFlush happens in one thread before another
 | 
			
		||||
    thread starts working on that object is difficult.  For them,
 | 
			
		||||
    using the same context across multiple threads and protecting its
 | 
			
		||||
    usage with a mutex is both higher performance and easier to
 | 
			
		||||
    implement.  This extension gives those applications that option by
 | 
			
		||||
    relaxing the context binding requirements.
 | 
			
		||||
 | 
			
		||||
    This new behavior matches the requirements of AGL, while providing
 | 
			
		||||
    a feature not specified in WGL.
 | 
			
		||||
 | 
			
		||||
IP Status
 | 
			
		||||
 | 
			
		||||
    Open-source; freely implementable.
 | 
			
		||||
 | 
			
		||||
Issues
 | 
			
		||||
 | 
			
		||||
    None.
 | 
			
		||||
 | 
			
		||||
New Procedures and Functions
 | 
			
		||||
 | 
			
		||||
    None.
 | 
			
		||||
 | 
			
		||||
New Tokens
 | 
			
		||||
 | 
			
		||||
    None.
 | 
			
		||||
 | 
			
		||||
Changes to Chapter 2 of the GLX 1.3 Specification (Functions and Errors)
 | 
			
		||||
 | 
			
		||||
    Replace the following sentence from section 2.2 Rendering Contexts:
 | 
			
		||||
	In addition, a rendering context can be current for only one
 | 
			
		||||
	thread at a time.
 | 
			
		||||
    with:
 | 
			
		||||
	In addition, an indirect rendering context can be current for
 | 
			
		||||
	only one thread at a time.  A direct rendering context may be
 | 
			
		||||
	current to multiple threads, with synchronization of access to
 | 
			
		||||
	the context thruogh the GL managed by the application through
 | 
			
		||||
	mutexes.
 | 
			
		||||
 | 
			
		||||
Changes to Chapter 3 of the GLX 1.3 Specification (Functions and Errors)
 | 
			
		||||
 | 
			
		||||
    Replace the following sentence from section 3.3.7 Rendering Contexts:
 | 
			
		||||
	If ctx is current to some other thread, then
 | 
			
		||||
	glXMakeContextCurrent will generate a BadAccess error.
 | 
			
		||||
    with:
 | 
			
		||||
	If ctx is an indirect context current to some other thread,
 | 
			
		||||
	then glXMakeContextCurrent will generate a BadAccess error.
 | 
			
		||||
 | 
			
		||||
    Replace the following sentence from section 3.5 Rendering Contexts:
 | 
			
		||||
	If ctx is current to some other thread, then
 | 
			
		||||
	glXMakeCurrent will generate a BadAccess error.
 | 
			
		||||
    with:
 | 
			
		||||
	If ctx is an indirect context current to some other thread,
 | 
			
		||||
	then glXMakeCurrent will generate a BadAccess error.
 | 
			
		||||
 | 
			
		||||
GLX Protocol
 | 
			
		||||
 | 
			
		||||
    None.  The GLX extension only extends to direct rendering contexts.
 | 
			
		||||
 | 
			
		||||
Errors
 | 
			
		||||
 | 
			
		||||
    None.
 | 
			
		||||
 | 
			
		||||
New State
 | 
			
		||||
 | 
			
		||||
    None.
 | 
			
		||||
 | 
			
		||||
Issues
 | 
			
		||||
 | 
			
		||||
    (1) What happens if the app binds a context/drawable in multiple
 | 
			
		||||
	threads, then binds a different context/thread in one of them?
 | 
			
		||||
 | 
			
		||||
    As with binding a new context from the current thread, the old
 | 
			
		||||
    context's refcount is reduced and the new context's refcount is
 | 
			
		||||
    increased.
 | 
			
		||||
 | 
			
		||||
    (2) What happens if the app binds a context/drawable in multiple
 | 
			
		||||
	threads, then binds None/None in one of them?
 | 
			
		||||
 | 
			
		||||
    The GLX context is unreferenced from that thread, and the other
 | 
			
		||||
    threads retain their GLX context binding.
 | 
			
		||||
 | 
			
		||||
    (3) What happens if the app binds a context/drawable in 7 threads,
 | 
			
		||||
	then destroys the context in one of them?
 | 
			
		||||
 | 
			
		||||
    As with GLX context destruction previously, the XID is destroyed
 | 
			
		||||
    but the context remains usable by threads that have the context
 | 
			
		||||
    current.
 | 
			
		||||
 | 
			
		||||
    (4) What happens if the app binds a new drawable/readable with
 | 
			
		||||
        glXMakeCurrent() when it is already bound to another thread?
 | 
			
		||||
 | 
			
		||||
    The context becomes bound to the new drawable/readable, and
 | 
			
		||||
    further rendering in either thread will use the new
 | 
			
		||||
    drawable/readable.
 | 
			
		||||
 | 
			
		||||
    (5) What requirements should be placed on the user managing contexts
 | 
			
		||||
        from multiple threads?
 | 
			
		||||
 | 
			
		||||
    The intention is to allow multithreaded access to the GL at the
 | 
			
		||||
    minimal performance cost, so requiring that the GL do general
 | 
			
		||||
    synchronization (beyond that already required by context sharing)
 | 
			
		||||
    is not an option, and synchronizing of GL's access to the GL
 | 
			
		||||
    context between multiple threads is left to the application to do
 | 
			
		||||
    across GL calls.  However, it would be unfortunate for a library
 | 
			
		||||
    doing multithread_makecurrent to require that other libraries
 | 
			
		||||
    share in synchronization for binding of their own contexts, so the
 | 
			
		||||
    refcounting of the contexts is required to be threadsafe.
 | 
			
		||||
 | 
			
		||||
    (6) Does this apply to indirect contexts?
 | 
			
		||||
 | 
			
		||||
    This was ignored in the initial revision of the spec.  Behavior
 | 
			
		||||
    for indirect contexts is left as-is.
 | 
			
		||||
 | 
			
		||||
Revision History
 | 
			
		||||
 | 
			
		||||
    20 November 2009 Eric Anholt - initial specification
 | 
			
		||||
    22 November 2009 Eric Anholt - added issues from Ian Romanick.
 | 
			
		||||
    3 February 2011 Eric Anholt - updated with resolution to issues 1-3
 | 
			
		||||
    3 February 2011 Eric Anholt - added issue 4, 5
 | 
			
		||||
    21 February 2011 Eric Anholt - Include glXMakeCurrent() sentence
 | 
			
		||||
    along with glXMakeContextCurrent() for removal.
 | 
			
		||||
@@ -48,7 +48,7 @@ IP Status
 | 
			
		||||
 | 
			
		||||
Issues
 | 
			
		||||
 | 
			
		||||
    1. Should we also define UNPACK_INVERT_MESA for glDrawPixels, etc?
 | 
			
		||||
    1. Should we also defined UNPACK_INVERT_MESA for glDrawPixels, etc?
 | 
			
		||||
 | 
			
		||||
    Resolved:  No, we're only concerned with pixel packing.  There are other
 | 
			
		||||
    solutions for inverting images when using glDrawPixels (negative Y pixel
 | 
			
		||||
 
 | 
			
		||||
@@ -31,12 +31,12 @@ Overview
 | 
			
		||||
 | 
			
		||||
    Mesa's implementation of GLX is entirely implemented on the client side.
 | 
			
		||||
    Therefore, Mesa cannot immediately detect when an X window or pixmap is
 | 
			
		||||
    destroyed in order to free any ancillary data associated with the window
 | 
			
		||||
    destroyed in order to free any ancilliary data associated with the window
 | 
			
		||||
    or pixmap.
 | 
			
		||||
 | 
			
		||||
    The glxMesaReleaseBuffers() function can be used to explicitly indicate
 | 
			
		||||
    when the back color buffer, depth buffer, stencil buffer, and/or accumu-
 | 
			
		||||
    lation buffer associated with a drawable can be freed.
 | 
			
		||||
    when the back color buffer, depth buffer, stencil buffer, and/or accum-
 | 
			
		||||
    ulation buffer associated with a drawable can be freed.
 | 
			
		||||
 | 
			
		||||
IP Status
 | 
			
		||||
 | 
			
		||||
@@ -60,7 +60,7 @@ Additions to Chapter 3 of the GLX 1.3 Specification (Functions and Errors)
 | 
			
		||||
 | 
			
		||||
	Bool glXReleaseBuffersMESA( Display *dpy, GLXDrawable d );
 | 
			
		||||
 | 
			
		||||
    causes all software ancillary buffers (back buffer, depth, stencil,
 | 
			
		||||
    causes all software ancilliary buffers (back buffer, depth, stencil,
 | 
			
		||||
    accum, etc) associated with the named drawable to be immediately
 | 
			
		||||
    deallocated.  True is returned if <d> is a valid Mesa GLX drawable,
 | 
			
		||||
    else False is returned.  After calling glXReleaseBuffersMESA, the
 | 
			
		||||
 
 | 
			
		||||
@@ -35,7 +35,7 @@ Overview
 | 
			
		||||
 | 
			
		||||
    Mesa's glViewport command queries the current window size and updates
 | 
			
		||||
    its internal data structors accordingly.  This normally works fine
 | 
			
		||||
    since most applications call glViewport in response to window size
 | 
			
		||||
    since most applications call glViewport in responce to window size
 | 
			
		||||
    changes.
 | 
			
		||||
 | 
			
		||||
    In some situations, however, the application may not call glViewport
 | 
			
		||||
@@ -65,7 +65,7 @@ Additions to the AGL/GLX/WGL Specifications
 | 
			
		||||
 | 
			
		||||
Errors
 | 
			
		||||
 | 
			
		||||
    INVALID_OPERATION is generated if glResizeBuffersMESA is called between
 | 
			
		||||
    INVALID_OPERATION is generated if ResizeBuffersMESA is called betweeen
 | 
			
		||||
    Begin and End.
 | 
			
		||||
 | 
			
		||||
New State
 | 
			
		||||
 
 | 
			
		||||
@@ -43,7 +43,7 @@ Issues
 | 
			
		||||
 | 
			
		||||
New Procedures and Functions
 | 
			
		||||
 | 
			
		||||
    int glXSwapIntervalMESA(unsigned int interval)
 | 
			
		||||
    int glXSwapIntervalMESA(int interval)
 | 
			
		||||
    int glXGetSwapIntervalMESA(void)
 | 
			
		||||
 | 
			
		||||
New Tokens
 | 
			
		||||
@@ -88,8 +88,8 @@ Additions to the GLX 1.3 Specification
 | 
			
		||||
    this is typically the time required to display both the even and odd 
 | 
			
		||||
    fields of a frame of video data.
 | 
			
		||||
 | 
			
		||||
    If <interval> is set to a value of 0, buffer swaps are not synchro-
 | 
			
		||||
    nized to a video frame.  The <interval> value is silently clamped to
 | 
			
		||||
    If <interval> is set to a value of 0, buffer swaps are not synchron-
 | 
			
		||||
    ized to a video frame.  The <interval> value is silently clamped to
 | 
			
		||||
    the maximum implementation-dependent value supported before being
 | 
			
		||||
    stored.
 | 
			
		||||
 | 
			
		||||
@@ -103,8 +103,11 @@ Additions to the GLX 1.3 Specification
 | 
			
		||||
 | 
			
		||||
Errors
 | 
			
		||||
 | 
			
		||||
    glXSwapIntervalMESA returns GLX_BAD_VALUE if parameter <interval> is
 | 
			
		||||
    less than zero.
 | 
			
		||||
 | 
			
		||||
    glXSwapIntervalMESA returns GLX_BAD_CONTEXT if there is no current
 | 
			
		||||
    GLXContext or if the current context is not a direct rendering context.
 | 
			
		||||
    GLXContext.
 | 
			
		||||
 | 
			
		||||
GLX Protocol
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -328,7 +328,7 @@ Additions to Chapter 3 of the OpenGL 2.0 Specification (Rasterization)
 | 
			
		||||
 | 
			
		||||
    -- Section 3.8.10 "Texture Completeness"
 | 
			
		||||
 | 
			
		||||
       Change the second paragraph (page 177) to say (spec changes identical
 | 
			
		||||
       Change the second paragaph (page 177) to say (spec changes identical
 | 
			
		||||
       to EXT_texture_array):
 | 
			
		||||
 | 
			
		||||
       "For one-, two-, or three-dimensional textures and one- or
 | 
			
		||||
@@ -443,10 +443,10 @@ Additions to Chapter 3 of the OpenGL 2.0 Specification (Rasterization)
 | 
			
		||||
       Change second through fourth paragraphs (page 188) to say:
 | 
			
		||||
 | 
			
		||||
       "Let D_t be the depth texture value, in the range [0, 1].  For
 | 
			
		||||
       texture lookups from one- and two-dimensional, rectangle, and
 | 
			
		||||
       texture lookups from one- and two-dimesional, rectangle, and
 | 
			
		||||
       one-dimensional array targets, let R be the interpolated <r>
 | 
			
		||||
       texture coordinate, clamped to the range [0, 1].  For texture lookups
 | 
			
		||||
       from two-dimensional array texture targets, let R be the interpolated
 | 
			
		||||
       from two-dimesional array texture targets, let R be the interpolated
 | 
			
		||||
       <q> texture coordinate, clamped to the range [0, 1].  Then the
 | 
			
		||||
       effective texture value L_t, I_t, or A_t is computed as follows:
 | 
			
		||||
 | 
			
		||||
@@ -604,7 +604,7 @@ Additions to Chapter 5 of the OpenGL 2.0 Specification (Special Functions)
 | 
			
		||||
 | 
			
		||||
    -- Section 5.4 "Display Lists"
 | 
			
		||||
 | 
			
		||||
       Change the first paragraph on page 242 to say (spec changes
 | 
			
		||||
       Change the first paragraphi on page 242 to say (spec changes
 | 
			
		||||
       identical to EXT_texture_array):
 | 
			
		||||
 | 
			
		||||
       "TexImage3D, TexImage2D, TexImage1D, Histogram, and ColorTable are
 | 
			
		||||
 
 | 
			
		||||
@@ -44,7 +44,7 @@ Overview
 | 
			
		||||
    ARB_texture_compression_rgtc introduces some compressed red and
 | 
			
		||||
    red_green signed formats but no uncompressed ones, which might
 | 
			
		||||
    still be useful. NV_texture_shader adds signed texture formats,
 | 
			
		||||
    but also a lot of functionality which has been superseded by fragment
 | 
			
		||||
    but also a lot of functionality which has been superceded by fragment
 | 
			
		||||
    shaders.
 | 
			
		||||
    It is usually possible to get the same functionality
 | 
			
		||||
    using a unsigned format by doing scale and bias in a shader, but this
 | 
			
		||||
@@ -105,7 +105,7 @@ Issues
 | 
			
		||||
       This is also different to what NV_texture_shader used.
 | 
			
		||||
       The above mapping should be considered the reference, but there
 | 
			
		||||
       is some leeway so other mappings are allowed for implementations which
 | 
			
		||||
       cannot do this. Particularly the mapping given in NV_texture_shader or
 | 
			
		||||
       cannot do this. Particulary the mapping given in NV_texture_shader or
 | 
			
		||||
       the standard OpenGL byte/float mapping is considered acceptable too, as
 | 
			
		||||
       might be a mapping which represents -1.0 by -128, 0.0 by 0 and 1.0 by
 | 
			
		||||
       127 (that is, uses different scale factors for negative and positive
 | 
			
		||||
 
 | 
			
		||||
@@ -88,7 +88,7 @@ Additions to Chapter 2 of the OpenGL 1.2 Specification (OpenGL Operation)
 | 
			
		||||
      WindosPos4MESA takes four values indicating x, y, z, and w.
 | 
			
		||||
      WindowPos3MESA (or WindowPos2MESA) is analaguos, but sets only
 | 
			
		||||
      x, y, and z with w implicitly set to 1 (or only x and y with z
 | 
			
		||||
      implicitly set to 0 and w implicitly set to 1).
 | 
			
		||||
      implicititly set to 0 and w implicitly set to 1).
 | 
			
		||||
 | 
			
		||||
      WindowPosMESA operates like RasterPos except that the current modelview
 | 
			
		||||
      matrix, projection matrix and viewport parameters are ignored and the
 | 
			
		||||
@@ -108,7 +108,7 @@ GLX Protocol
 | 
			
		||||
 | 
			
		||||
Errors
 | 
			
		||||
 | 
			
		||||
    INVALID_OPERATION is generated if WindowPosMESA is called between
 | 
			
		||||
    INVALID_OPERATION is generated if WindowPosMESA is called betweeen
 | 
			
		||||
    Begin and End.
 | 
			
		||||
 | 
			
		||||
New State
 | 
			
		||||
 
 | 
			
		||||
@@ -26,7 +26,7 @@ Number
 | 
			
		||||
Dependencies
 | 
			
		||||
 | 
			
		||||
    OpenGL 1.0 or later is required
 | 
			
		||||
    This extension is written against the OpenGL 1.4 Specification.
 | 
			
		||||
    This extensions is written against the OpenGL 1.4 Specification.
 | 
			
		||||
    NV_texture_rectangle effects the definition of this extension.
 | 
			
		||||
 | 
			
		||||
Overview
 | 
			
		||||
@@ -104,7 +104,7 @@ Additions to Chapter 3 of the OpenGL 1.4 Specification (Rasterization)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    In section 3.6.4, Rasterization of Pixel Rectangles, on page 104,
 | 
			
		||||
    add the following to Table 3.12 (Packed pixel field assignments):
 | 
			
		||||
    add the following to Table 3.12 (Packed pixel fiedl assignments):
 | 
			
		||||
 | 
			
		||||
                       First       Second     Third      Fourth
 | 
			
		||||
    Format             Element     Element    Element    Element
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										534
									
								
								docs/MiniGLX.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										534
									
								
								docs/MiniGLX.html
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,534 @@
 | 
			
		||||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 | 
			
		||||
<html>
 | 
			
		||||
<head>
 | 
			
		||||
  <title>Mini GLX Specification</title>
 | 
			
		||||
</head>
 | 
			
		||||
<body>
 | 
			
		||||
<h1>
 | 
			
		||||
<center>Mini GLX Specification</center>
 | 
			
		||||
</h1>
 | 
			
		||||
<h2>
 | 
			
		||||
<center>Tungsten Graphics, Inc.<br>
 | 
			
		||||
<br>
 | 
			
		||||
January 20, 2003<br>
 | 
			
		||||
<br>
 | 
			
		||||
</center>
 | 
			
		||||
</h2>
 | 
			
		||||
<p> Copyright © 2002-2003 by Tungsten Graphics, Inc., Cedar Park,
 | 
			
		||||
Texas. All Rights Reserved. <br>
 | 
			
		||||
<br>
 | 
			
		||||
Permission is granted to make and distribute verbatim copies of this
 | 
			
		||||
document provided the copyright notice and this permission notice are
 | 
			
		||||
preserved on all copies.<br>
 | 
			
		||||
<br>
 | 
			
		||||
</p>
 | 
			
		||||
<h1>1. Introduction</h1>
 | 
			
		||||
<p>The Mini GLX interface facilitates OpenGL rendering on embedded
 | 
			
		||||
devices. The interface is a subset of the GLX interface, plus a minimal
 | 
			
		||||
set of Xlib-like functions.</p>
 | 
			
		||||
<p>Programs written to the Mini GLX specification should run unchanged
 | 
			
		||||
on systems with the X Window System and the GLX extension. The intention
 | 
			
		||||
is to allow flexibility for prototyping and testing.</p>
 | 
			
		||||
<p>This document serves as both the reference guide and programming
 | 
			
		||||
guide for Mini GLX.<br>
 | 
			
		||||
<br>
 | 
			
		||||
</p>
 | 
			
		||||
<h1>2. Mini GLX Concepts</h1>
 | 
			
		||||
<p>The OpenGL specification does not describe how OpenGL rendering
 | 
			
		||||
contexts and drawing surfaces (i.e. the frame buffer) are created and
 | 
			
		||||
managed. Rather, this is handled by an OpenGL window system interface,
 | 
			
		||||
such as Mini GLX.</p>
 | 
			
		||||
<p>There are three main datatypes or resources managed by Mini GLX. The
 | 
			
		||||
resources and their corresponding GLX or Xlib data types are:</p>
 | 
			
		||||
<table cellspacing="10" align="center">
 | 
			
		||||
  <tbody>
 | 
			
		||||
    <tr>
 | 
			
		||||
      <td><u>Resource</u></td>
 | 
			
		||||
      <td><u>Data type</u></td>
 | 
			
		||||
    </tr>
 | 
			
		||||
    <tr>
 | 
			
		||||
      <td>pixel formats</td>
 | 
			
		||||
      <td>X Visual and XVisualInfo</td>
 | 
			
		||||
    </tr>
 | 
			
		||||
    <tr>
 | 
			
		||||
      <td>drawing surfaces</td>
 | 
			
		||||
      <td>X Window or GLXDrawable</td>
 | 
			
		||||
    </tr>
 | 
			
		||||
    <tr>
 | 
			
		||||
      <td>rendering contexts</td>
 | 
			
		||||
      <td>GLXContext</td>
 | 
			
		||||
    </tr>
 | 
			
		||||
  </tbody>
 | 
			
		||||
</table>
 | 
			
		||||
<p>Pixel formats or X Visuals describe the per-pixel attributes of the
 | 
			
		||||
frame buffer.  For example, bits per color component, Z buffer size,
 | 
			
		||||
stencil size, TrueColor vs PseudoColor, etc.</p>
 | 
			
		||||
<p>Drawing surfaces or X Windows typically describe a spatial
 | 
			
		||||
allocation of the frame buffer (i.e. the position and size of a
 | 
			
		||||
rectangular region of pixels).  Since MiniGLX doesn't really support a
 | 
			
		||||
window system, the window is effectively the entire frame buffer.</p>
 | 
			
		||||
<p>A rendering context represents the current OpenGL state such as
 | 
			
		||||
current drawing color, line width, blending mode, texture parameters,
 | 
			
		||||
etc. Several rendering contexts can be created but only one can be in
 | 
			
		||||
use at any given time.</p>
 | 
			
		||||
<p>The Mini GLX interface provides all the functions needed for
 | 
			
		||||
choosing pixel formats, create drawing surfaces, creating rendering
 | 
			
		||||
contexts and binding rendering contexts to drawing surfaces.<br>
 | 
			
		||||
<br>
 | 
			
		||||
</p>
 | 
			
		||||
<h1>3. Using Mini GLX</h1>
 | 
			
		||||
<p>To use the Mini GLX interface in your application, include the
 | 
			
		||||
GL/miniglx.h header file at compile time:</p>
 | 
			
		||||
<blockquote><code>	#include <GL/miniglx.h><br>
 | 
			
		||||
  </code></blockquote>
 | 
			
		||||
<code></code>Applications should link with libGL.so (i.e. <code>gcc
 | 
			
		||||
myprogram.o -lGL -o myprogram</code>).  libGL.so implements the
 | 
			
		||||
MiniGLX API functions and, in turn, loads a hardware-specific device
 | 
			
		||||
driver (such as <code>radeon_dri.so</code>) at runtime.  The
 | 
			
		||||
environment variable <code>LIBGL_DRIVERS_PATH</code> should name the
 | 
			
		||||
directory where these modules are located.<br>
 | 
			
		||||
<br>
 | 
			
		||||
The remainder of this section describes the MiniGLX API functions.<br>
 | 
			
		||||
<br>
 | 
			
		||||
<h2>3.1 Initialization</h2>
 | 
			
		||||
<p>The XOpenDisplay function is used to initialize the graphics system:</p>
 | 
			
		||||
<blockquote>
 | 
			
		||||
  <pre>Display *XOpenDisplay(const char *displayname)<br></pre>
 | 
			
		||||
</blockquote>
 | 
			
		||||
<p>The <code>displayName</code> parameter is currently ignored in Mini
 | 
			
		||||
GLX. It is recommended that <code>NULL</code> be passed as the<code>displayName</code>
 | 
			
		||||
parameter.</p>
 | 
			
		||||
<p>If XOpenDisplay is able to initialize the graphics system a pointer
 | 
			
		||||
to a Display will be returned.  Otherwise, NULL will be returned.</p>
 | 
			
		||||
<h2>3.2 Choosing a Visual</h2>
 | 
			
		||||
<p>A visual (i.e. pixel format) must be chosen before a drawing surface
 | 
			
		||||
or rendering context can be created.  This is done with the
 | 
			
		||||
glXChooseVisual function:</p>
 | 
			
		||||
<blockquote>
 | 
			
		||||
  <pre>XVisualInfo *glXChooseVisual(Display *dpy, int screen, const int *attribList)<br></pre>
 | 
			
		||||
</blockquote>
 | 
			
		||||
<p><code>dpy</code> is a pointer to the display returned by
 | 
			
		||||
XOpenDisplay. </p>
 | 
			
		||||
<p><code>screen</code> is currently ignored by Mini GLX and should be
 | 
			
		||||
zero. </p>
 | 
			
		||||
<p><code>attribList</code> is a list of GLX attributes which describe
 | 
			
		||||
the desired pixel format.  It is terminated by the token <code>None</code>.
 | 
			
		||||
The attributes are as follows:</p>
 | 
			
		||||
<blockquote>
 | 
			
		||||
  <dl>
 | 
			
		||||
    <dt><code>GLX_USE_GL</code></dt>
 | 
			
		||||
    <dd>This attribute should always be present in order to maintain
 | 
			
		||||
compatibility with GLX.</dd>
 | 
			
		||||
    <dt><code>GLX_RGBA</code></dt>
 | 
			
		||||
    <dd>If present, only RGBA pixel formats will be considered.
 | 
			
		||||
Otherwise, only color index formats are considered.</dd>
 | 
			
		||||
    <dt><code>GLX_DOUBLEBUFFER</code></dt>
 | 
			
		||||
    <dd>if present, only double-buffered pixel formats will	be chosen.</dd>
 | 
			
		||||
    <dt><code>GLX_RED_SIZE n</code></dt>
 | 
			
		||||
    <dd>Must be followed by a non-negative integer indicating the
 | 
			
		||||
minimum number of bits per red pixel component that is acceptable.</dd>
 | 
			
		||||
    <dt><code>GLX_GREEN_SIZE n</code></dt>
 | 
			
		||||
    <dd>Must be followed by a non-negative integer indicating the
 | 
			
		||||
minimum number of bits per green pixel component that is acceptable.</dd>
 | 
			
		||||
    <dt><code>GLX_BLUE_SIZE n</code></dt>
 | 
			
		||||
    <dd>Must be followed by a non-negative integer indicating the
 | 
			
		||||
minimum number of bits per blue pixel component that is acceptable.</dd>
 | 
			
		||||
    <dt><code>GLX_ALPHA_SIZE n</code></dt>
 | 
			
		||||
    <dd>Must be followed by a non-negative integer indicating the
 | 
			
		||||
minimum number of bits per alpha pixel component that is acceptable.</dd>
 | 
			
		||||
    <dt><code>GLX_STENCIL_SIZE n</code></dt>
 | 
			
		||||
    <dd>Must be followed by a non-negative integer indicating the
 | 
			
		||||
minimum number of bits per stencil value that is acceptable.</dd>
 | 
			
		||||
    <dt><code>None</code></dt>
 | 
			
		||||
    <dd>This token is used to terminate the attribute list.</dd>
 | 
			
		||||
  </dl>
 | 
			
		||||
</blockquote>
 | 
			
		||||
<p>glXChooseVisual will return a pointer to an XVisualInfo object which
 | 
			
		||||
most closely matches the requirements of the attribute list.  If there
 | 
			
		||||
is no visual which matches the request, NULL will be returned.</p>
 | 
			
		||||
<p>Note that visuals with accumulation buffers and depth buffers are
 | 
			
		||||
not available.<br>
 | 
			
		||||
<br>
 | 
			
		||||
</p>
 | 
			
		||||
<h2>3.3 Creating a Drawing Surface</h2>
 | 
			
		||||
<p>Drawing surfaces are created as X windows.  For Mini GLX,
 | 
			
		||||
windows are <i>full-screen</i>; they cover the entire frame buffer.
 | 
			
		||||
 Also, Mini GLX imposes a limit of one window.  A second window
 | 
			
		||||
cannot be created until the first one is destroyed.</p>
 | 
			
		||||
<h3>3.3.1 Window Creation</h3>
 | 
			
		||||
<p>The XCreateWindow function is used to create a drawing surface:</p>
 | 
			
		||||
<blockquote>
 | 
			
		||||
  <pre>Window XCreateWindow( Display *display,<br>                      Window parent,<br>                      int x, int y,<br>                      unsigned int width, unsigned int height,<br>                      unsigned int borderWidth,<br>                      int depth,<br>                      unsigned int class,<br>                      Visual *visual,<br>                      unsigned long valuemask,<br>                      XSetWindowAttributes *attributes )<br></pre>
 | 
			
		||||
</blockquote>
 | 
			
		||||
<p>The parameters are as follows:</p>
 | 
			
		||||
<blockquote>
 | 
			
		||||
  <dl>
 | 
			
		||||
    <dt><code>display</code></dt>
 | 
			
		||||
    <dd>A Display pointer, as returned by XOpenDisplay.</dd>
 | 
			
		||||
    <dt><code>parent</code></dt>
 | 
			
		||||
    <dd>The parent window for the new window.  For Mini GLX, this
 | 
			
		||||
should be<code>RootWindow(dpy, 0)</code>.</dd>
 | 
			
		||||
    <dt><code>x, y</code></dt>
 | 
			
		||||
    <dd>The position of the window.  For Mini GLX, both values should
 | 
			
		||||
be zero.</dd>
 | 
			
		||||
    <dt><code>width, height</code></dt>
 | 
			
		||||
    <dd>The size of the window.  For Mini GLX, this specifies the
 | 
			
		||||
desired screen size such as 1024, 768 or 1280, 1024.</dd>
 | 
			
		||||
    <dt><code>borderWidth</code></dt>
 | 
			
		||||
    <dd>This parameter should be zero.</dd>
 | 
			
		||||
    <dt><code>depth</code></dt>
 | 
			
		||||
    <dd>The pixel depth for the window.  For Mini GLX this should be
 | 
			
		||||
the depth found in the XVisualInfo object returned by <code>glxChooseVisual</code>.</dd>
 | 
			
		||||
    <dt><code>class</code></dt>
 | 
			
		||||
    <dd>The window class.  For Mini GLX this value should be <code>InputOutput</code>.</dd>
 | 
			
		||||
    <dt><code>visual</code></dt>
 | 
			
		||||
    <dd>This parameter should be the <code>visual</code> field of the <code>XVisualInfo</code>
 | 
			
		||||
object returned by <code>glxChooseVisual</code>.</dd>
 | 
			
		||||
    <dt><code>valuemask</code></dt>
 | 
			
		||||
    <dd>This parameter indicates which fields of the <code>XSetWindowAttributes</code>
 | 
			
		||||
are to be used. For Mini GLX this is typically the bitmask<code>CWBackPixel
 | 
			
		||||
| CWBorderPixel | CWColormap</code>.</dd>
 | 
			
		||||
    <dt><code>attributes</code></dt>
 | 
			
		||||
    <dd>Initial window attributes. Of the fields in the <code>XSetWindowAttributes</code>
 | 
			
		||||
structure, the<code>background_pixel</code>, <code>border_pixel</code>
 | 
			
		||||
and <code>colormap</code> fields should be set.  See the discussion
 | 
			
		||||
below regarding colormaps.</dd>
 | 
			
		||||
  </dl>
 | 
			
		||||
</blockquote>
 | 
			
		||||
<p><code>XCreateWindow</code> will return a window handle if it succeeds
 | 
			
		||||
or zero if it fails.</p>
 | 
			
		||||
<h3>3.3.2 Window Mapping</h3>
 | 
			
		||||
<p>To display the window the XMapWindow function must be called:</p>
 | 
			
		||||
<blockquote>
 | 
			
		||||
  <pre>void XMapWindow(Display *dpy, Window w)</pre>
 | 
			
		||||
</blockquote>
 | 
			
		||||
<p>This function does nothing in Mini GLX but is required for Xlib/GLX
 | 
			
		||||
compatibility</p>
 | 
			
		||||
<h3>3.3.3 Colormaps<br>
 | 
			
		||||
</h3>
 | 
			
		||||
<p>Xlib requires specification of a colormap when creating a window.
 | 
			
		||||
 For purposes of interoperability, Mini GLX requires this as well,
 | 
			
		||||
though the colormap is not actually used.  The XCreateColormap
 | 
			
		||||
function is used to create a colormap:</p>
 | 
			
		||||
<blockquote><code>Colormap XCreateColormap(Display *dpy, Window window,
 | 
			
		||||
Visual *visual, int alloc)</code><br>
 | 
			
		||||
  <code></code></blockquote>
 | 
			
		||||
<p>The parameters are as follows:<br>
 | 
			
		||||
</p>
 | 
			
		||||
<blockquote>
 | 
			
		||||
  <dl>
 | 
			
		||||
    <dt><code>dpy</code></dt>
 | 
			
		||||
    <dd>The display handle as returned by XOpenDisplay.</dd>
 | 
			
		||||
    <dt><code>window</code></dt>
 | 
			
		||||
    <dd> This parameter is ignored by Mini GLX but should be the value
 | 
			
		||||
returned by the <code>RootWindow(dpy, 0)</code> macro.<br>
 | 
			
		||||
    </dd>
 | 
			
		||||
    <dt><code>visual</code></dt>
 | 
			
		||||
    <dd>This parameter is ignored by Mini GLX but should be the visual
 | 
			
		||||
field of the XVisualInfo object returned by glXChooseVisual. </dd>
 | 
			
		||||
    <dt><code>alloc</code></dt>
 | 
			
		||||
    <dd>This parameter is ignored by Mini GLX but should be set to <code>AllocNone</code>.</dd>
 | 
			
		||||
  </dl>
 | 
			
		||||
</blockquote>
 | 
			
		||||
<br>
 | 
			
		||||
<h2>3.4 Creating a Rendering Context</h2>
 | 
			
		||||
<p>An OpenGL rendering context is created with the <code>glXCreateContext</code>
 | 
			
		||||
function:</p>
 | 
			
		||||
<blockquote>
 | 
			
		||||
  <pre>GLXContext glXCreateContext(Display *dpy, XVisualInfo *visInfo, GLXContext shareList, Bool direct)<br></pre>
 | 
			
		||||
</blockquote>
 | 
			
		||||
<p>The parameters are as follows:</p>
 | 
			
		||||
<blockquote>
 | 
			
		||||
  <dl>
 | 
			
		||||
    <dt><code>dpy</code></dt>
 | 
			
		||||
    <dd>The display handle as returned by XOpenDisplay.</dd>
 | 
			
		||||
    <dt><code>visInfo</code></dt>
 | 
			
		||||
    <dd>The visual as returned by glXChooseVisual.</dd>
 | 
			
		||||
    <dt><code>shareList</code></dt>
 | 
			
		||||
    <dd>If non-zero, texture objects and display lists are shared with
 | 
			
		||||
the named rendering context. If zero, texture objects and display lists
 | 
			
		||||
will (initially) be private to this context. They may be shared when a
 | 
			
		||||
subsequent context is created.</dd>
 | 
			
		||||
    <dt><code>direct</code></dt>
 | 
			
		||||
    <dd>Specifies whether direct or indirect rendering is desired. For
 | 
			
		||||
Mini GLX this value is ignored but it should be set to <code>True</code>.</dd>
 | 
			
		||||
  </dl>
 | 
			
		||||
</blockquote>
 | 
			
		||||
<p><code>glXCreateContext</code> will return a GLXContext handle if it
 | 
			
		||||
succeeds or zero if it fails due to invalid parameter or insufficient
 | 
			
		||||
resources.<br>
 | 
			
		||||
<br>
 | 
			
		||||
</p>
 | 
			
		||||
<h2>3.5 Binding a Rendering Context</h2>
 | 
			
		||||
<p>The final step before beginning OpenGL rendering is to bind (i.e.
 | 
			
		||||
activate) a rendering context and drawing surface with the
 | 
			
		||||
glXMakeCurrent function:</p>
 | 
			
		||||
<blockquote>
 | 
			
		||||
  <pre>Bool glXMakeCurrent(Display *dpy, GLXDrawable drawable, GLXContext ctx)<br></pre>
 | 
			
		||||
</blockquote>
 | 
			
		||||
<p>The parameters are as follows:</p>
 | 
			
		||||
<blockquote>
 | 
			
		||||
  <dl>
 | 
			
		||||
    <dt><code>dpy</code></dt>
 | 
			
		||||
    <dd>The display handle, as returned by XOpenDisplay.</dd>
 | 
			
		||||
    <dt><code>drawable</code></dt>
 | 
			
		||||
    <dd>The window or drawable to bind to the rendering context. This
 | 
			
		||||
should be the value returned by XCreateWindow.</dd>
 | 
			
		||||
    <dt><code>ctx</code></dt>
 | 
			
		||||
    <dd>The rendering context to bind, as returned by glXCreateContext.</dd>
 | 
			
		||||
  </dl>
 | 
			
		||||
</blockquote>
 | 
			
		||||
<p>If glXMakeCurrent succeeds True is returned.  Otherwise False is
 | 
			
		||||
returned to indicate an invalid display, window or context parameter.</p>
 | 
			
		||||
<p>After the rendering context has been bound to the drawing surface
 | 
			
		||||
OpenGL rendering can begin.</p>
 | 
			
		||||
<p>The current rendering context may be unbound by calling
 | 
			
		||||
glXMakeCurrent with the window and context parameters set to zero.</p>
 | 
			
		||||
<p>An application may create any number of rendering contexts and bind
 | 
			
		||||
them as needed. Note that binding a rendering context is generally not a
 | 
			
		||||
light-weight operation.  Most simple OpenGL applications create
 | 
			
		||||
only one rendering context.<br>
 | 
			
		||||
<br>
 | 
			
		||||
</p>
 | 
			
		||||
<h2>3.6 Color Buffer Swapping</h2>
 | 
			
		||||
<p>A double buffered window has two color buffers: a front buffer and a
 | 
			
		||||
back buffer.  Normally, rendering is directed to the back buffer while
 | 
			
		||||
the front buffer is displayed.  When rendering of a frame is finished
 | 
			
		||||
the front and back buffers are swapped to provide the illusion of
 | 
			
		||||
instanteous screen updates.</p>
 | 
			
		||||
<p>The color buffers for a particular window (i.e. drawable) may be
 | 
			
		||||
swapped with the glXSwapBuffers command:</p>
 | 
			
		||||
<blockquote>
 | 
			
		||||
  <pre>void glXSwapBuffers(Display *dpy, GLXDrawable drawable)<br></pre>
 | 
			
		||||
</blockquote>
 | 
			
		||||
Any pending rendering commands will be completed before the buffer swap
 | 
			
		||||
takes place.<br>
 | 
			
		||||
<br>
 | 
			
		||||
Calling glXSwapBuffers on a window which is single-buffered has no
 | 
			
		||||
effect.<br>
 | 
			
		||||
<br>
 | 
			
		||||
<h2>3.7 Releasing Resources</h2>
 | 
			
		||||
<h3>3.7.1 Releasing Rendering Contexts</h3>
 | 
			
		||||
<p>A rendering context may be destroyed by calling glXDestroyContext:</p>
 | 
			
		||||
<blockquote>
 | 
			
		||||
  <pre>void glXDestroyContext(Display *dpy, GLXContext ctx)<br></pre>
 | 
			
		||||
</blockquote>
 | 
			
		||||
<h3>3.7.2 Releasing Windows</h3>
 | 
			
		||||
<p>A window may be destroyed by calling XDestroyWindow:</p>
 | 
			
		||||
<blockquote>
 | 
			
		||||
  <pre>void XDestroyWindow(Display *dpy, Window window)<br></pre>
 | 
			
		||||
</blockquote>
 | 
			
		||||
<h3>3.7.3 Releasing Visuals</h3>
 | 
			
		||||
<p>An XVisualInfo object may be freed by calling XFree:</p>
 | 
			
		||||
<blockquote>
 | 
			
		||||
  <pre>void XFree(void *data)<br></pre>
 | 
			
		||||
</blockquote>
 | 
			
		||||
<h3>3.7.4 Releasing Colormaps</h3>
 | 
			
		||||
<p>A colormap may be freed by calling XFreeColormap:</p>
 | 
			
		||||
<blockquote>
 | 
			
		||||
  <pre>void XFreeColormap(Display *dpy, Colormap colormap)<br></pre>
 | 
			
		||||
</blockquote>
 | 
			
		||||
<h3>3.7.4 Releasing Display Resources</h3>
 | 
			
		||||
<p>When the application is about to exit, the resources associated with
 | 
			
		||||
the graphics system can be released by calling XCloseDisplay:</p>
 | 
			
		||||
<blockquote>
 | 
			
		||||
  <pre>void XCloseDisplay(Display *dpy)<br></pre>
 | 
			
		||||
</blockquote>
 | 
			
		||||
<p>The display handle becomes invalid at this point.<br>
 | 
			
		||||
<br>
 | 
			
		||||
</p>
 | 
			
		||||
<h2>3.8 Query Functions</h2>
 | 
			
		||||
<h3>3.8.1 Querying Available Visuals</h3>
 | 
			
		||||
A list of all available visuals can be obtained with the XGetVisualInfo
 | 
			
		||||
function:<br>
 | 
			
		||||
<br>
 | 
			
		||||
<div style="margin-left: 40px;"><code>XVisualInfo
 | 
			
		||||
*XGetVisualInfo(Display *dpy, long vinfo_mask, XVisualInfo
 | 
			
		||||
*vinfo_template, int *nitems_return)<br>
 | 
			
		||||
</code></div>
 | 
			
		||||
<br>
 | 
			
		||||
The parameters are as follows:<br>
 | 
			
		||||
<blockquote>
 | 
			
		||||
  <dl>
 | 
			
		||||
    <dt><code>dpy</code></dt>
 | 
			
		||||
    <dd>The display handle, as returned by XOpenDisplay.</dd>
 | 
			
		||||
    <dt><code>vinfo_mask</code></dt>
 | 
			
		||||
    <dd>A bitmask indicating which fields of the vinfo_template are to
 | 
			
		||||
be matched.  The value must be VisualScreenMask.</dd>
 | 
			
		||||
    <dt><code>vinfo_template</code></dt>
 | 
			
		||||
    <dd>A template whose fields indicate which visual attributes must
 | 
			
		||||
be matched by the results.  The screen field of this structure must
 | 
			
		||||
be zero.</dd>
 | 
			
		||||
    <dt><code>nitems_return</code></dt>
 | 
			
		||||
    <dd>Returns the number of visuals returned. </dd>
 | 
			
		||||
  </dl>
 | 
			
		||||
</blockquote>
 | 
			
		||||
The return value is the address of an array of all available visuals.<br>
 | 
			
		||||
<br>
 | 
			
		||||
An example of using XGetVisualInfo to get all available visuals follows:<br>
 | 
			
		||||
<br>
 | 
			
		||||
<div style="margin-left: 40px;"><code>XVisualInfo visTemplate, *results;</code><br>
 | 
			
		||||
<code>int numVisuals;</code><br>
 | 
			
		||||
<code>Display *dpy = XOpenDisplay(NULL);</code><br>
 | 
			
		||||
<code>visTemplate.screen = 0;</code><br>
 | 
			
		||||
<code>results = XGetVisualInfo(dpy, VisualScreenMask, &visTemplate,
 | 
			
		||||
&numVisuals);</code><br>
 | 
			
		||||
<code></code></div>
 | 
			
		||||
<br>
 | 
			
		||||
<h3>3.8.2 Querying Visual Attributes</h3>
 | 
			
		||||
<p>The GLX attributes of an X visual may be queried with the
 | 
			
		||||
glXGetConfig function:</p>
 | 
			
		||||
<blockquote>
 | 
			
		||||
  <pre>int glXGetConfig(Display *dpy, XVisualInfo *vis, int attribute, int *value)<br></pre>
 | 
			
		||||
</blockquote>
 | 
			
		||||
<p>The parameters are as follows:</p>
 | 
			
		||||
<blockquote>
 | 
			
		||||
  <dl>
 | 
			
		||||
    <dt><code>dpy</code></dt>
 | 
			
		||||
    <dd>The display handle, as returned by XOpenDisplay.</dd>
 | 
			
		||||
    <dt><code>vis</code></dt>
 | 
			
		||||
    <dd>The visual, as returned by glXChooseVisual.</dd>
 | 
			
		||||
    <dt><code>attribute</code></dt>
 | 
			
		||||
    <dd>The attribute to query.  The attributes are listed below.</dd>
 | 
			
		||||
    <dt><code>value</code></dt>
 | 
			
		||||
    <dd>Pointer to an integer in which the result of the query will be
 | 
			
		||||
stored. </dd>
 | 
			
		||||
  </dl>
 | 
			
		||||
</blockquote>
 | 
			
		||||
<p>The return value will be zero if no error occurs.<code>
 | 
			
		||||
 GLX_INVALID_ATTRIBUTE</code> will be returned if the attribute
 | 
			
		||||
parameter is invalid.<code>  GLX_BAD_VISUAL</code> will be returned
 | 
			
		||||
if the XVisualInfo parameter is invalid.</p>
 | 
			
		||||
<p>The following attributes may be queried:</p>
 | 
			
		||||
<blockquote>
 | 
			
		||||
  <dl>
 | 
			
		||||
    <dt><code>GLX_USE_GL</code></dt>
 | 
			
		||||
    <dd>The result will be <code>True</code> or <code>False</code> to
 | 
			
		||||
indicate if OpenGL rendering is supported with the visual.  Mini GLX
 | 
			
		||||
always return <code>True</code>.</dd>
 | 
			
		||||
    <dt><code>GLX_RGBA</code></dt>
 | 
			
		||||
    <dd>The result will be <code>True</code> for RGBA visuals or <code>False</code>
 | 
			
		||||
for color index visuals.</dd>
 | 
			
		||||
    <dt><code>GLX_DOUBLEBUFFER</code></dt>
 | 
			
		||||
    <dd>The result will be <code>True</code> if the visual has two
 | 
			
		||||
color buffers or <code>False</code> if the visual has one color buffer.</dd>
 | 
			
		||||
    <dt><code>GLX_RED_SIZE</code></dt>
 | 
			
		||||
    <dd>The result will be the number of red bits per pixel.</dd>
 | 
			
		||||
    <dt><code>GLX_GREEN_SIZE</code></dt>
 | 
			
		||||
    <dd>The result will be the number of green bits per pixel.</dd>
 | 
			
		||||
    <dt><code>GLX_BLUE_SIZE</code></dt>
 | 
			
		||||
    <dd>The result will be the number of blue bits per pixel.</dd>
 | 
			
		||||
    <dt><code>GLX_ALPHA_SIZE</code></dt>
 | 
			
		||||
    <dd>The result will be the number of alpha bits per pixel.</dd>
 | 
			
		||||
    <dt><code>GLX_DEPTH_SIZE</code></dt>
 | 
			
		||||
    <dd>The result will be the number of bits per Z value.</dd>
 | 
			
		||||
    <dt><code>GLX_STENCIL_SIZE</code></dt>
 | 
			
		||||
    <dd>The result will be the number of bits per stencil value.<br>
 | 
			
		||||
      <br>
 | 
			
		||||
    </dd>
 | 
			
		||||
  </dl>
 | 
			
		||||
</blockquote>
 | 
			
		||||
<h3>3.8.3 Querying the Current Rendering Context</h3>
 | 
			
		||||
<p>The current rendering context can be queried with
 | 
			
		||||
glXGetCurrentContext: </p>
 | 
			
		||||
<blockquote>
 | 
			
		||||
  <pre>GLXContext glXGetCurrentContext(void)<br></pre>
 | 
			
		||||
</blockquote>
 | 
			
		||||
<p>Zero will be returned if no context is currently bound.<br>
 | 
			
		||||
<br>
 | 
			
		||||
</p>
 | 
			
		||||
<h3>3.8.4 Querying the Current Drawable</h3>
 | 
			
		||||
<p>The current drawable (i.e. window or drawing surface) can be queried
 | 
			
		||||
with glXGetCurrentDrawable:</p>
 | 
			
		||||
<blockquote>
 | 
			
		||||
  <pre>GLXDrawable glXGetCurrentDrawable(void)<br></pre>
 | 
			
		||||
</blockquote>
 | 
			
		||||
<p>Zero will be returned if no drawable is currently bound.<br>
 | 
			
		||||
<br>
 | 
			
		||||
</p>
 | 
			
		||||
<h3>3.8.5 Function Address Queries</h3>
 | 
			
		||||
<p>The glXGetProcAddress function will return the address of any
 | 
			
		||||
available OpenGL or Mini GLX function:</p>
 | 
			
		||||
<blockquote>
 | 
			
		||||
  <pre>void *glXGetProcAddress(const GLubyte *procName)<br></pre>
 | 
			
		||||
</blockquote>
 | 
			
		||||
<p>If <code>procName</code> is a valid function name, a pointer to that
 | 
			
		||||
function will be returned.  Otherwise, NULL will be returned.</p>
 | 
			
		||||
<p>The purpose of glXGetProcAddress is to facilitate using future
 | 
			
		||||
extensions to OpenGL or Mini GLX.  If a future version of the library
 | 
			
		||||
adds new extension functions they'll be accessible via
 | 
			
		||||
glXGetProcAddress. The alternative is to hard-code calls to the new
 | 
			
		||||
functions in the application but doing so will prevent linking the
 | 
			
		||||
application with older versions of the library.<br>
 | 
			
		||||
<br>
 | 
			
		||||
</p>
 | 
			
		||||
<h2>3.9 Versioning</h2>
 | 
			
		||||
The Mini GLX version can be queried at run time with glXQueryVersion:
 | 
			
		||||
<blockquote>
 | 
			
		||||
  <pre>Bool glXQueryVersion(Display *dpy, int *major, int *minor)<br></pre>
 | 
			
		||||
</blockquote>
 | 
			
		||||
<p><code>major</code> will be set to the major version number and<code>minor</code>
 | 
			
		||||
will be set to the minor version number.<code>True</code> will be
 | 
			
		||||
returned if the function succeeds. <code>False</code> will be returned
 | 
			
		||||
if the function fails due to invalid parameters. The <code>dpy</code>
 | 
			
		||||
argument is currently ignored, but should be the value returned by
 | 
			
		||||
XOpenDisplay.</p>
 | 
			
		||||
<p>At compile time, the Mini GLX interface version can be tested with
 | 
			
		||||
the MINI_GLX_VERSION_1_<i>x</i> preprocessor tokens. For example, if
 | 
			
		||||
version 1.0 of Mini GLX is supported, then<code> MINI_GLX_VERSION_1_0</code>
 | 
			
		||||
will be defined. If version 1.1 of Mini GLX is supported, then<code>
 | 
			
		||||
MINI_GLX_VERSION_1_1</code> will be defined.</p>
 | 
			
		||||
<p>At the time of writing the current Mini GLX version is 1.0.<br>
 | 
			
		||||
<br>
 | 
			
		||||
</p>
 | 
			
		||||
<h1>4.0 Interoperability with GLX and Xlib</h1>
 | 
			
		||||
While Mini GLX strives to be compatible with GLX and Xlib there are
 | 
			
		||||
some unavoidable differences which must be taken into consideration.<br>
 | 
			
		||||
<h2>4.1 Public vs Private Structures</h2>
 | 
			
		||||
The structure of many X data types is public.  For example, the <code>Display</code>
 | 
			
		||||
data type is defined as a structure in /usr/include/X11/Xlib.h and
 | 
			
		||||
programmers may access any fields of that structure at will.  Mini
 | 
			
		||||
GLX also defines a Display data type but its fields are hidden and not
 | 
			
		||||
visiblein <code>miniglx.h</code>.  Duplicating the Xlib
 | 
			
		||||
declaration for the <code>Display</code> data type in minigl.h would
 | 
			
		||||
require defining a large number of other superfluous Xlib datatypes.<br>
 | 
			
		||||
<br>
 | 
			
		||||
Mini GLX users are discouraged from directly accessing the fields of
 | 
			
		||||
Xlib data types to maximize portability - though this is unavoidable to
 | 
			
		||||
some extent.  For example, the <code>XVisualInfo</code> and <code>XSetWindowAtttributes</code>
 | 
			
		||||
data types must be completely public.
 | 
			
		||||
<h2>4.2 Macros</h2>
 | 
			
		||||
In some cases, Xlib defines macros which are meant to be used instead
 | 
			
		||||
of direct structure accesses.  For example, the <code>RootWindow(dpy,
 | 
			
		||||
screen)</code> macro returns the root window for a given screen on a
 | 
			
		||||
given display.  Unfortunately, macros do nothing to aid in ABI
 | 
			
		||||
compatibility since they are resolved at compile time instead of at
 | 
			
		||||
link/run time.<br>
 | 
			
		||||
<br>
 | 
			
		||||
Mini GLX also defines a <code>RootWindow</code> macro since it's
 | 
			
		||||
essential for creating windows.  But the implementation of this
 | 
			
		||||
macro by Xlib and Mini GLX is completely different.<br>
 | 
			
		||||
<h2>4.3 Summary</h2>
 | 
			
		||||
Because Xlib and Mini GLX define data types and macros differently,
 | 
			
		||||
Mini GLX applications must be recompiled when retargeting Mini GLX or
 | 
			
		||||
native Xlib/GLX.  That is, applications can't simply be re-linked
 | 
			
		||||
because of ABI incompatibilities.<br>
 | 
			
		||||
<br>
 | 
			
		||||
Nevertheless, the fact that Mini GLX programs can be recompiled for
 | 
			
		||||
Xlib and GLX increases portability and flexibility for testing and
 | 
			
		||||
prototyping.<br>
 | 
			
		||||
<br>
 | 
			
		||||
<h1>5.0 Example Program</h1>
 | 
			
		||||
<p>This section shows an example program which uses the Mini GLX
 | 
			
		||||
interface. The program simply draws several frames of a rotating square.<br>
 | 
			
		||||
</p>
 | 
			
		||||
<p>The program may be compiled for use with Xlib/GLX or Mini GLX by
 | 
			
		||||
setting the <code>USE_MINIGLX</code> token to 0 or 1, respectively.
 | 
			
		||||
 Note that the only difference is the header files which are
 | 
			
		||||
included.<br>
 | 
			
		||||
</p>
 | 
			
		||||
<p> </p>
 | 
			
		||||
<pre><code><br></code>#define USE_MINIGLX 1  /* 1 = use Mini GLX, 0 = use Xlib/GLX */<br><br>#include <stdio.h><br>#include <stdlib.h><br>#include <GL/gl.h><br><br>#if USE_MINIGLX<br>#include <GL/miniglx.h><br>#else<br>#include <GL/glx.h><br>#include <X11/Xlib.h><br>#endif<br><br><code>/*<br> * Create a simple double-buffered RGBA window.<br> */<br>static Window<br>MakeWindow(Display * dpy, unsigned int width, unsigned int height)<br>{<br>   int visAttributes[] = {<br>      GLX_RGBA,<br>      GLX_RED_SIZE, 1,<br>      GLX_GREEN_SIZE, 1,<br>      GLX_BLUE_SIZE, 1,<br>      GLX_DOUBLEBUFFER,<br>      None<br>   };<br>   XSetWindowAttributes attr;<br>   unsigned long attrMask;<br>   Window root;<br>   Window win;<br>   GLXContext ctx;<br>   XVisualInfo *visinfo;<br><br>   root = RootWindow(dpy, 0);<br><br>   /* Choose GLX visual / pixel format */<br>   visinfo = glXChooseVisual(dpy, 0, visAttributes);<br>   if (!visinfo) {<br>      printf("Error: couldn't get an RGB, Double-buffered visual\n");<br>      exit(1);<br>   }<br><br>   /* Create the window */<br>   attr.background_pixel = 0;<br>   attr.border_pixel = 0;<br>   attr.colormap = XCreateColormap(dpy, root, visinfo->visual, AllocNone);<br>   attrMask = CWBackPixel | CWBorderPixel | CWColormap;<br>   win = XCreateWindow(dpy, root, 0, 0, width, height,<br>		       0, visinfo->depth, InputOutput,<br>		       visinfo->visual, attrMask, &attr);<br>   if (!win) {<br>      printf("Error: XCreateWindow failed\n");<br>      exit(1);<br>   }<br><br>   /* Display the window */<br>   XMapWindow(dpy, win);<br><br>   /* Create GLX rendering context */<br>   ctx = glXCreateContext(dpy, visinfo, NULL, True);<br>   if (!ctx) {<br>      printf("Error: glXCreateContext failed\n");<br>      exit(1);<br>   }<br><br>   /* Bind the rendering context and window */<br>   glXMakeCurrent(dpy, win, ctx);<br><br>   return win;<br>}<br><br><br>/*<br> * Draw a few frames of a rotating square.<br> */<br>static void<br>DrawFrames(Display * dpy, Window win)<br>{<br>   int angle;<br>   glShadeModel(GL_FLAT);<br>   glClearColor(0.5, 0.5, 0.5, 1.0);<br>   for (angle = 0; angle < 360; angle += 10) {<br>      glClear(GL_COLOR_BUFFER_BIT);<br>      glColor3f(1.0, 1.0, 0.0);<br>      glPushMatrix();<br>      glRotatef(angle, 0, 0, 1);<br>      glRectf(-0.8, -0.8, 0.8, 0.8);<br>      glPopMatrix();<br>      glXSwapBuffers(dpy, win);<br>   }<br>}<br><br><br>int<br>main(int argc, char *argv[])<br>{<br>   Display *dpy;<br>   Window win;<br><br>   dpy = XOpenDisplay(NULL);<br>   if (!dpy) {<br>      printf("Error: XOpenDisplay failed\n");<br>      return 1;<br>   }<br><br>   win = MakeWindow(dpy, 300, 300);<br><br>   DrawFrames(dpy, win);<br><br>   return 0;<br>}<br></code></pre>
 | 
			
		||||
<br>
 | 
			
		||||
</body>
 | 
			
		||||
</html>
 | 
			
		||||
@@ -644,7 +644,7 @@ Hints and Special Features:
 | 
			
		||||
 | 
			
		||||
	- The Voodoo driver supports the GL_EXT_paletted_texture. it works
 | 
			
		||||
	  only with GL_COLOR_INDEX8_EXT, GL_RGBA palettes and the alpha value
 | 
			
		||||
	  is ignored because this is a limitation of the current Glide
 | 
			
		||||
	  is ignored because this is a limitation of the the current Glide
 | 
			
		||||
	  version and of the Voodoo hardware. See Mesa-3.1/3Dfx/demos/paltex.c for
 | 
			
		||||
	  a demo of this extension.
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										124
									
								
								docs/README.D3D
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										124
									
								
								docs/README.D3D
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,124 @@
 | 
			
		||||
 | 
			
		||||
                     DirectX 6 Driver for Mesa 3.0
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
This software is distributed under the terms of the GNU Library
 | 
			
		||||
General Public License, see the LICENSE file for details.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
What do you need ?
 | 
			
		||||
------------------
 | 
			
		||||
 | 
			
		||||
	- A PC with a DirectX 6 video driver installed.
 | 
			
		||||
 | 
			
		||||
	- Mesa 3.0
 | 
			
		||||
 | 
			
		||||
	- The 3Dfx Glide library 2.3 or later for your OS (the 2.4 works fine).
 | 
			
		||||
	  The Voodoo2 requires the Glide library 2.51. The Glide 3.0 is not
 | 
			
		||||
	  compatible with the Glide 2.x so it doesn't work with the current
 | 
			
		||||
	  version of the driver;
 | 
			
		||||
 | 
			
		||||
	- Visual C++ 5.0 is only compiler test but others should be ok with
 | 
			
		||||
       changes to the makefiles (CFLAGS/LFLAGS).
 | 
			
		||||
 | 
			
		||||
	- DirectX 6 SDK (was a MS download but not sure if still available).
 | 
			
		||||
 | 
			
		||||
	- SoftIce or another debugger that will get DPF's is nice.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Tested on:
 | 
			
		||||
----------
 | 
			
		||||
	Windows 95
 | 
			
		||||
  	Windows 98
 | 
			
		||||
	Windows NT 5.0 (beta 2)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
What is able to do ?
 | 
			
		||||
--------------------
 | 
			
		||||
 | 
			
		||||
	- the driver will try and use DirectX to rasterize the OpenGL primitives
 | 
			
		||||
	that are sent to the driver.  The driver will fall back to SW  if the rendering 
 | 
			
		||||
	context is too big.  The fallback to SW still uses DirectDraw.  If the driver
 | 
			
		||||
	fails to support and operation (accum, stencil, etc) then it will try and get
 | 
			
		||||
	Mesa to render it in SW.  DirectX 6 features that are unsupported by the 
 | 
			
		||||
	installed DirectX 6 driver will be mapped to some other best fit feature.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
How to compile:
 | 
			
		||||
---------------
 | 
			
		||||
 | 
			
		||||
	These instructions assume you have Visual C++ installed.
 | 
			
		||||
 | 
			
		||||
	  You might need to increase you enviroment space.  You can do this by 
 | 
			
		||||
	adding the following statement to you config.sys.
 | 
			
		||||
 | 
			
		||||
	shell=C:\COMMAND.COM C:\ /p /e:8198
 | 
			
		||||
 | 
			
		||||
	  Next setup you compiler enviroment by running vcvars32.bat in the Visual C++
 | 
			
		||||
 	'bin' directoy.
 | 
			
		||||
 | 
			
		||||
	c:\DevStudio\VC\bin\vcvars32.bat
 | 
			
		||||
 | 
			
		||||
	  Modify the D3D makefile to point at your SDK install.  Example has the SDK
 | 
			
		||||
	installed on my 'f' drive in the root.
 | 
			
		||||
 | 
			
		||||
	file: \Mesa-3.0\src\makefile.d3d
 | 
			
		||||
 | 
			
		||||
	SDKROOT=f:\mssdk
 | 
			
		||||
 | 
			
		||||
	  Now you can simply make the project.  If you look in the makefile you can see
 | 
			
		||||
	I have some different targets like 'install'.  
 | 
			
		||||
 | 
			
		||||
	nmake /f makefile.d3d
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
FAQ:
 | 
			
		||||
----
 | 
			
		||||
 | 
			
		||||
	1) I don't think the driver is using my DirectX driver.
 | 
			
		||||
 | 
			
		||||
 	  This maybe true as the current version will only select the Primary D3D driver
 | 
			
		||||
	installed.  If you 3D card is the secondary (3dfx) then your out of luck for this
 | 
			
		||||
	release.
 | 
			
		||||
 | 
			
		||||
	2) The driver seems like its not HW accelerated.
 | 
			
		||||
 | 
			
		||||
	  If you have a video card with limited memory then you might want to try and 
 | 
			
		||||
	change your destop resolution to a low setting (640x480x16) so that the 3D part
 | 
			
		||||
	of the card has more resources.  Remeber the driver can't make the card better...
 | 
			
		||||
 | 
			
		||||
	3) Nothing works.
 | 
			
		||||
 | 
			
		||||
	  Make sure you have a DirectX '6' driver installed.  Check you driver docs for this
 | 
			
		||||
	info or use the SDK info utilities.
 | 
			
		||||
	  The final 'dll' is named opengl32.dll and is either in the same directory as the 
 | 
			
		||||
	OpenGL program or in your system directory (x:\windows\system or x:\winnt\system32).
 | 
			
		||||
	  Check your destop resolution.  Most DirectX 6 drivers will only support 16bit and
 | 
			
		||||
	32bit color depth.  To find out for sure you can check the DirectX Info Viewer in
 | 
			
		||||
	the SDK.
 | 
			
		||||
	  
 | 
			
		||||
 | 
			
		||||
	4) Rendering doesn't look right.
 | 
			
		||||
 | 
			
		||||
	  Sometimes this is because the card doesn't support a feature that that is required.
 | 
			
		||||
	This is usually due to unsupported alpha functions (test/blend) or texture mapping.
 | 
			
		||||
	Some cards suffer from too small of an alpha channel.  The driver does its best to
 | 
			
		||||
	fallback on unsupported features.  This is not to say the driver may not have a bug(s).
 | 
			
		||||
 | 
			
		||||
	5) Textures look bad.
 | 
			
		||||
 | 
			
		||||
	  No mipmapping in this release.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Thanks to:
 | 
			
		||||
----------
 | 
			
		||||
 | 
			
		||||
Brian Paul
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Leigh McRae (leigh@altsoftware.com)
 | 
			
		||||
February 9, 1999
 | 
			
		||||
 | 
			
		||||
@@ -1,33 +1,110 @@
 | 
			
		||||
File: docs/README.WIN32
 | 
			
		||||
 | 
			
		||||
Last updated: 23 April 2011
 | 
			
		||||
 | 
			
		||||
Last updated: Apr 25, 2007 - Karl Schultz - kschultz@users.sourceforge.net
 | 
			
		||||
 | 
			
		||||
Quick Start
 | 
			
		||||
----- -----
 | 
			
		||||
 | 
			
		||||
Windows drivers are build with SCons.  Makefiles or Visual Studio projects are
 | 
			
		||||
no longer shipped or supported.
 | 
			
		||||
Unzip the MesaLib, MesaGLUT, and MesaDemos ZIP files into the same
 | 
			
		||||
directory.  The libs and demos build separately, so if you do not care
 | 
			
		||||
about the demos or GLUT, you only need to unzip MesaLib.  If you unzip
 | 
			
		||||
more than one ZIP file, they all need to be unzipped into the same
 | 
			
		||||
directory.  Don't worry, you will not overwrite anything.
 | 
			
		||||
 | 
			
		||||
Run
 | 
			
		||||
The Windows build system uses Microsoft Visual Studio.  Project files
 | 
			
		||||
for a specific version of Visual Studio are in their own directory in
 | 
			
		||||
the top-level "windows" directory.  For example, Visual Studio 8 files
 | 
			
		||||
are in windows/VC8.
 | 
			
		||||
 | 
			
		||||
  scons osmesa mesagdi
 | 
			
		||||
Support has been dropped for versions of Visual Studio prior to 8. The
 | 
			
		||||
main reason is because Microsoft now provides a free compiler and
 | 
			
		||||
developer environment.  Visual Studio Express can be found at
 | 
			
		||||
 | 
			
		||||
to build classic mesa Windows GDI drivers; or
 | 
			
		||||
http://msdn.microsoft.com/vstudio/express/visualc/default.aspx
 | 
			
		||||
 | 
			
		||||
  scons libgl-gdi
 | 
			
		||||
You'll also need the Platform SDK.  Instructions for obtaining and
 | 
			
		||||
using the SDK with Visual Studio Express can be found at
 | 
			
		||||
 | 
			
		||||
to build gallium based GDI driver.
 | 
			
		||||
http://msdn.microsoft.com/vstudio/express/visualc/usingpsdk/
 | 
			
		||||
 | 
			
		||||
The project files to build the core Mesa library, Windows Mesa
 | 
			
		||||
drivers, OSMesa, and GLU are in the mesa directory.  The project files
 | 
			
		||||
to build GLUT and some demo programs are in the progs directory.
 | 
			
		||||
 | 
			
		||||
Makefiles are no longer shipped or supported, but can be generated
 | 
			
		||||
from the projects using Visual Studio.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Windows Drivers
 | 
			
		||||
------- -------
 | 
			
		||||
 | 
			
		||||
At this time, only the gallium GDI driver is known to work.
 | 
			
		||||
At this time, only the GDI driver is known to work.  Most of the demos
 | 
			
		||||
in progs/demos should work with this driver.
 | 
			
		||||
 | 
			
		||||
Source code also exists in the tree for other drivers in
 | 
			
		||||
src/mesa/drivers/windows, but the status of this code is unknown.
 | 
			
		||||
 | 
			
		||||
The GDI driver operates basically by writing pixel spans into a DIB
 | 
			
		||||
section and then blitting the DIB to the window.  The driver was
 | 
			
		||||
recently cleaned up and rewitten and so may have bugs or may be
 | 
			
		||||
missing some functionality.  The older versions of the CVS source may
 | 
			
		||||
be useful in figuring out any problems, or report them to me.
 | 
			
		||||
 | 
			
		||||
To build Mesa with the GDI driver, build the mesa, gdi, and glu
 | 
			
		||||
projects in the Visual Studio workspace found at
 | 
			
		||||
 | 
			
		||||
	windows/VC8/mesa/mesa.sln
 | 
			
		||||
 | 
			
		||||
The osmesa DLL can also be built with the osmesa project.
 | 
			
		||||
 | 
			
		||||
The build system creates a lib top-level directory and copies
 | 
			
		||||
resulting LIB and DLL files to this lib directory.  The files are:
 | 
			
		||||
 | 
			
		||||
	OPENGL32.LIB, GLU32.LIB, OSMESA32.LIB
 | 
			
		||||
	OPENGL32.DLL, GLU32.DLL, OSMESA32.DLL
 | 
			
		||||
 | 
			
		||||
If the MesaDemos ZIP file was extracted, the DLL files are also copied
 | 
			
		||||
to the demos directory.  This facilitates running the demos as described
 | 
			
		||||
below.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
GLUT and Demos
 | 
			
		||||
---- --- -----
 | 
			
		||||
 | 
			
		||||
A Visual Studio workspace can be found at 
 | 
			
		||||
 | 
			
		||||
	windows/VC8/progs/progs.sln
 | 
			
		||||
 | 
			
		||||
It can be used to build GLUT and a few demos.  The GLUT lib and DLL
 | 
			
		||||
are copied to the top-level lib directory, along with the Mesa libs.
 | 
			
		||||
 | 
			
		||||
The demo build system expects to find the LIB files in the top level
 | 
			
		||||
lib directory, so you must build the Mesa libs first.  The demo
 | 
			
		||||
executables are placed in the demos directory, because some of them
 | 
			
		||||
rely on data files found there.  Also, the Mesa lib DLL's were copied
 | 
			
		||||
there by the Mesa lib build process.  Therefore, you should be able to
 | 
			
		||||
simply run the demo executables from the demo directory.
 | 
			
		||||
 | 
			
		||||
If you want to run the demos from the Visual Studio, you may have to
 | 
			
		||||
change the startup directory and explicitly state where the executables are.
 | 
			
		||||
 | 
			
		||||
You may also build all the demo programs by using a makefile.  Go to
 | 
			
		||||
the progs/demos directory and make sure you have executed VCVARS32.BAT
 | 
			
		||||
or whatever setup script is appropriate for your compiler.  Then,
 | 
			
		||||
 | 
			
		||||
	nmake -f Makefile.win
 | 
			
		||||
 | 
			
		||||
should build all the demos.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Build System Notes
 | 
			
		||||
----- ------ -----
 | 
			
		||||
 | 
			
		||||
VC8
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
No notes.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
General
 | 
			
		||||
-------
 | 
			
		||||
@@ -47,5 +124,17 @@ the linker import files associated with the DLL files.
 | 
			
		||||
The si-glu sources are used to build the GLU libs.  This was done
 | 
			
		||||
mainly to get the better tessellator code.
 | 
			
		||||
 | 
			
		||||
If you have a Windows-related build problem or question, please post
 | 
			
		||||
to the mesa-dev or mesa-users list.
 | 
			
		||||
To build "mangled" Mesa, add the preprocessor define USE_MGL_NAMESPACE
 | 
			
		||||
to the project settings.  You will also need to edit src/mesa.def to
 | 
			
		||||
change all the gl* symbols to mgl*.  Because this is easy to do with a
 | 
			
		||||
global replace operation in a text editor, no additional mangled
 | 
			
		||||
version of mesa.def is maintained or shipped.
 | 
			
		||||
 | 
			
		||||
If you have a Windows-related build problem or question, it is
 | 
			
		||||
probably better to direct it to me (kschultz@users.sourceforge.net),
 | 
			
		||||
rather than directly to the other Mesa developers.  I will help you as
 | 
			
		||||
much as I can.  I also monitor the Mesa mailing lists and will answer
 | 
			
		||||
questions in this area there as well.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Karl Schultz
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										29
									
								
								docs/README.directfb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								docs/README.directfb
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,29 @@
 | 
			
		||||
                         
 | 
			
		||||
                         Mesa DirectFB Information
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Requirements
 | 
			
		||||
============
 | 
			
		||||
 | 
			
		||||
  To build Mesa with DirectFB (DirectFBGL) support you need:
 | 
			
		||||
     - DirectFB at least 1.0.0 (http://directfb.org)
 | 
			
		||||
     - pkg-config at least 0.9 (http://pkgconfig.sf.net)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Installation
 | 
			
		||||
============
 | 
			
		||||
  Run
 | 
			
		||||
     
 | 
			
		||||
     make linux-directfb
 | 
			
		||||
 | 
			
		||||
  to build Mesa and DirectFBGL module,
 | 
			
		||||
 | 
			
		||||
     make install
 | 
			
		||||
 | 
			
		||||
  to install OpenGL libraries and
 | 
			
		||||
 | 
			
		||||
     cd src/mesa/drivers/directfb ; make install
 | 
			
		||||
 | 
			
		||||
  to install DirectFBGL module in the proper location.
 | 
			
		||||
  Actually, that last command may not be needed.  Please provide feedback.
 | 
			
		||||
 | 
			
		||||
@@ -1,92 +0,0 @@
 | 
			
		||||
Name
 | 
			
		||||
 | 
			
		||||
    WL_bind_wayland_display
 | 
			
		||||
 | 
			
		||||
Name Strings
 | 
			
		||||
 | 
			
		||||
    EGL_WL_bind_wayland_display
 | 
			
		||||
 | 
			
		||||
Contact
 | 
			
		||||
 | 
			
		||||
    Kristian Høgsberg <krh@bitplanet.net>
 | 
			
		||||
    Benjamin Franzke <benjaminfranzke@googlemail.com>
 | 
			
		||||
 | 
			
		||||
Status
 | 
			
		||||
 | 
			
		||||
    Proposal
 | 
			
		||||
 | 
			
		||||
Version
 | 
			
		||||
 | 
			
		||||
    Version 1, March 1, 2011
 | 
			
		||||
 | 
			
		||||
Number
 | 
			
		||||
 | 
			
		||||
    EGL Extension #not assigned
 | 
			
		||||
 | 
			
		||||
Dependencies
 | 
			
		||||
 | 
			
		||||
    Requires EGL 1.4 or later.  This extension is written against the
 | 
			
		||||
    wording of the EGL 1.4 specification.
 | 
			
		||||
 | 
			
		||||
    EGL_KHR_base_image is required.
 | 
			
		||||
 | 
			
		||||
Overview
 | 
			
		||||
 | 
			
		||||
    This extension provides entry points for binding and unbinding the
 | 
			
		||||
    wl_display of a Wayland compositor to an EGLDisplay.  Binding a
 | 
			
		||||
    wl_display means that the EGL implementation should provide one or
 | 
			
		||||
    more interfaces in the Wayland protocol to allow clients to create
 | 
			
		||||
    wl_buffer objects.  On the server side, this extension also
 | 
			
		||||
    provides a new target for eglCreateImageKHR, to create an EGLImage
 | 
			
		||||
    from a wl_buffer
 | 
			
		||||
 | 
			
		||||
    Adding an implementation specific wayland interface, allows the
 | 
			
		||||
    EGL implementation to define specific wayland requests and events,
 | 
			
		||||
    needed for buffer sharing in an EGL wayland platform.
 | 
			
		||||
 | 
			
		||||
IP Status
 | 
			
		||||
 | 
			
		||||
    Open-source; freely implementable.
 | 
			
		||||
 | 
			
		||||
New Procedures and Functions
 | 
			
		||||
 | 
			
		||||
    EGLBoolean eglBindWaylandDisplayWL(EGLDisplay dpy,
 | 
			
		||||
                                       struct wl_display *display);
 | 
			
		||||
 | 
			
		||||
    EGLBoolean eglUnbindWaylandDisplayWL(EGLDisplay dpy,
 | 
			
		||||
                                         struct wl_display *display);
 | 
			
		||||
 | 
			
		||||
New Tokens
 | 
			
		||||
 | 
			
		||||
    Accepted as <target> in eglCreateImageKHR
 | 
			
		||||
 | 
			
		||||
        EGL_WAYLAND_BUFFER_WL                   0x31D5
 | 
			
		||||
 | 
			
		||||
Additions to the EGL 1.4 Specification:
 | 
			
		||||
 | 
			
		||||
    To bind a server side wl_display to an EGLDisplay, call
 | 
			
		||||
 | 
			
		||||
        EGLBoolean eglBindWaylandDisplayWL(EGLDisplay dpy,
 | 
			
		||||
                                           struct wl_display *display);
 | 
			
		||||
 | 
			
		||||
    To unbind a server side wl_display from an EGLDisplay, call
 | 
			
		||||
    
 | 
			
		||||
        EGLBoolean eglUnbindWaylandDisplayWL(EGLDisplay dpy,
 | 
			
		||||
                                             struct wl_display *display);
 | 
			
		||||
 | 
			
		||||
    eglBindWaylandDisplayWL returns EGL_FALSE when there is already a
 | 
			
		||||
    wl_display bound to EGLDisplay otherwise EGL_TRUE.
 | 
			
		||||
 | 
			
		||||
    eglUnbindWaylandDisplayWL returns EGL_FALSE when there is no
 | 
			
		||||
    wl_display bound to the EGLDisplay currently otherwise EGL_TRUE.
 | 
			
		||||
 | 
			
		||||
    Import a wl_buffer by calling eglCreateImageKHR with
 | 
			
		||||
    wl_buffer as EGLClientBuffer, EGL_WAYLAND_BUFFER_WL as the target,
 | 
			
		||||
    NULL context and an empty attribute_list.
 | 
			
		||||
 | 
			
		||||
Issues
 | 
			
		||||
 | 
			
		||||
Revision History
 | 
			
		||||
 | 
			
		||||
    Version 1, March 1, 2011
 | 
			
		||||
        Initial draft (Benjamin Franzke)
 | 
			
		||||
@@ -52,24 +52,21 @@ a:visited {
 | 
			
		||||
 | 
			
		||||
<b>User Topics</b>
 | 
			
		||||
<ul>
 | 
			
		||||
<li><a href="shading.html" target="MainFrame">Shading Language</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="pbuffers.html" target="MainFrame">Pbuffer 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>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<b>Developer Topics</b>
 | 
			
		||||
<ul>
 | 
			
		||||
<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="memory.html" target="MainFrame">DRI Memory Management</a>
 | 
			
		||||
<li><a href="shading.html" target="MainFrame">Shading Language</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>
 | 
			
		||||
@@ -92,6 +89,7 @@ a:visited {
 | 
			
		||||
<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>
 | 
			
		||||
<li><a href="demos.html" target="MainFrame">Demos / other</a>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<b>Hosted by:</b>
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										18
									
								
								docs/demos.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								docs/demos.html
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,18 @@
 | 
			
		||||
<HTML>
 | 
			
		||||
 | 
			
		||||
<TITLE>Demos</TITLE>
 | 
			
		||||
 | 
			
		||||
<link rel="stylesheet" type="text/css" href="mesa.css"></head>
 | 
			
		||||
 | 
			
		||||
<BODY>
 | 
			
		||||
 | 
			
		||||
<H1>Demos</H1>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<ul>
 | 
			
		||||
<li><a href="http://www.geocities.com/shobhand/homepage.html">Shobhan Dutta's Geartrain and Walkthrough Demos</a>
 | 
			
		||||
</li></ul>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
</body>
 | 
			
		||||
</html>
 | 
			
		||||
@@ -12,14 +12,12 @@
 | 
			
		||||
Both professional and volunteer developers contribute to Mesa.
 | 
			
		||||
</p>
 | 
			
		||||
<p>
 | 
			
		||||
<a href="http://www.vmware.com/" target="_parent">VMware</a>
 | 
			
		||||
<a href="http://www.tungstengraphics.com/" target="_parent">Tungsten Graphics</a>
 | 
			
		||||
employs several of the main Mesa developers including Brian Paul
 | 
			
		||||
and Keith Whitwell.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
In the past, Tungsten Graphics contracts implemented many Mesa features
 | 
			
		||||
including:
 | 
			
		||||
Much of the on-going work in Mesa is done through Tungsten Graphics engineering
 | 
			
		||||
contracts.
 | 
			
		||||
Prominent examples of this work includes:
 | 
			
		||||
</p>
 | 
			
		||||
<ul>
 | 
			
		||||
<li>DRI drivers for Intel i965, i945, i915 and other chips
 | 
			
		||||
@@ -31,13 +29,7 @@ including:
 | 
			
		||||
<p>
 | 
			
		||||
Other companies including
 | 
			
		||||
<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/" target="_parent">LunarG</a> can be contacted
 | 
			
		||||
for custom Mesa / 3D graphics development.
 | 
			
		||||
and IBM also actively contribute to the project.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
@@ -45,5 +37,15 @@ Volunteers have made significant contributions to all parts of Mesa, including
 | 
			
		||||
complete device drivers.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<H1>Custom Development</H1>
 | 
			
		||||
<p>
 | 
			
		||||
Contact <a href="http://www.tungstengraphics.com/" target="_parent">
 | 
			
		||||
Tungsten Graphics</a>
 | 
			
		||||
for information about custom development in Mesa, OpenGL, X and other
 | 
			
		||||
graphics technologies.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
</body>
 | 
			
		||||
</html>
 | 
			
		||||
 
 | 
			
		||||
@@ -107,7 +107,7 @@ Global variables are not allowed.
 | 
			
		||||
Function name examples:
 | 
			
		||||
</p>
 | 
			
		||||
<pre>
 | 
			
		||||
	glFooBar()       - a public GL entry point (in glapi_dispatch.c)
 | 
			
		||||
	glFooBar()       - a public GL entry point (in 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
 | 
			
		||||
@@ -145,7 +145,7 @@ Make sure the values in src/mesa/main/version.h are correct.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Update docs/news.html.
 | 
			
		||||
Update the docs/news.html file and docs/download.html files.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
@@ -208,11 +208,10 @@ sftp USERNAME,mesa3d@web.sourceforge.net
 | 
			
		||||
 | 
			
		||||
<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>
 | 
			
		||||
<em>m</em><em>e</em><em>s</em><em>a</em><em>3</em><em>d</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>s</em><em>f</em><em>.</em><em>n</em><em>e</em><em>t</em>,
 | 
			
		||||
<em>m</em><em>e</em><em>s</em><em>a</em><em>3</em><em>d</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>s</em><em>f</em><em>.</em><em>n</em><em>e</em><em>t</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>
 | 
			
		||||
<em>m</em><em>e</em><em>s</em><em>a</em><em>3</em><em>d</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>s</em><em>f</em><em>.</em><em>n</em><em>e</em><em>t</em>
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -199,7 +199,7 @@ few preprocessor defines.</p>
 | 
			
		||||
<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 any of <tt>PTHREADS</tt>,
 | 
			
		||||
<tt>WIN32_THREADS</tt>, or <tt>BEOS_THREADS</tt>
 | 
			
		||||
<tt>SOLARIS_THREADS</tt>, <tt>WIN32_THREADS</tt>, or <tt>BEOS_THREADS</tt>
 | 
			
		||||
is defined, method #2 is used.</li>
 | 
			
		||||
<li>If none of the preceeding are defined, method #1 is used.</li>
 | 
			
		||||
</ul>
 | 
			
		||||
@@ -244,8 +244,8 @@ isn't a significant problem.</p>
 | 
			
		||||
system.  There are two steps to this.  The file must first be added to
 | 
			
		||||
<tt>src/mesa/sources</tt>.  That gets the file built and linked.  The second
 | 
			
		||||
step is to add the correct <tt>#ifdef</tt> magic to
 | 
			
		||||
<tt>src/mesa/glapi/glapi_dispatch.c</tt> to prevent the C version of the
 | 
			
		||||
dispatch functions from being built.</p>
 | 
			
		||||
<tt>src/mesa/main/dispatch.c</tt> to prevent the C version of the dispatch
 | 
			
		||||
functions from being built.</p>
 | 
			
		||||
 | 
			
		||||
<A NAME="fixedsize"/>
 | 
			
		||||
<H3>3.4. Fixed-Length Dispatch Stubs</H3>
 | 
			
		||||
 
 | 
			
		||||
@@ -21,52 +21,76 @@ When a new release is coming, release candidates (betas) may be found
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
The Mesa package is named MesaLib-x.y.z.{tar.bz2, tar.gz, zip} where x.y.z
 | 
			
		||||
is the version.  There are three types of compressed archives.
 | 
			
		||||
Mesa is distributed in several parts:
 | 
			
		||||
</p>
 | 
			
		||||
<ul>
 | 
			
		||||
<li><b>MesaLib-x.y.z</b> - the main Mesa library source code, drivers
 | 
			
		||||
    and documentation.
 | 
			
		||||
</li>
 | 
			
		||||
<li><b>MesaDemos-x.y.z</b> - OpenGL demonstration and test programs.
 | 
			
		||||
    Most of the programs require GLUT (either the
 | 
			
		||||
    <a href="http://www.opengl.org/resources/libraries/glut"
 | 
			
		||||
    target="_parent">original GLUT by Mark Kilgard</a> or
 | 
			
		||||
    <a href="http://freeglut.sourceforge.net" target="_parent">freeglut</a> or
 | 
			
		||||
    <a href="http://openglut.sourceforge.net" target="_parent">OpenGLUT</a>).
 | 
			
		||||
</li>
 | 
			
		||||
<li><b>MesaGLUT-x.y.z</b> - Mark Kilgard's GLUT, easily compiled and used
 | 
			
		||||
    with Mesa.  Plus, other implementation of GLUT for DOS, OS/2, BeOS, etc.
 | 
			
		||||
</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
There's also the MesaGLUT-x.y.z.{tar.bz2, tar.gz, zip} packages which
 | 
			
		||||
contain Mark Kilgard's GLUT library.
 | 
			
		||||
This is optional.
 | 
			
		||||
Most Linux distributions include an implementation of GLUT (such as freeglut).
 | 
			
		||||
</p>
 | 
			
		||||
<p>
 | 
			
		||||
In the past, the Mesa demos collection was distributed as
 | 
			
		||||
MesaDemos-x.y.z.{tar.bz2, tar.gz, zip}.
 | 
			
		||||
Now, the
 | 
			
		||||
<a href="ftp://ftp.freedesktop.org/pub/mesa/demos/" target="_parent">
 | 
			
		||||
Mesa demos</a> are distributed separately.
 | 
			
		||||
If you're not interested in running the demos, you'll only need the first
 | 
			
		||||
package.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
If you're new to this and not sure what you're doing, grab all three packages.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
The packages are available in .tar.gz, .tar.bz2 and .zip formats.
 | 
			
		||||
Other sites might offer additional package formats.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<H1>Unpacking</H1>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
To unpack .tar.gz files:
 | 
			
		||||
All the packages should be in the same directory prior to unpacking.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<ul>
 | 
			
		||||
<li>To unpack .tar.gz files:
 | 
			
		||||
<pre>
 | 
			
		||||
	tar zxf MesaLib-x.y.z.tar.gz
 | 
			
		||||
	tar zxf MesaLib-X.Y.tar.gz
 | 
			
		||||
	tar zxf MesaDemos-X.Y.tar.gz
 | 
			
		||||
	tar zxf MesaGLUT-X.Y.tar.gz
 | 
			
		||||
</pre>
 | 
			
		||||
or
 | 
			
		||||
<pre>
 | 
			
		||||
	gzcat MesaLib-x.y.z.tar.gz | tar xf -
 | 
			
		||||
	gzcat MesaLib-X.Y.tar.gz | tar xf -
 | 
			
		||||
	gzcat MesaDemos-X.Y.tar.gz | tar xf -
 | 
			
		||||
	gzcat MesaGLUT-X.Y.tar.gz | tar xf -
 | 
			
		||||
</pre>
 | 
			
		||||
or
 | 
			
		||||
<pre>
 | 
			
		||||
	gunzip MesaLib-x.y.z.tar.gz ; tar xf MesaLib-x.y.z.tar
 | 
			
		||||
	gunzip MesaLib-X.Y.tar.gz ; tar xf MesaLib-X.Y.tar
 | 
			
		||||
	gunzip MesaDemos-X.Y.tar.gz ; tar xf MesaDemos-X.Y.tar
 | 
			
		||||
	gunzip MesaGLUT-X.Y.tar.gz ; tar xf MesaGLUT-X.Y.tar
 | 
			
		||||
</pre>
 | 
			
		||||
<p>
 | 
			
		||||
To unpack .tar.bz2 files:
 | 
			
		||||
</p>
 | 
			
		||||
<li>To unpack .tar.bz2 files:
 | 
			
		||||
<pre>
 | 
			
		||||
	bunzip2 -c MesaLib-x.y.z.tar.gz | tar xf -
 | 
			
		||||
	bunzip2 -c MesaLib-X.Y.tar.gz | tar xf -
 | 
			
		||||
	bunzip2 -c MesaDemos-X.Y.tar.gz | tar xf -
 | 
			
		||||
	bunzip2 -c MesaGLUT-X.Y.tar.gz | tar xf -
 | 
			
		||||
</pre>
 | 
			
		||||
<p>
 | 
			
		||||
To unpack .zip files:
 | 
			
		||||
</p>
 | 
			
		||||
<li>To unpack .zip files:
 | 
			
		||||
<pre>
 | 
			
		||||
	unzip MesaLib-x.y.z.zip
 | 
			
		||||
	unzip MesaLib-X.Y.zip
 | 
			
		||||
	unzip MesaDemos-X.Y.zip
 | 
			
		||||
	unzip MesaGLUT-X.Y.zip
 | 
			
		||||
</pre>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h1>Contents</h1>
 | 
			
		||||
@@ -82,13 +106,22 @@ bin/		- shell scripts for making shared libraries, etc
 | 
			
		||||
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
 | 
			
		||||
src/glw		- Xt/Motif/OpenGL widget code
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
If you downloaded and unpacked the MesaGLUT.x.y.z package:
 | 
			
		||||
If you downloaded and unpacked the MesaDemos.X.Y package:
 | 
			
		||||
 | 
			
		||||
<pre>
 | 
			
		||||
progs/demos	- original Mesa demos
 | 
			
		||||
progs/xdemos	- GLX OpenGL/Mesa demos
 | 
			
		||||
progs/redbook	- examples from the OpenGL Programming Guide
 | 
			
		||||
progs/samples	- examples from SGI
 | 
			
		||||
progs/images/	- image files
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
If you downloaded and unpacked the MesaGLUT.X.Y package:
 | 
			
		||||
<pre>
 | 
			
		||||
src/glut	- GLUT library source code
 | 
			
		||||
</pre>
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										320
									
								
								docs/egl.html
									
									
									
									
									
								
							
							
						
						
									
										320
									
								
								docs/egl.html
									
									
									
									
									
								
							@@ -1,320 +0,0 @@
 | 
			
		||||
<html>
 | 
			
		||||
 | 
			
		||||
<title>Mesa EGL</title>
 | 
			
		||||
 | 
			
		||||
<head><link rel="stylesheet" type="text/css" href="mesa.css"></head>
 | 
			
		||||
 | 
			
		||||
<body>
 | 
			
		||||
 | 
			
		||||
<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/" target="_parent">
 | 
			
		||||
http://www.khronos.org/egl/</a>.</p>
 | 
			
		||||
 | 
			
		||||
<p>The Mesa's implementation of EGL uses a driver architecture.  The main
 | 
			
		||||
library (<code>libEGL</code>) is window system neutral.  It provides the EGL
 | 
			
		||||
API entry points and helper functions for use by the drivers.  Drivers are
 | 
			
		||||
dynamically loaded by the main library and most of the EGL API calls are
 | 
			
		||||
directly dispatched to the drivers.</p>
 | 
			
		||||
 | 
			
		||||
<p>The driver in use decides the window system to support.</p>
 | 
			
		||||
 | 
			
		||||
<h2>Build EGL</h2>
 | 
			
		||||
 | 
			
		||||
<ol>
 | 
			
		||||
<li>
 | 
			
		||||
<p>Run <code>configure</code> with the desired client APIs and enable
 | 
			
		||||
the driver for your hardware.  For example</p>
 | 
			
		||||
 | 
			
		||||
<pre>
 | 
			
		||||
  $ ./configure --enable-gles1 --enable-gles2 \
 | 
			
		||||
                --with-dri-drivers=... \
 | 
			
		||||
                --with-gallium-drivers=...
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
<p>The main library and OpenGL is enabled by default.  The first two options
 | 
			
		||||
above enables <a href="opengles.html">OpenGL ES 1.x and 2.x</a>.  The last two
 | 
			
		||||
options enables the listed classic and and Gallium drivers respectively.</p>
 | 
			
		||||
 | 
			
		||||
</li>
 | 
			
		||||
 | 
			
		||||
<li>Build and install Mesa as usual.</li>
 | 
			
		||||
</ol>
 | 
			
		||||
 | 
			
		||||
<p>In the given example, it will build and install <code>libEGL</code>,
 | 
			
		||||
<code>libGL</code>, <code>libGLESv1_CM</code>, <code>libGLESv2</code>, and one
 | 
			
		||||
or more EGL drivers.</p>
 | 
			
		||||
 | 
			
		||||
<h3>Configure Options</h3>
 | 
			
		||||
 | 
			
		||||
<p>There are several options that control the build of EGL at configuration
 | 
			
		||||
time</p>
 | 
			
		||||
 | 
			
		||||
<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>
 | 
			
		||||
 | 
			
		||||
</li>
 | 
			
		||||
 | 
			
		||||
<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>
 | 
			
		||||
 | 
			
		||||
</li>
 | 
			
		||||
 | 
			
		||||
<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
 | 
			
		||||
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>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>
 | 
			
		||||
 | 
			
		||||
</li>
 | 
			
		||||
 | 
			
		||||
<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>
 | 
			
		||||
 | 
			
		||||
</li>
 | 
			
		||||
 | 
			
		||||
<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>
 | 
			
		||||
 | 
			
		||||
</li>
 | 
			
		||||
 | 
			
		||||
<li><code>--enable-openvg</code>
 | 
			
		||||
 | 
			
		||||
<p>OpenVG must be explicitly enabled by this option.</p>
 | 
			
		||||
 | 
			
		||||
</li>
 | 
			
		||||
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<h2>Use EGL</h2>
 | 
			
		||||
 | 
			
		||||
<h3>Demos</h3>
 | 
			
		||||
 | 
			
		||||
<p>There are demos for the client APIs supported by EGL.  They can be found in
 | 
			
		||||
mesa/demos repository.</p>
 | 
			
		||||
 | 
			
		||||
<h3>Environment Variables</h3>
 | 
			
		||||
 | 
			
		||||
<p>There are several environment variables that control the behavior of EGL at
 | 
			
		||||
runtime</p>
 | 
			
		||||
 | 
			
		||||
<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
 | 
			
		||||
colon-separated directories where the main library will look for drivers, in
 | 
			
		||||
addition to the default directory.  This variable is ignored for setuid/setgid
 | 
			
		||||
binaries.</p>
 | 
			
		||||
 | 
			
		||||
<p>This variable is usually set to test an uninstalled build.  For example, one
 | 
			
		||||
may set</p>
 | 
			
		||||
 | 
			
		||||
<pre>
 | 
			
		||||
  $ export LD_LIBRARY_PATH=$mesa/lib
 | 
			
		||||
  $ export EGL_DRIVERS_PATH=$mesa/lib/egl
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
<p>to test a build without installation</p>
 | 
			
		||||
 | 
			
		||||
</li>
 | 
			
		||||
 | 
			
		||||
<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>
 | 
			
		||||
 | 
			
		||||
</li>
 | 
			
		||||
 | 
			
		||||
<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,
 | 
			
		||||
the main library uses the first platform listed in
 | 
			
		||||
<code>--with-egl-platforms</code> as the native platform.</p>
 | 
			
		||||
 | 
			
		||||
<p>Extensions like <code>EGL_MESA_drm_display</code> define new functions to
 | 
			
		||||
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>
 | 
			
		||||
 | 
			
		||||
</li>
 | 
			
		||||
 | 
			
		||||
<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>
 | 
			
		||||
 | 
			
		||||
</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>
 | 
			
		||||
 | 
			
		||||
<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
 | 
			
		||||
the X server directly using (XCB-)DRI2 protocol.</p>
 | 
			
		||||
 | 
			
		||||
<p>This driver can share DRI drivers with <code>libGL</code>.</p>
 | 
			
		||||
 | 
			
		||||
</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.  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 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>
 | 
			
		||||
 | 
			
		||||
<p>Contexts and surfaces are examples of display resources.  They might live
 | 
			
		||||
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
 | 
			
		||||
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
 | 
			
		||||
should not be destroyed immediately.  EGL requires the resource to live until
 | 
			
		||||
it is no longer current.  A driver usually calls
 | 
			
		||||
<code>eglIs<Resource>Bound</code> to check if a resource is bound
 | 
			
		||||
(current) to any thread in the destroy callbacks.  If it is still bound, the
 | 
			
		||||
resource is not destroyed.</p>
 | 
			
		||||
 | 
			
		||||
<p>The main library will mark destroyed current resources as unlinked.  In a
 | 
			
		||||
driver's <code>MakeCurrent</code> callback,
 | 
			
		||||
<code>eglIs<Resource>Linked</code> can then be called to check if a newly
 | 
			
		||||
released resource is linked to a display.  If it is not, the last reference to
 | 
			
		||||
the resource is removed and the driver should destroy the resource.  But it
 | 
			
		||||
should be careful here because <code>MakeCurrent</code> might be called with an
 | 
			
		||||
uninitialized display.</p>
 | 
			
		||||
 | 
			
		||||
<p>This is the only mechanism provided by the main library to help manage the
 | 
			
		||||
resources.  The drivers are responsible to the correct behavior as defined by
 | 
			
		||||
EGL.</p>
 | 
			
		||||
 | 
			
		||||
<h3><code>EGL_RENDER_BUFFER</code></h3>
 | 
			
		||||
 | 
			
		||||
<p>In EGL, the color buffer a context should try to render to is decided by the
 | 
			
		||||
binding surface.  It should try to render to the front buffer if the binding
 | 
			
		||||
surface has <code>EGL_RENDER_BUFFER</code> set to
 | 
			
		||||
<code>EGL_SINGLE_BUFFER</code>;  If the same context is later bound to a
 | 
			
		||||
surface with <code>EGL_RENDER_BUFFER</code> set to
 | 
			
		||||
<code>EGL_BACK_BUFFER</code>, the context should try to render to the back
 | 
			
		||||
buffer.  However, the context is allowed to make the final decision as to which
 | 
			
		||||
color buffer it wants to or is able to render to.</p>
 | 
			
		||||
 | 
			
		||||
<p>For pbuffer surfaces, the render buffer is always
 | 
			
		||||
<code>EGL_BACK_BUFFER</code>.  And for pixmap surfaces, the render buffer is
 | 
			
		||||
always <code>EGL_SINGLE_BUFFER</code>.  Unlike window surfaces, EGL spec
 | 
			
		||||
requires their <code>EGL_RENDER_BUFFER</code> values to be honored.  As a
 | 
			
		||||
result, a driver should never set <code>EGL_PIXMAP_BIT</code> or
 | 
			
		||||
<code>EGL_PBUFFER_BIT</code> bits of a config if the contexts created with the
 | 
			
		||||
config won't be able to honor the <code>EGL_RENDER_BUFFER</code> of pixmap or
 | 
			
		||||
pbuffer surfaces.</p>
 | 
			
		||||
 | 
			
		||||
<p>It should also be noted that pixmap and pbuffer surfaces are assumed to be
 | 
			
		||||
single-buffered, in that <code>eglSwapBuffers</code> has no effect on them.  It
 | 
			
		||||
is desirable that a driver allocates a private color buffer for each pbuffer
 | 
			
		||||
surface created.  If the window system the driver supports has native pbuffers,
 | 
			
		||||
or if the native pixmaps have more than one color buffers, the driver should
 | 
			
		||||
carefully attach the native color buffers to the EGL surfaces, re-route them if
 | 
			
		||||
required.</p>
 | 
			
		||||
 | 
			
		||||
<p>There is no defined behavior as to, for example, how
 | 
			
		||||
<code>glDrawBuffer</code> interacts with <code>EGL_RENDER_BUFFER</code>.  Right
 | 
			
		||||
now, it is desired that the draw buffer in a client API be fixed for pixmap and
 | 
			
		||||
pbuffer surfaces.  Therefore, the driver is responsible to guarantee that the
 | 
			
		||||
client API renders to the specified render buffer for pixmap and pbuffer
 | 
			
		||||
surfaces.</p>
 | 
			
		||||
 | 
			
		||||
<h3><code>EGLDisplay</code> Mutex</h3>
 | 
			
		||||
 | 
			
		||||
The <code>EGLDisplay</code> will be locked before calling any of the dispatch
 | 
			
		||||
functions (well, except for GetProcAddress which does not take an
 | 
			
		||||
<code>EGLDisplay</code>).  This guarantees that the same dispatch function will
 | 
			
		||||
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.
 | 
			
		||||
 | 
			
		||||
</body>
 | 
			
		||||
</html>
 | 
			
		||||
@@ -9,38 +9,17 @@
 | 
			
		||||
<H1>Environment Variables</H1>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Normally, no environment variables need to be set.  Most of the environment
 | 
			
		||||
variables used by Mesa/Gallium are for debugging purposes, but they can
 | 
			
		||||
sometimes be useful for debugging end-user issues.
 | 
			
		||||
Mesa supports the following environment variables:
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<H2>LibGL environment variables</H2>
 | 
			
		||||
 | 
			
		||||
<ul>
 | 
			
		||||
<li>LIBGL_DEBUG - If defined debug information will be printed to stderr.
 | 
			
		||||
   If set to 'verbose' additional information will be printed.
 | 
			
		||||
<li>LIBGL_DRIVERS_PATH - colon-separated list of paths to search for DRI drivers
 | 
			
		||||
<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)
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<H2>Core Mesa environment variables</H2>
 | 
			
		||||
 | 
			
		||||
<ul>
 | 
			
		||||
<li>MESA_NO_ASM - if set, disables all assembly language optimizations
 | 
			
		||||
<li>MESA_NO_MMX - if set, disables Intel MMX optimizations
 | 
			
		||||
<li>MESA_NO_3DNOW - if set, disables AMD 3DNow! optimizations
 | 
			
		||||
<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 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.
 | 
			
		||||
<li>MESA_DEBUG - if set, error messages are printed to stderr.
 | 
			
		||||
If the value of MESA_DEBUG is "FP" floating point arithmetic errors will
 | 
			
		||||
generate exceptions.
 | 
			
		||||
<li>MESA_NO_DITHER - if set, disables dithering, overriding glEnable(GL_DITHER)
 | 
			
		||||
<li>MESA_TEX_PROG - if set, implement conventional texture env modes with
 | 
			
		||||
fragment programs (intended for developers only)
 | 
			
		||||
<li>MESA_TNL_PROG - if set, implement conventional vertex transformation
 | 
			
		||||
@@ -49,23 +28,10 @@ Setting this variable automatically sets the MESA_TEX_PROG variable as well.
 | 
			
		||||
<li>MESA_EXTENSION_OVERRIDE - can be used to enable/disable extensions.
 | 
			
		||||
A value such as "GL_EXT_foo -GL_EXT_bar" will enable the GL_EXT_foo extension
 | 
			
		||||
and disable the GL_EXT_bar extension.
 | 
			
		||||
<li>MESA_EXTENSION_MAX_YEAR - The GL_EXTENSIONS string returned by Mesa is sorted
 | 
			
		||||
by extension year.
 | 
			
		||||
If this variable is set to year X, only extensions defined on or before year
 | 
			
		||||
X will be reported.
 | 
			
		||||
This is to work-around a bug in some games where the extension string is
 | 
			
		||||
copied into a fixed-size buffer without truncating.
 | 
			
		||||
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_GLSL - <a href="shading.html#envvars">shading language compiler options</a>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<H2>Mesa Xlib driver environment variables</H2>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
The following are only applicable to the Mesa Xlib software driver.
 | 
			
		||||
The following are only applicable to the Xlib software driver.
 | 
			
		||||
See the <A HREF="xlibdriver.html">Xlib software driver page</A> for details.
 | 
			
		||||
</p>
 | 
			
		||||
<ul>
 | 
			
		||||
@@ -84,81 +50,5 @@ See the <A HREF="xlibdriver.html">Xlib software driver page</A> for details.
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>i945/i965 driver environment variables (non-Gallium)</h2>
 | 
			
		||||
 | 
			
		||||
<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>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>Radeon R300 driver environment variables (non-Gallium)</h2>
 | 
			
		||||
 | 
			
		||||
<ul>
 | 
			
		||||
<li>R300_NO_TCL - if set, disable hardware-accelerated Transform/Clip/Lighting.
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>EGL environment variables</h2>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Mesa EGL supports different sets of environment variables.  See the
 | 
			
		||||
<a href="egl.html">Mesa EGL</a> page for the details.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>Gallium environment variables</h2>
 | 
			
		||||
 | 
			
		||||
<ul>
 | 
			
		||||
<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.
 | 
			
		||||
<LI>DRAW_FSE - ???
 | 
			
		||||
<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.
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<h3>Softpipe driver environment variables</h3>
 | 
			
		||||
<ul>
 | 
			
		||||
<li>SOFTPIPE_DUMP_FS - if set, the softpipe driver will print fragment shaders
 | 
			
		||||
    to stderr
 | 
			
		||||
<li>SOFTPIPE_DUMP_GS - if set, the softpipe driver will print geometry shaders
 | 
			
		||||
    to stderr
 | 
			
		||||
<li>SOFTPIPE_NO_RAST - if set, rasterization is no-op'd.  For profiling purposes.
 | 
			
		||||
</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 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.
 | 
			
		||||
<li>LP_NUM_THREADS - an integer indicating how many threads to use for rendering.
 | 
			
		||||
    Zero turns of threading completely.  The default value is the number of CPU
 | 
			
		||||
    cores present.
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Other Gallium drivers have their own environment variables.  These may change
 | 
			
		||||
frequently so the source code should be consulted for details.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<br>
 | 
			
		||||
<br>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
</BODY>
 | 
			
		||||
</HTML>
 | 
			
		||||
 
 | 
			
		||||
@@ -9,9 +9,6 @@
 | 
			
		||||
<center><h1>Mesa fbdev/DRI Drivers</h1></center>
 | 
			
		||||
<br>
 | 
			
		||||
 | 
			
		||||
<h1><center>NOTE: this information is obsolete and will be removed at
 | 
			
		||||
a future date</center></h1>
 | 
			
		||||
 | 
			
		||||
<h1>1. Introduction</h1>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
@@ -25,7 +22,7 @@ Contributors to this project include Jon Smirl, Keith Whitwell and Dave Airlie.
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Applications in the fbdev/DRI environment use
 | 
			
		||||
the MiniGLX interface to choose pixel
 | 
			
		||||
the <a href="http://www.nabble.com/file/p15480666/MiniGXL.html"> MiniGLX</a> interface to choose pixel
 | 
			
		||||
formats, create rendering contexts, etc.  It's a subset of the GLX and
 | 
			
		||||
Xlib interfaces allowing some degree of application portability between
 | 
			
		||||
the X and X-less environments.
 | 
			
		||||
@@ -318,7 +315,8 @@ It means that the sample_server process is not running.
 | 
			
		||||
<h1>5.0 Programming Information</h1>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
OpenGL/Mesa is interfaced to fbdev via the MiniGLX interface.
 | 
			
		||||
OpenGL/Mesa is interfaced to fbdev via the <a href="http://www.nabble.com/file/p15480666/MiniGLX.html">MiniGLX</a>
 | 
			
		||||
interface.
 | 
			
		||||
MiniGLX is a subset of Xlib and GLX API functions which provides just
 | 
			
		||||
enough functionality to setup OpenGL rendering and respond to simple
 | 
			
		||||
input events.
 | 
			
		||||
@@ -334,7 +332,7 @@ This allows some degree of flexibility for software development and testing.
 | 
			
		||||
However, the MiniGLX API is not binary-compatible with full Xlib/GLX.
 | 
			
		||||
Some of the structures are different and some macros/functions work
 | 
			
		||||
differently.
 | 
			
		||||
See the GL/miniglx.h header file for details.
 | 
			
		||||
See the <code>GL/miniglx.h</code> header file for details.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -12,16 +12,16 @@
 | 
			
		||||
<ol>
 | 
			
		||||
<li><a href="#unix-x11">Unix / X11</a>
 | 
			
		||||
  <ul>
 | 
			
		||||
  <li><a href="#prereq-general">General prerequisites for building</a>
 | 
			
		||||
  <li><a href="#prereq-dri">Prerequisites for DRI and hardware acceleration</a>
 | 
			
		||||
  <li><a href="#prereq">Prerequisites for DRI and hardware acceleration</a>
 | 
			
		||||
  <li><a href="#autoconf">Building with autoconf</a>
 | 
			
		||||
  <li><a href="#traditional">Building with traditional Makefiles</a>
 | 
			
		||||
  <li><a href="#libs">The Libraries</a>
 | 
			
		||||
  <li><a href="#demos">Running the demos
 | 
			
		||||
  <li><a href="#install">Installing the header and library files
 | 
			
		||||
  <li><a href="#pkg-config">Building OpenGL programs with pkg-config
 | 
			
		||||
  </ul>
 | 
			
		||||
<li><a href="#windows">Windows</a>
 | 
			
		||||
<li><a href="#scons">Building with SCons</a>
 | 
			
		||||
<li><a href="#scons">SCons</a>
 | 
			
		||||
<li><a href="#other">Other</a>
 | 
			
		||||
</ol>
 | 
			
		||||
<br>
 | 
			
		||||
@@ -31,39 +31,25 @@
 | 
			
		||||
<H2>1. Unix/X11 Compilation and Installation</H1>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<a name="prereq-general">
 | 
			
		||||
<h3>1.1 General prerequisites for building</h3>
 | 
			
		||||
 | 
			
		||||
<ul>
 | 
			
		||||
<li>lex / yacc - for building the GLSL compiler.
 | 
			
		||||
On Linux systems, flex and bison are used.
 | 
			
		||||
Versions 2.5.35 and 2.4.1, respectively, (or later) should work.
 | 
			
		||||
</li>
 | 
			
		||||
<li>python - Python is needed for building the Gallium components.
 | 
			
		||||
Version 2.6.4 or later should work.
 | 
			
		||||
</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<a name="prereq-dri">
 | 
			
		||||
<h3>1.2 Prerequisites for DRI and hardware acceleration</h3>
 | 
			
		||||
<a name="prereq">
 | 
			
		||||
<h3>1.1 Prerequisites for DRI and hardware acceleration</h3>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
The following are required for DRI-based hardware acceleration with Mesa:
 | 
			
		||||
The following are required for DRI-based hardware acceleration with Mesa 7.3:
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<ul>
 | 
			
		||||
<li><a href="http://xorg.freedesktop.org/releases/individual/proto/">dri2proto</a> version 1.99.3 or later
 | 
			
		||||
<li>Linux 2.6.28
 | 
			
		||||
<li><a href="http://dri.freedesktop.org/libdrm/" target="_parent">libDRM</a>
 | 
			
		||||
version 2.4.15 or later
 | 
			
		||||
version 2.4.3 or later
 | 
			
		||||
<li>Xorg server version 1.5 or later
 | 
			
		||||
</ul>
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<a name="autoconf">
 | 
			
		||||
<h3>1.3 Building with Autoconf</h3>
 | 
			
		||||
<h3>1.2 Building with Autoconf</h3>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Mesa may be <a href="autoconf.html">built using autoconf</a>.
 | 
			
		||||
@@ -73,7 +59,7 @@ If that fails the traditional Mesa build system is available.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<a name="traditional">
 | 
			
		||||
<h3>1.4 Building with traditional Makefiles</h3>
 | 
			
		||||
<h3>1.3 Building with traditional Makefiles</h3>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
The traditional Mesa build system is based on a collection of pre-defined
 | 
			
		||||
@@ -140,7 +126,7 @@ Later, if you want to rebuild for a different configuration run
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<a name="libs">
 | 
			
		||||
<h3>1.5 The libraries</h3>
 | 
			
		||||
<h3>1.4 The libraries</h3>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
When compilation has finished, look in the top-level <code>lib/</code>
 | 
			
		||||
@@ -199,11 +185,81 @@ If you built the DRI hardware drivers, you'll also see the DRI drivers:
 | 
			
		||||
-rwxr-xr-x   1 brian users 10997120 Jul 21 12:13 unichrome_dri.so
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<a name="demos">
 | 
			
		||||
<h3>1.5 Running the demos</h3>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
If you built with Gallium support, look in lib/gallium/ for Gallium-based
 | 
			
		||||
versions of libGL and device drivers.
 | 
			
		||||
If you downloaded/unpacked the MesaDemos-x.y.z.tar.gz archive or
 | 
			
		||||
obtained Mesa from CVS, the <b>progs/</b> directory will contain a
 | 
			
		||||
bunch of demonstration programs.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Before running a demo, you'll probably have to set two environment variables
 | 
			
		||||
to indicate where the libraries are located.  For example:
 | 
			
		||||
<p>
 | 
			
		||||
<blockquote>
 | 
			
		||||
<b>cd lib/</b>
 | 
			
		||||
<br>
 | 
			
		||||
<b>export LD_LIBRARY_PATH=${PWD}</b>
 | 
			
		||||
<br>
 | 
			
		||||
<b>export LIBGL_DRIVERS_PATH=${PWD}</b> (if using DRI drivers)
 | 
			
		||||
</blockquote>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Next, change to the Mesa/demos/ directory:
 | 
			
		||||
</p>
 | 
			
		||||
<blockquote>
 | 
			
		||||
<b>cd ../progs/demos</b>
 | 
			
		||||
</blockquote>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Run a demo such as gears:
 | 
			
		||||
</p>
 | 
			
		||||
<blockquote>
 | 
			
		||||
<b>./gears</b>
 | 
			
		||||
</blockquote>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
If this doesn't work, try the <b>Mesa/progs/xdemos/glxinfo</b> program
 | 
			
		||||
and see that it prints the expected Mesa version number.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
If you're using Linux or a similar OS, verify that the demo program is
 | 
			
		||||
being linked with the proper library files:
 | 
			
		||||
</p>
 | 
			
		||||
<blockquote>
 | 
			
		||||
<b>ldd gears</b>
 | 
			
		||||
</blockquote>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
You should see something like this:
 | 
			
		||||
</p>
 | 
			
		||||
<pre>
 | 
			
		||||
        libglut.so.3 => /home/brian/Mesa/lib/libglut.so.3 (0x40013000)
 | 
			
		||||
        libGLU.so.1 => /home/brian/Mesa/lib/libGLU.so.1 (0x40051000)
 | 
			
		||||
        libGL.so.1 => /home/brian/Mesa/lib/libGL.so.1 (0x400e0000)
 | 
			
		||||
        libc.so.6 => /lib/i686/libc.so.6 (0x42000000)
 | 
			
		||||
        libm.so.6 => /lib/i686/libm.so.6 (0x403da000)
 | 
			
		||||
        libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0x403fc000)
 | 
			
		||||
        libXmu.so.6 => /usr/X11R6/lib/libXmu.so.6 (0x404da000)
 | 
			
		||||
        libXt.so.6 => /usr/X11R6/lib/libXt.so.6 (0x404f1000)
 | 
			
		||||
        libXi.so.6 => /usr/X11R6/lib/libXi.so.6 (0x40543000)
 | 
			
		||||
        libstdc++.so.5 => /usr/lib/libstdc++.so.5 (0x4054b000)
 | 
			
		||||
        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x405fd000)
 | 
			
		||||
        libXext.so.6 => /usr/X11R6/lib/libXext.so.6 (0x40605000)
 | 
			
		||||
        libpthread.so.0 => /lib/i686/libpthread.so.0 (0x40613000)
 | 
			
		||||
        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
 | 
			
		||||
        libdl.so.2 => /lib/libdl.so.2 (0x40644000)
 | 
			
		||||
        libSM.so.6 => /usr/X11R6/lib/libSM.so.6 (0x40647000)
 | 
			
		||||
        libICE.so.6 => /usr/X11R6/lib/libICE.so.6 (0x40650000)
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Retrace your steps if this doesn't look right.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<a name="install">
 | 
			
		||||
@@ -274,6 +330,7 @@ For example, compiling and linking a GLUT application can be done with:
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Please see the <a href="#scons">instructions on building with SCons</a>.
 | 
			
		||||
Alternatively see <a href="README.WIN32">README.WIN32</a> file.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -294,17 +351,26 @@ example linux or windows, <i>machine</i> is x86 or x86_64, optionally followed
 | 
			
		||||
by -debug for debug builds.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
The sample programs are built seperately. To build them do
 | 
			
		||||
<pre>
 | 
			
		||||
    scons -C progs
 | 
			
		||||
</pre>
 | 
			
		||||
And the build output will be placed in progs/build/...
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
To build Mesa with SCons for Windows on Linux using the MinGW crosscompiler toolchain do
 | 
			
		||||
</p>
 | 
			
		||||
<pre>
 | 
			
		||||
    scons platform=windows toolchain=crossmingw machine=x86 statetrackers=mesa drivers=softpipe,trace winsys=gdi
 | 
			
		||||
    scons -C progs platform=windows toolchain=crossmingw machine=x86 -k
 | 
			
		||||
</pre>
 | 
			
		||||
<p>
 | 
			
		||||
This will create:
 | 
			
		||||
</p>
 | 
			
		||||
<ul>
 | 
			
		||||
<li>build/windows-x86-debug/gallium/targets/libgl-gdi/opengl32.dll — Mesa + Gallium + softpipe, binary compatible with Windows's opengl32.dll 
 | 
			
		||||
<li>build/windows-x86-debug/gallium/winsys/gdi/opengl32.dll — Mesa + Gallium + softpipe, binary compatible with Windows's opengl32.dll 
 | 
			
		||||
<li>build/windows-x86-debug/glut/glx/glut32.dll
 | 
			
		||||
<li>progs/build/windows-x86-debug/wgl/wglinfo.exe
 | 
			
		||||
<li>progs/build/windows-x86-debug/trivial/tri.exe
 | 
			
		||||
 
 | 
			
		||||
@@ -111,9 +111,11 @@ It implements the OpenGL 1.3 specification.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
November 2001: I cofounded Tungsten Graphics, Inc. with Keith Whitwell,
 | 
			
		||||
Jens Owen, David Dawes and Frank LaMonica.
 | 
			
		||||
Tungsten Graphics was acquired by VMware in December 2008.
 | 
			
		||||
November 2001: I cofound <a href="http://www.tungstengraphics.com" target="_parent">
 | 
			
		||||
Tungsten Graphics, Inc.</a> with Keith Whitwell, Jens Owen, David Dawes and
 | 
			
		||||
Frank LaMonica.
 | 
			
		||||
I continue to develop Mesa as part of my resposibilities with Tungsten
 | 
			
		||||
Graphics and as a spare-time project.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										197
									
								
								docs/libGL.txt
									
									
									
									
									
								
							
							
						
						
									
										197
									
								
								docs/libGL.txt
									
									
									
									
									
								
							@@ -1,197 +0,0 @@
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Introduction
 | 
			
		||||
------------
 | 
			
		||||
 | 
			
		||||
This document describes the implementation of the XFree86 4.0 libGL.so
 | 
			
		||||
library defined by the Linux/OpenGL Base specification found at
 | 
			
		||||
http://reality.sgi.com/opengl/linux/linuxbase.html.
 | 
			
		||||
 | 
			
		||||
The documentation is divided into two sections:
 | 
			
		||||
    User's Guide
 | 
			
		||||
    Driver Developer's Guide
 | 
			
		||||
 | 
			
		||||
Author:  Brian Paul     (brian@precisioninsight.com)
 | 
			
		||||
Date:    February 2000
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
User's Guide
 | 
			
		||||
------------
 | 
			
		||||
 | 
			
		||||
Using libGL.so
 | 
			
		||||
 | 
			
		||||
The libGL.so library defines the gl- and glX-prefixed functions needed to
 | 
			
		||||
run OpenGL programs.  OpenGL client applications should link with the
 | 
			
		||||
-lGL option to use it.
 | 
			
		||||
 | 
			
		||||
libGL.so serves two primary functions: GLX protocol generation for indirect
 | 
			
		||||
rendering and loading/management of hardware drivers for direct rendering.
 | 
			
		||||
 | 
			
		||||
When libGL.so initializes itself it uses the DRI to determine the
 | 
			
		||||
appropriate hardware driver for each screen on the local X display.
 | 
			
		||||
The hardware drivers are expected to be in the /usr/X11R6/lib/modules/dri/
 | 
			
		||||
directory.  Drivers are named with the convention <name>_dri.so where
 | 
			
		||||
<name> is a driver such as "tdfx", "i810", "gamma", etc.
 | 
			
		||||
 | 
			
		||||
The LIBGL_DRIVERS_DIR environment variable may be used to specify a
 | 
			
		||||
different DRI modules directory, overriding /usr/X11R6/lib/modules/dri/.
 | 
			
		||||
This environment variable is ignored in setuid programs for security
 | 
			
		||||
reasons.
 | 
			
		||||
 | 
			
		||||
When libGL.so is unable to locate appropriate hardware drivers it will
 | 
			
		||||
fall back to using indirect GLX rendering.
 | 
			
		||||
 | 
			
		||||
To aid in solving problems, libGL.so will print diagnostic messages to
 | 
			
		||||
stderr if the LIBGL_DEBUG environment variable is defined.
 | 
			
		||||
 | 
			
		||||
libGL.so is thread safe.  The overhead of thread safety for common,
 | 
			
		||||
single-thread clients is negligible.  However, the overhead of thread
 | 
			
		||||
safety for multi-threaded clients is significant.  Each GL API call
 | 
			
		||||
requires two calls to pthread_get_specific() which can noticably
 | 
			
		||||
impact performance.  Warning:  libGL.so is thread safe but individual
 | 
			
		||||
DRI drivers may not be.  Please consult the documentation for a driver
 | 
			
		||||
to learn if it is thread safe.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Indirect Rendering
 | 
			
		||||
 | 
			
		||||
You can force indirect rendering mode by setting the LIBGL_ALWAYS_INDIRECT
 | 
			
		||||
environment variable.  Hardware acceleration will not be used.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
libGL.so Extensibility
 | 
			
		||||
 | 
			
		||||
libGL.so is designed to be extended without upgrading.  That is,
 | 
			
		||||
drivers may install new OpenGL extension functions into libGL.so
 | 
			
		||||
without requiring libGL.so to be replaced.  Clients of libGL.so should
 | 
			
		||||
use the glXGetProcAddressEXT() function to obtain the address of
 | 
			
		||||
functions by name.  For more details of GLX_ARB_get_proc_address see
 | 
			
		||||
http://oss.sgi.com/projects/ogl-sample/registry/ARB/get_proc_address.spec
 | 
			
		||||
 | 
			
		||||
libGL.so is also designed with flexibility such that it may be used
 | 
			
		||||
with many generations of hardware drivers to come.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Driver Developer's Guide
 | 
			
		||||
------------------------
 | 
			
		||||
 | 
			
		||||
This section describes the requirements to make an XFree86 4.0
 | 
			
		||||
libGL.so-compatible hardware driver.  It is not intended for end
 | 
			
		||||
users of libGL.so.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
XFree86 source files
 | 
			
		||||
 | 
			
		||||
libGL.so is built inside XFree86 with sources found in xc/lib/GL/.
 | 
			
		||||
Specifically, libGL.so is built from:
 | 
			
		||||
 | 
			
		||||
	xc/lib/GL/glx/*.c
 | 
			
		||||
	xc/lib/dri/XF86dri.c
 | 
			
		||||
	xc/lib/dri/dri_glx.c
 | 
			
		||||
	xc/lib/GL/mesa/src/glapi.c
 | 
			
		||||
	xc/lib/GL/mesa/src/glapitemp.h
 | 
			
		||||
	xc/lib/GL/mesa/src/glapitable.h
 | 
			
		||||
	xc/lib/GL/mesa/src/glapioffsets.h
 | 
			
		||||
	xc/lib/GL/mesa/src/glapinoop.c
 | 
			
		||||
	xc/lib/GL/mesa/src/glheader.h
 | 
			
		||||
	xc/lib/GL/mesa/src/glthread.c
 | 
			
		||||
	xc/lib/GL/mesa/src/glthread.h
 | 
			
		||||
	xc/lib/GL/mesa/src/X86/glapi_x86.S
 | 
			
		||||
	xc/lib/GL/mesa/src/X86/assyntax.h
 | 
			
		||||
 | 
			
		||||
Understand that the mesa/src/gl*.[ch] files are not tied to Mesa.  They
 | 
			
		||||
have no dependencies on the rest of Mesa and are designed to be reusable
 | 
			
		||||
in a number of projects.
 | 
			
		||||
 | 
			
		||||
The glapi_x86.X and assyntax.h files implement x86-optimized dispatch
 | 
			
		||||
of GL functions.  They are not required; C-based dispatch can be used
 | 
			
		||||
instead, with a slight performance penalty.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Driver loading and binding
 | 
			
		||||
 | 
			
		||||
When libGL.so initializes itself (via the __glXInitialize function) a
 | 
			
		||||
call is made to driCreateDisplay().  This function uses DRI facilities
 | 
			
		||||
to determine the driver file appropriate for each screen on the local
 | 
			
		||||
display.  Each screen's driver is then opened with dlopen() and asked
 | 
			
		||||
for its __driCreateScreen() function.  The pointers to the __driCreateScreen()
 | 
			
		||||
functions are kept in an array, indexed by screen number, in the
 | 
			
		||||
__DRIdisplayRec struct.
 | 
			
		||||
 | 
			
		||||
When a driver's __driCreateScreen() function is called, it must initialize
 | 
			
		||||
a __DRIscreenRec struct.  This struct acts as the root of a tree of
 | 
			
		||||
function pointers which are called to create and destroy contexts and
 | 
			
		||||
drawables and perform all the operations needed by the GLX interface.
 | 
			
		||||
See the xc/lib/GL/glx/glxclient.h file for details.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Dynamic Extension Function Registration
 | 
			
		||||
 | 
			
		||||
In order to provide forward compatibility with future drivers, libGL.so
 | 
			
		||||
allows drivers to register new OpenGL extension functions which weren't
 | 
			
		||||
known when libGL.so was built.
 | 
			
		||||
 | 
			
		||||
The register_extensions() function in xc/lib/GL/dri/dri_glx.c is called
 | 
			
		||||
as soon as libGL.so is loaded.  This is done with gcc's constructor
 | 
			
		||||
attribute.  This mechanism will likely have to be changed for other compilers.
 | 
			
		||||
 | 
			
		||||
register_extensions() loops over all local displays and screens, determines
 | 
			
		||||
the DRI driver for each, and calls the driver's __driRegisterExtensions()
 | 
			
		||||
function, if present.
 | 
			
		||||
 | 
			
		||||
The __driRegisterExtensions() function can add new entrypoints to libGL
 | 
			
		||||
by calling:
 | 
			
		||||
 | 
			
		||||
    GLboolean _glapi_add_entrypoint(const char *funcName, GLuint offset)
 | 
			
		||||
 | 
			
		||||
The parameters are the name of the function (such as "glFoobarEXT") and the
 | 
			
		||||
offset of the dispatch slot in the API dispatch table.  The return value
 | 
			
		||||
indicates success (GL_TRUE) or failure (GL_FALSE).
 | 
			
		||||
 | 
			
		||||
_glapi_add_entrypoint() will synthesize entrypoint code in assembly
 | 
			
		||||
language.  Assembly languages is required since parameter passing
 | 
			
		||||
can't be handled correctly using a C-based solution.
 | 
			
		||||
 | 
			
		||||
The address of the new entrypoint is obtained by calling the
 | 
			
		||||
glXGetProcAddressARB() function.
 | 
			
		||||
 | 
			
		||||
The dispatch offset number MUST be a number allocated by SGI in the same
 | 
			
		||||
manner in which new GL_* constants are allocated.  Using an arbitrary
 | 
			
		||||
offset number will result in many problems.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Dispatch Management
 | 
			
		||||
 | 
			
		||||
When a GL context is made current, the driver must install its dispatch
 | 
			
		||||
table as the current dispatch table.  This is done by calling
 | 
			
		||||
 | 
			
		||||
	void _glapi_set_dispatch(struct _glapi_table *dispatch);
 | 
			
		||||
 | 
			
		||||
This will install the named dispatch table for the calling thread.
 | 
			
		||||
The current dispatch table for a thread can be obtained by calling
 | 
			
		||||
 | 
			
		||||
	struct _glapi_table *_glapi_get_dispatch(void);
 | 
			
		||||
 | 
			
		||||
For higher performance in the common single-thread case, the global
 | 
			
		||||
variable _glapi_Dispatch will point to the current dispatch table.
 | 
			
		||||
This variable will be NULL when in multi-thread mode.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Context Management
 | 
			
		||||
 | 
			
		||||
libGL.so uses the XFree86 xthreads package to manage a thread-specific
 | 
			
		||||
current context pointer.  See __glXGet/SetCurrentContext() in glext.c
 | 
			
		||||
 | 
			
		||||
Drivers may use the _glapi_set/get_context() functions to maintain
 | 
			
		||||
a private thread-specific context pointer.
 | 
			
		||||
 | 
			
		||||
@@ -13,50 +13,36 @@
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<ul>
 | 
			
		||||
<li><a href="http://lists.freedesktop.org/mailman/listinfo/mesa-users"
 | 
			
		||||
target="_parent">mesa-users</a> - intended for end-users of Mesa and DRI
 | 
			
		||||
drivers.  Newbie questions are OK, but please try the general OpenGL
 | 
			
		||||
<li><a href="https://lists.sourceforge.net/lists/listinfo/mesa3d-announce"
 | 
			
		||||
target="_parent">mesa3d-announce</a> - announcements of new Mesa
 | 
			
		||||
versions are sent to this list.
 | 
			
		||||
</li>
 | 
			
		||||
<br>
 | 
			
		||||
<li><a href="https://lists.sourceforge.net/lists/listinfo/mesa3d-users"
 | 
			
		||||
target="_parent">mesa3d-users</a> - intended for users of the Mesa and DRI.
 | 
			
		||||
Newbie questions are appropriate, but please try the general OpenGL
 | 
			
		||||
resources and Mesa/DRI documentation first.
 | 
			
		||||
</li>
 | 
			
		||||
<br>
 | 
			
		||||
<li><a href="http://lists.freedesktop.org/mailman/listinfo/mesa-dev"
 | 
			
		||||
target="_parent">mesa-dev</a> - for Mesa, Gallium and DRI development
 | 
			
		||||
discussion.  Not for beginners.
 | 
			
		||||
<li><a href="https://lists.sourceforge.net/lists/listinfo/mesa3d-dev"
 | 
			
		||||
target="_parent">mesa3d-dev</a> - for discussion of Mesa and Direct Rendering 
 | 
			
		||||
Infrastructure development. Not for beginners.
 | 
			
		||||
</li>
 | 
			
		||||
<br>
 | 
			
		||||
<li><a href="http://lists.freedesktop.org/mailman/listinfo/mesa-commit"
 | 
			
		||||
target="_parent">mesa-commit</a> - relays git check-in messages
 | 
			
		||||
(for developers).
 | 
			
		||||
In general, people should not post to this list.
 | 
			
		||||
</li>
 | 
			
		||||
<br>
 | 
			
		||||
<li><a href="http://lists.freedesktop.org/mailman/listinfo/mesa-announce"
 | 
			
		||||
target="_parent">mesa-announce</a> - announcements of new Mesa
 | 
			
		||||
versions are sent to this list.  Very low traffic.
 | 
			
		||||
Note: the old mesa3d-cvs list is no longer in use.
 | 
			
		||||
</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Follow the links above for list archives.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
The old Mesa lists hosted at SourceForge are no longer in use.
 | 
			
		||||
The archives are still available, however:
 | 
			
		||||
<a href="http://sourceforge.net/mailarchive/forum.php?forum_name=mesa3d-announce" target="_parent">mesa3d-announce</a>,
 | 
			
		||||
<a href="http://sourceforge.net/mailarchive/forum.php?forum_name=mesa3d-users" target="_parent">mesa3d-users</a>,
 | 
			
		||||
<a href="http://sourceforge.net/mailarchive/forum.php?forum_name=mesa3d-dev" target="_parent">mesa3d-dev</a>.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<p>For mailing lists about Direct Rendering Modules (drm) in Linux/BSD 
 | 
			
		||||
kernels, see the
 | 
			
		||||
<a href="http://dri.freedesktop.org/wiki/MailingLists" target="_parent">
 | 
			
		||||
DRI wiki</a>.
 | 
			
		||||
</p>
 | 
			
		||||
kernels, see <a href="http://dri.freedesktop.org/wiki/MailingLists">wiki</a>.
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
<b>Notice</b>: You must subscribe to these lists in order to post to them.
 | 
			
		||||
<b>Notice</b>: non-member posts to any of these lists will be automatically
 | 
			
		||||
rejected.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,204 +0,0 @@
 | 
			
		||||
<HTML>
 | 
			
		||||
 | 
			
		||||
<TITLE>llvmpipe</TITLE>
 | 
			
		||||
 | 
			
		||||
<link rel="stylesheet" type="text/css" href="mesa.css"></head>
 | 
			
		||||
 | 
			
		||||
<BODY>
 | 
			
		||||
 | 
			
		||||
<H1>Introduction</H1>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
The Gallium llvmpipe driver is a software rasterizer that uses LLVM to
 | 
			
		||||
do runtime code generation.
 | 
			
		||||
Shaders, point/line/triangle rasterization and vertex processing are
 | 
			
		||||
implemented with LLVM IR which is translated to x86 or x86-64 machine
 | 
			
		||||
code.
 | 
			
		||||
Also, the driver is multithreaded to take advantage of multiple CPU cores
 | 
			
		||||
(up to 8 at this time).
 | 
			
		||||
It's the fastest software rasterizer for Mesa.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h1>Requirements</h1>
 | 
			
		||||
 | 
			
		||||
<dl>
 | 
			
		||||
<dt>An x86 or amd64 processor.  64-bit mode is preferred.</dt>
 | 
			
		||||
<dd>
 | 
			
		||||
   <p>
 | 
			
		||||
   Support for sse2 is strongly encouraged.  Support for ssse3, and sse4.1 will
 | 
			
		||||
   yield the most efficient code.  The less features the CPU has the more
 | 
			
		||||
   likely is that you ran into underperforming, buggy, or incomplete code.  
 | 
			
		||||
   </p>
 | 
			
		||||
   <p>
 | 
			
		||||
   See /proc/cpuinfo to know what your CPU supports.
 | 
			
		||||
   </p>
 | 
			
		||||
</dd>
 | 
			
		||||
<dt>LLVM. Version 2.8 recommended. 2.6 or later required.</dt>
 | 
			
		||||
<dd>
 | 
			
		||||
   <p>
 | 
			
		||||
   <b>NOTE</b>: LLVM 2.8 and earlier will not work on systems that support the
 | 
			
		||||
   Intel AVX extensions (e.g. Sandybridge).  LLVM's code generator will
 | 
			
		||||
   fail when trying to emit AVX instructions.  This was fixed in LLVM 2.9.
 | 
			
		||||
   </p>
 | 
			
		||||
   <p>
 | 
			
		||||
   For Linux, on a recent Debian based distribution do:
 | 
			
		||||
   </p>
 | 
			
		||||
<pre>
 | 
			
		||||
     aptitude install llvm-dev
 | 
			
		||||
</pre>
 | 
			
		||||
   For a RPM-based distribution do:
 | 
			
		||||
   </p>
 | 
			
		||||
<pre>
 | 
			
		||||
     yum install llvm-devel
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
   <p>
 | 
			
		||||
   For Windows download pre-built MSVC 9.0 or MinGW binaries from
 | 
			
		||||
   http://people.freedesktop.org/~jrfonseca/llvm/ and set the LLVM environment
 | 
			
		||||
   variable to the extracted path.
 | 
			
		||||
   </p>
 | 
			
		||||
 | 
			
		||||
   <p>
 | 
			
		||||
   For MSVC there are two set of binaries: llvm-x.x-msvc32mt.7z and
 | 
			
		||||
   llvm-x.x-msvc32mtd.7z .
 | 
			
		||||
   </p>
 | 
			
		||||
 | 
			
		||||
   <p>
 | 
			
		||||
   You have to set the LLVM=/path/to/llvm-x.x-msvc32mtd env var when passing
 | 
			
		||||
   debug=yes to scons, and LLVM=/path/to/llvm-x.x-msvc32mt when building with
 | 
			
		||||
   debug=no. This is necessary as LLVM builds as static library so the chosen
 | 
			
		||||
   MS CRT must match.
 | 
			
		||||
   </p>
 | 
			
		||||
</dd>
 | 
			
		||||
 | 
			
		||||
<dt>scons (optional)</dt>
 | 
			
		||||
</dl>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h1>Building</h1>
 | 
			
		||||
 | 
			
		||||
To build everything on Linux invoke scons as:
 | 
			
		||||
 | 
			
		||||
<pre>
 | 
			
		||||
  scons build=debug libgl-xlib
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
Alternatively, you can build it with GNU make, if you prefer, by invoking it as
 | 
			
		||||
 | 
			
		||||
<pre>
 | 
			
		||||
  make linux-llvm
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
but the rest of these instructions assume that scons is used.
 | 
			
		||||
 | 
			
		||||
For windows is everything the except except the winsys:
 | 
			
		||||
 | 
			
		||||
<pre>
 | 
			
		||||
  scons build=debug libgl-gdi
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h1>Using</h1>
 | 
			
		||||
 | 
			
		||||
On Linux, building will create a drop-in alternative for libGL.so into
 | 
			
		||||
 | 
			
		||||
<pre>
 | 
			
		||||
  build/foo/gallium/targets/libgl-xlib/libGL.so
 | 
			
		||||
</pre>
 | 
			
		||||
or
 | 
			
		||||
<pre>
 | 
			
		||||
  lib/gallium/libGL.so
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
To use it set the LD_LIBRARY_PATH environment variable accordingly.
 | 
			
		||||
 | 
			
		||||
For performance evaluation pass debug=no to scons, and use the corresponding
 | 
			
		||||
lib directory without the "-debug" suffix.
 | 
			
		||||
 | 
			
		||||
On Windows, building will create a drop-in alternative for opengl32.dll. To use
 | 
			
		||||
it put it in the same directory as the application. It can also be used by
 | 
			
		||||
replacing the native ICD driver, but it's quite an advanced usage, so if you
 | 
			
		||||
need to ask, don't even try it.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h1>Profiling</h1>
 | 
			
		||||
 | 
			
		||||
To profile llvmpipe you should pass the options
 | 
			
		||||
 | 
			
		||||
<pre>
 | 
			
		||||
  scons build=profile <same-as-before>
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
This will ensure that frame pointers are used both in C and JIT functions, and
 | 
			
		||||
that no tail call optimizations are done by gcc.
 | 
			
		||||
 | 
			
		||||
To better profile JIT code you'll need to build LLVM with oprofile integration.
 | 
			
		||||
 | 
			
		||||
<pre>
 | 
			
		||||
  ./configure \
 | 
			
		||||
      --prefix=$install_dir \
 | 
			
		||||
      --enable-optimized \
 | 
			
		||||
      --disable-profiling \
 | 
			
		||||
      --enable-targets=host-only \
 | 
			
		||||
      --with-oprofile
 | 
			
		||||
 | 
			
		||||
  make -C "$build_dir"
 | 
			
		||||
  make -C "$build_dir" install
 | 
			
		||||
 | 
			
		||||
  find "$install_dir/lib" -iname '*.a' -print0 | xargs -0 strip --strip-debug
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
The you should define
 | 
			
		||||
 | 
			
		||||
<pre>
 | 
			
		||||
  export LLVM=/path/to/llvm-2.6-profile
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
and rebuild.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h1>Unit testing</h1>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Building will also create several unit tests in
 | 
			
		||||
build/linux-???-debug/gallium/drivers/llvmpipe:
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
</ul>
 | 
			
		||||
<li> lp_test_blend: blending
 | 
			
		||||
<li> lp_test_conv: SIMD vector conversion
 | 
			
		||||
<li> lp_test_format: pixel unpacking/packing
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Some of this tests can output results and benchmarks to a tab-separated-file
 | 
			
		||||
for posterior analysis, e.g.:
 | 
			
		||||
</p>
 | 
			
		||||
<pre>
 | 
			
		||||
  build/linux-x86_64-debug/gallium/drivers/llvmpipe/lp_test_blend -o blend.tsv
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h1>Development Notes</h1>
 | 
			
		||||
 | 
			
		||||
<ul>
 | 
			
		||||
<li>
 | 
			
		||||
  When looking to this code by the first time start in lp_state_fs.c, and 
 | 
			
		||||
  then skim through the lp_bld_* functions called in there, and the comments
 | 
			
		||||
  at the top of the lp_bld_*.c functions.  
 | 
			
		||||
</li>
 | 
			
		||||
<li>
 | 
			
		||||
  The driver-independent parts of the LLVM / Gallium code are found in
 | 
			
		||||
  src/gallium/auxiliary/gallivm/.  The filenames and function prefixes
 | 
			
		||||
  need to be renamed from "lp_bld_" to something else though.
 | 
			
		||||
</li>
 | 
			
		||||
<li>
 | 
			
		||||
  We use LLVM-C bindings for now. They are not documented, but follow the C++
 | 
			
		||||
  interfaces very closely, and appear to be complete enough for code
 | 
			
		||||
  generation. See 
 | 
			
		||||
  http://npcontemplation.blogspot.com/2008/06/secret-of-llvm-c-bindings.html
 | 
			
		||||
  for a stand-alone example.  See the llvm-c/Core.h file for reference.
 | 
			
		||||
</li>
 | 
			
		||||
</ul>
 | 
			
		||||
@@ -10,83 +10,11 @@
 | 
			
		||||
 | 
			
		||||
<H1>News</H1>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>June 13, 2011</h2>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
<a href="relnotes-7.10.3.html">Mesa 7.10.3</a> is released.  This is a bug
 | 
			
		||||
fix release.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<h2>April 6, 2011</h2>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
<a href="relnotes-7.10.2.html">Mesa 7.10.2</a> is released.  This is a bug
 | 
			
		||||
fix release.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<h2>March 2, 2011</h2>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
<a href="relnotes-7.9.2.html">Mesa 7.9.2</a> and
 | 
			
		||||
<a href="relnotes-7.10.1.html">Mesa 7.10.1</a> are released.  These are
 | 
			
		||||
stable releases containing bug fixes since the 7.9.1 and 7.10 releases.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>October 4, 2010</h2>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
<a href="relnotes-7.9.html">Mesa 7.9</a> (final) is released.  This is a new
 | 
			
		||||
development release.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>September 27, 2010</h2>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
<a href="relnotes-7.9.html">Mesa 7.9.0-rc1</a> is released.  This is a
 | 
			
		||||
release candidate for the 7.9 development release.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>June 16, 2010</h2>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
<a href="relnotes-7.8.2.html">Mesa 7.8.2</a> is released.  This is a bug-fix
 | 
			
		||||
release collecting fixes since the 7.8.1 release.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>April 5, 2010</h2>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
<a href="relnotes-7.8.1.html">Mesa 7.8.1</a> is released.  This is a bug-fix
 | 
			
		||||
release for a few critical issues in the 7.8 release.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>March 28, 2010</h2>
 | 
			
		||||
<p>
 | 
			
		||||
<a href="relnotes-7.7.1.html">Mesa 7.7.1</a> is released.  This is a bug-fix
 | 
			
		||||
release fixing issues found in the 7.7 release.
 | 
			
		||||
</p>
 | 
			
		||||
<p>
 | 
			
		||||
Also, <a href="relnotes-7.8.html">Mesa 7.8</a> is released.  This is a new
 | 
			
		||||
development release.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>December 21, 2009</h2>
 | 
			
		||||
<h2>November XX, 2009</h2>
 | 
			
		||||
<p>
 | 
			
		||||
<a href="relnotes-7.6.1.html">Mesa 7.6.1</a> is released.  This is a bug-fix
 | 
			
		||||
release fixing issues found in the 7.6 release.
 | 
			
		||||
</p>
 | 
			
		||||
<p>
 | 
			
		||||
Also, <a href="relnotes-7.7.html">Mesa 7.7</a> is released.  This is a new
 | 
			
		||||
development release.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>September 28, 2009</h2>
 | 
			
		||||
@@ -204,6 +132,9 @@ Added a new page describing the <a href="cell.html">Mesa Cell driver</a>.
 | 
			
		||||
<p>
 | 
			
		||||
Gallium3D is the codename for the new Mesa device driver architecture
 | 
			
		||||
which is currently under development.
 | 
			
		||||
A <a href="http://wiki.freedesktop.org/wiki/Software/gallium"
 | 
			
		||||
target="_parent"> summary</a> of the architecture can be found on the
 | 
			
		||||
Tungsten Graphics website.
 | 
			
		||||
</p>
 | 
			
		||||
<p>
 | 
			
		||||
Gallium3D development is taking place on the <em>gallium-0.1</em> branch
 | 
			
		||||
@@ -254,8 +185,11 @@ shading language and built-in functions.
 | 
			
		||||
 | 
			
		||||
<h2>April 2007</h2>
 | 
			
		||||
<p>
 | 
			
		||||
Thomas Hellström of Tungsten Graphics has written a whitepaper
 | 
			
		||||
describing the new DRI memory management system</a>.
 | 
			
		||||
Thomas Hellström of
 | 
			
		||||
<a href="http://www.tungstengraphics.com" target="_parent">
 | 
			
		||||
Tungsten Graphics</a> has written a whitepaper describing the new
 | 
			
		||||
<a href="http://www.tungstengraphics.com/mm.pdf">DRI memory management
 | 
			
		||||
system</a>.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<h2>December 5, 2006</h2>
 | 
			
		||||
@@ -1316,6 +1250,7 @@ grateful.
 | 
			
		||||
<p>
 | 
			
		||||
</p><h2>March 18, 1999</h2>
 | 
			
		||||
<p>The new webpages are now online. Enjoy, and let me know if you find any errors.
 | 
			
		||||
For an eye-candy free version you can use <a href="http://www.mesa3d.org/txt/">http://www.mesa3d.org/txt/</a>.</p>
 | 
			
		||||
<p>
 | 
			
		||||
</p><h2>February 16, 1999</h2>
 | 
			
		||||
<p><a href="http://www.sgi.com/">SGI</a> releases its <a href="http://www.sgi.com/software/opensource/glx/">GLX
 | 
			
		||||
 
 | 
			
		||||
@@ -1,61 +0,0 @@
 | 
			
		||||
<html>
 | 
			
		||||
 | 
			
		||||
<title>OpenGL ES</title>
 | 
			
		||||
 | 
			
		||||
<head><link rel="stylesheet" type="text/css" href="mesa.css"></head>
 | 
			
		||||
 | 
			
		||||
<body>
 | 
			
		||||
 | 
			
		||||
<h1>OpenGL ES</h1>
 | 
			
		||||
 | 
			
		||||
<p>Mesa implements OpenGL ES 1.1 and OpenGL ES 2.0.  More informations about
 | 
			
		||||
OpenGL ES can be found at <a href="http://www.khronos.org/opengles/"
 | 
			
		||||
target="_parent"> http://www.khronos.org/opengles/</a>.</p>
 | 
			
		||||
 | 
			
		||||
<p>OpenGL ES depends on a working EGL implementation.  Please refer to
 | 
			
		||||
<a href="egl.html">Mesa EGL</a> for more information about EGL.</p>
 | 
			
		||||
 | 
			
		||||
<h2>Build the Libraries</h2>
 | 
			
		||||
<ol>
 | 
			
		||||
<li>Run <code>configure</code> with <code>--enable-gles1 --enable-gles2</code> and enable the Gallium driver for your hardware.</li>
 | 
			
		||||
<li>Build and install Mesa as usual.</li>
 | 
			
		||||
</ol>
 | 
			
		||||
 | 
			
		||||
Alternatively, if XCB-DRI2 is installed on the system, one can use
 | 
			
		||||
<code>egl_dri2</code> EGL driver with OpenGL|ES-enabled DRI drivers
 | 
			
		||||
 | 
			
		||||
<ol>
 | 
			
		||||
<li>Run <code>configure</code> with <code>--enable-gles1 --enable-gles2</code>.</li>
 | 
			
		||||
<li>Build and install Mesa as usual.</li>
 | 
			
		||||
</ol>
 | 
			
		||||
 | 
			
		||||
<p>Both methods will install libGLESv1_CM, libGLESv2, libEGL, and one or more
 | 
			
		||||
EGL drivers for your hardware.</p>
 | 
			
		||||
 | 
			
		||||
<h2>Run the Demos</h2>
 | 
			
		||||
 | 
			
		||||
<p>There are some demos in <code>mesa/demos</code> repository.</p>
 | 
			
		||||
 | 
			
		||||
<h2>Developers</h2>
 | 
			
		||||
 | 
			
		||||
<h3>Dispatch Table</h3>
 | 
			
		||||
 | 
			
		||||
<p>OpenGL ES has an additional indirection when dispatching fucntions</p>
 | 
			
		||||
 | 
			
		||||
<pre>
 | 
			
		||||
  Mesa:       glFoo() --> _mesa_Foo()
 | 
			
		||||
  OpenGL ES:  glFoo() --> _es_Foo() --> _mesa_Foo()
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
<p>The indirection serves several purposes</p>
 | 
			
		||||
 | 
			
		||||
<ul>
 | 
			
		||||
<li>When a function is in Mesa and the type matches, it checks the arguments and calls the Mesa function.</li>
 | 
			
		||||
<li>When a function is in Mesa but the type mismatches, it checks and converts the arguments before calling the Mesa function.</li>
 | 
			
		||||
<li>When a function is not available in Mesa, or accepts arguments that are not available in OpenGL, it provides its own implementation.</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>Other than the last case, OpenGL ES uses <code>APIspec.xml</code> to generate functions to check and/or converts the arguments.</p>
 | 
			
		||||
 | 
			
		||||
</body>
 | 
			
		||||
</html>
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
<HTML>
 | 
			
		||||
 | 
			
		||||
<TITLE>OpenVG State Tracker</TITLE>
 | 
			
		||||
<TITLE>Mesa Release Notes</TITLE>
 | 
			
		||||
 | 
			
		||||
<head><link rel="stylesheet" type="text/css" href="mesa.css"></head>
 | 
			
		||||
 | 
			
		||||
@@ -11,7 +11,7 @@
 | 
			
		||||
<H1>OpenVG State Tracker</H1>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
The current version of the OpenVG state tracker implements OpenVG 1.1.
 | 
			
		||||
The current version of the OpenVG state tracker implements OpenVG 1.0.
 | 
			
		||||
</p>
 | 
			
		||||
<p>
 | 
			
		||||
More informations about OpenVG can be found at
 | 
			
		||||
@@ -20,33 +20,49 @@ http://www.khronos.org/openvg/</a> .
 | 
			
		||||
</p>
 | 
			
		||||
<p>
 | 
			
		||||
The OpenVG state tracker depends on the Gallium architecture and a working EGL implementation.
 | 
			
		||||
Please refer to <a href="egl.html">Mesa EGL</a> for more information about EGL.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>Building the library</h2>
 | 
			
		||||
<ol>
 | 
			
		||||
<li>Run <code>configure</code> with <code>--enable-openvg</code> and
 | 
			
		||||
<code>--enable-gallium-egl</code>.  If you do not need OpenGL, you can add
 | 
			
		||||
<code>--disable-opengl</code> to save the compilation time.</li>
 | 
			
		||||
 | 
			
		||||
<li>Build and install Mesa as usual.</li>
 | 
			
		||||
<li>Build Mesa3D with Gallium3D. Any build that builds Gallium3D libraries and EGL will suffice</li>
 | 
			
		||||
<li>cd src/gallium/state_trackers/vega; make</li>
 | 
			
		||||
<li>The last step will build libOpenVG library. You can add the libdir to LD_LIBRARY_PATH or install libOpenVG</li>
 | 
			
		||||
</ol>
 | 
			
		||||
 | 
			
		||||
<h3>Sample build</h3>
 | 
			
		||||
A sample build looks as follows:
 | 
			
		||||
<pre>
 | 
			
		||||
  $ ./configure --disable-opengl --enable-openvg --enable-gallium-egl
 | 
			
		||||
  $ make
 | 
			
		||||
  $ make install
 | 
			
		||||
  make linux-x86-64-debug
 | 
			
		||||
  cd src/gallium/state_trackers/vega
 | 
			
		||||
  make
 | 
			
		||||
  cd ../../../..
 | 
			
		||||
  export LD_LIBRARY_PATH=$PWD/lib64
 | 
			
		||||
  export EGL_DRIVER="egl_softpipe"
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
<p>It will install <code>libOpenVG.so</code>, <code>libEGL.so</code>, and one
 | 
			
		||||
or more EGL drivers.</p>
 | 
			
		||||
 | 
			
		||||
<h2>OpenVG Demos</h2>
 | 
			
		||||
 | 
			
		||||
<p>OpenVG demos can be found in mesa/demos repository.</p>
 | 
			
		||||
<p>
 | 
			
		||||
To build the OpenVG demos:
 | 
			
		||||
</p>
 | 
			
		||||
<pre>
 | 
			
		||||
  cd progs/openvg
 | 
			
		||||
  make
 | 
			
		||||
</pre>
 | 
			
		||||
<p>
 | 
			
		||||
To run a demo:
 | 
			
		||||
</p>
 | 
			
		||||
<pre>
 | 
			
		||||
  cd openvg/demos
 | 
			
		||||
  ./lion
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>Notes</h2>
 | 
			
		||||
<ul>
 | 
			
		||||
<li>EGL_DRIVER environmental variable: forces usage of a specific EGL driver. Unless you force egl_softpipe the implementation will look for a DRI hardware accelerate driver and unless you have a Gallium driver that supports it, you'll see crashes</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
</body>
 | 
			
		||||
</html>
 | 
			
		||||
 
 | 
			
		||||
@@ -26,7 +26,7 @@ more information about the API functions.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
There are several examples of OSMesa in the <code>progs/osdemos/</code>
 | 
			
		||||
There are several examples of OSMesa in the <code>progs/osdemo/</code>
 | 
			
		||||
directory.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,31 +0,0 @@
 | 
			
		||||
ARB_texture_float:
 | 
			
		||||
 | 
			
		||||
    Silicon Graphics, Inc. owns US Patent #6,650,327, issued November 18,
 | 
			
		||||
    2003 [1].
 | 
			
		||||
 | 
			
		||||
    SGI believes this patent contains necessary IP for graphics systems
 | 
			
		||||
    implementing floating point rasterization and floating point
 | 
			
		||||
    framebuffer capabilities described in ARB_texture_float extension, and
 | 
			
		||||
    will discuss licensing on RAND terms, on an individual basis with
 | 
			
		||||
    companies wishing to use this IP in the context of conformant OpenGL
 | 
			
		||||
    implementations [2].
 | 
			
		||||
 | 
			
		||||
    The source code to implement ARB_texture_float extension is included
 | 
			
		||||
    and can be toggled on at compile time, for those who purchased a
 | 
			
		||||
    license from SGI, or are in a country where the patent does not apply,
 | 
			
		||||
    etc.
 | 
			
		||||
 | 
			
		||||
    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.
 | 
			
		||||
 | 
			
		||||
    You should contact a lawyer or SGI's legal department if you want to
 | 
			
		||||
    enable this extension.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
[1] http://www.google.com/patents/about?id=mIIOAAAAEBAJ&dq=6650327
 | 
			
		||||
[2] http://www.opengl.org/registry/specs/ARB/texture_float.txt
 | 
			
		||||
							
								
								
									
										54
									
								
								docs/pbuffers.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								docs/pbuffers.html
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,54 @@
 | 
			
		||||
<HTML>
 | 
			
		||||
 | 
			
		||||
<TITLE>PBuffer Rendering</TITLE>
 | 
			
		||||
 | 
			
		||||
<link rel="stylesheet" type="text/css" href="mesa.css"></head>
 | 
			
		||||
 | 
			
		||||
<BODY>
 | 
			
		||||
 | 
			
		||||
<H1>PBuffer Rendering</H1>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Basically, FBconfigs and PBuffers allow you to do off-screen rendering
 | 
			
		||||
with OpenGL.  The OSMesa interface does basically the same thing, but
 | 
			
		||||
fbconfigs and pbuffers are supported by more vendors.
 | 
			
		||||
PBuffer rendering may also be hardware accelerated.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
PBuffers are getting more use nowadays, though they've actually been
 | 
			
		||||
around for a long time on IRIX systems and other workstations.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
The
 | 
			
		||||
<a href="http://oss.sgi.com/projects/ogl-sample/registry/SGIX/fbconfig.txt"
 | 
			
		||||
target="_parent">GL_SGIX_fbconfig</a>
 | 
			
		||||
and
 | 
			
		||||
<a href="http://oss.sgi.com/projects/ogl-sample/registry/SGIX/pbuffer.txt"
 | 
			
		||||
target="_parent">
 | 
			
		||||
GL_SGIX_pbuffer</a> extensions describe the functionality.
 | 
			
		||||
More recently, these extensions have been promoted to ARB extensions (on
 | 
			
		||||
Windows at least).
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
The Mesa/progs/xdemos/ directory has some useful code for working
 | 
			
		||||
with pbuffers:
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<ul>
 | 
			
		||||
<li><b>pbinfo.c</b> - like glxinfo, it prints a list of available
 | 
			
		||||
    fbconfigs and whether each supports pbuffers.
 | 
			
		||||
<li><b>pbutil.c</b> - a few utility functions for dealing with
 | 
			
		||||
    fbconfigs and pbuffers.
 | 
			
		||||
<li><b>pbdemo.c</b> - a demonstration of off-screen rendering with pbuffers.
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Mesa 4.1 and later support GL_SGIX_fbconfig and GL_SGIX_pbuffer (software
 | 
			
		||||
rendering only).
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
</BODY>
 | 
			
		||||
</HTML>
 | 
			
		||||
@@ -1,380 +0,0 @@
 | 
			
		||||
<HTML>
 | 
			
		||||
 | 
			
		||||
<head>
 | 
			
		||||
<TITLE>Mesa Release Notes</TITLE>
 | 
			
		||||
<link rel="stylesheet" type="text/css" href="mesa.css">
 | 
			
		||||
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
 | 
			
		||||
</head>
 | 
			
		||||
 | 
			
		||||
<BODY>
 | 
			
		||||
 | 
			
		||||
<body bgcolor="#eeeeee">
 | 
			
		||||
 | 
			
		||||
<H1>Mesa 7.10.1 Release Notes / TBD</H1>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Mesa 7.10.1 is a bug fix release which fixes bugs found since the 7.10 release.
 | 
			
		||||
</p>
 | 
			
		||||
<p>
 | 
			
		||||
Mesa 7.10.1 implements the OpenGL 2.1 API, but the version reported by
 | 
			
		||||
glGetString(GL_VERSION) depends on the particular driver being used.
 | 
			
		||||
Some drivers don't support all the features required in OpenGL 2.1.
 | 
			
		||||
</p>
 | 
			
		||||
<p>
 | 
			
		||||
See the <a href="install.html">Compiling/Installing page</a> for prerequisites
 | 
			
		||||
for DRI hardware acceleration.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>MD5 checksums</h2>
 | 
			
		||||
<pre>
 | 
			
		||||
4b4cee19f3bf16eb78bd4cc278ccf812  MesaLib-7.10.1.tar.gz
 | 
			
		||||
efe8da4d80c2a5d32a800770b8ce5dfa  MesaLib-7.10.1.tar.bz2
 | 
			
		||||
0fd2b1a025934de3f8cecf9fb9b57f4c  MesaLib-7.10.1.zip
 | 
			
		||||
42beb0f5188d544476c19496f725fa67  MesaGLUT-7.10.1.tar.gz
 | 
			
		||||
637bb8a20fdad89f7382b4ea83f896e3  MesaGLUT-7.10.1.tar.bz2
 | 
			
		||||
bdbf3ffb2606d6aa8afabb6c6243b91b  MesaGLUT-7.10.1.zip
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>New features</h2>
 | 
			
		||||
<p>None.</p>
 | 
			
		||||
 | 
			
		||||
<h2>Bug fixes</h2>
 | 
			
		||||
<p>This list is likely incomplete.</p>
 | 
			
		||||
<ul>
 | 
			
		||||
<li>Fix an off-by-one bug in a vsplit assertion.</li>
 | 
			
		||||
<li>Fix incorrect handling of <tt>layout</tt> qualifier
 | 
			
		||||
with <tt>in</tt>, <tt>out</tt>, <tt>attribute</tt>, and <tt>varying</tt>.</li>
 | 
			
		||||
 | 
			
		||||
<li>Fix an i965 shader bug where the negative absolute value was generated instead of the absolute value of a negation.</li>
 | 
			
		||||
 | 
			
		||||
<li>Fix numerous issues handling precision qualifiers in GLSL ES.</li>
 | 
			
		||||
 | 
			
		||||
<li>Fixed a few GLX protocol encoder bugs (Julien Cristau)</li>
 | 
			
		||||
 | 
			
		||||
<li>Assorted Gallium llvmpipe driver bug fixes</li>
 | 
			
		||||
 | 
			
		||||
<li>Assorted Mesa/Gallium state tracker bug fixes</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=26795">Bug 26795</a> - gl_FragCoord off by one in Gallium drivers.</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=29164">Bug 29164</a> - [GLSL 1.20] invariant variable shouldn't be used before declaration</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=29823">Bug 29823</a> - GetUniform[if]v busted</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=29927">Bug 29927</a> - [glsl2] fail to compile shader with constructor for array of struct type</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=30156">Bug 30156</a> - [i965] After updating to Mesa 7.9, Civilization IV starts to show garbage</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31923">Bug 31923</a> - [GLSL 1.20] allowing inconsistent centroid declaration between two vertex shaders</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31925">Bug 31925</a> - [GLSL 1.20] "#pragma STDGL invariant(all)" fail</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32214">Bug 32214</a> - [gles2]no link error happens when missing vertex shader or frag shader</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32375">Bug 32375</a> - [gl gles2] Not able to get the attribute by function glGetVertexAttribfv</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32541">Bug 32541</a> - Segmentation Fault while running an HDR (high dynamic range) rendering demo</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32569">Bug 32569</a> - [gles2] glGetShaderPrecisionFormat not implemented yet</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32695">Bug 32695</a> - [glsl] SIGSEGV glcpp/glcpp-parse.y:833</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32831">Bug 32831</a> - [glsl] division by zero crashes GLSL compiler</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32910">Bug 32910</a> - Keywords 'in' and 'out' not handled properly for GLSL 1.20 shaders</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=33219">Bug 33219</a> -[GLSL bisected] implicit sized array triggers segfault in ir_to_mesa_visitor::copy_propagate</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=33306">Bug 33306</a> - GLSL integer division by zero crashes GLSL compiler</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=33308">Bug 33308</a> -[glsl] ast_to_hir.cpp:3016: virtual ir_rvalue* ast_jump_statement::hir(exec_list*, _mesa_glsl_parse_state*): Assertion `ret != __null' failed.</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=33316">Bug 33316</a> - uniform array will be allocate one line more and initialize it when it was freed will abort</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=33386">Bug 33386</a> - Dubious assembler in read_rgba_span_x86.S</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=33388">Bug 33388</a> - Dubious assembler in xform4.S</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=33433">Bug 33433</a> - Error in x86-64 API dispatch code.</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=33507">Bug 33507</a> - [glsl] GLSL preprocessor modulus by zero crash</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=33508">Bug 33508</a> - [glsl] GLSL compiler modulus by zero crash</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=33916">Bug 33916</a> - Compiler accepts reserved operators % and %=</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=34030">Bug 34030</a> - [bisected] Starcraft 2: some effects are corrupted or too big</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=34047">Bug 34047</a> - Assert in _tnl_import_array() when using GLfixed vertex datatypes with GLESv2</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=34114">Bug 34114</a> - Sun Studio build fails due to standard library functions not being in global namespace</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=34179">Bug 34179</a> - Nouveau 3D driver: nv50_pc_emit.c:863 assertion error kills Compiz</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=34198">Bug 34198</a> - [GLSL] implicit sized array with index 0 used gets assertion</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.launchpad.net/ubuntu/+source/mesa/+bug/691653">Ubuntu bug 691653</a> - compiz crashes when using alt-tab (the radeon driver kills it) </li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.meego.com/show_bug.cgi?id=13005">Meego bug 13005</a> - Graphics GLSL issue lead to camera preview fail on Pinetrail</li>
 | 
			
		||||
 | 
			
		||||
<!-- <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=">Bug </a> - </li> -->
 | 
			
		||||
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>Changes</h2>
 | 
			
		||||
<p>The full set of changes can be viewed by using the following GIT command:</p>
 | 
			
		||||
 | 
			
		||||
<pre>
 | 
			
		||||
  git log mesa-7.10..mesa-7.10.1
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
<p>Alberto Milone (1):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>r600c: add evergreen ARL support.</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Brian Paul (21):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>draw: Fix an off-by-one bug in a vsplit assertion.</li>
 | 
			
		||||
  <li>docs: add links to 7.9.1 and 7.10 release notes</li>
 | 
			
		||||
  <li>docs: added news item for 7.9.1 and 7.10 release</li>
 | 
			
		||||
  <li>gallivm: work around LLVM 2.6 bug when calling C functions</li>
 | 
			
		||||
  <li>gallivm: fix copy&paste error from previous commit</li>
 | 
			
		||||
  <li>mesa: fix a few format table mistakes, assertions</li>
 | 
			
		||||
  <li>mesa: fix num_draw_buffers==0 in fixed-function fragment program generation</li>
 | 
			
		||||
  <li>mesa: don't assert in GetIntegerIndexed, etc</li>
 | 
			
		||||
  <li>mesa: check for dummy renderbuffer in _mesa_FramebufferRenderbufferEXT()</li>
 | 
			
		||||
  <li>llvmpipe: make sure binning is active when we begin/end a query</li>
 | 
			
		||||
  <li>st/mesa: fix incorrect fragcoord.x translation</li>
 | 
			
		||||
  <li>softpipe: fix off-by-one error in setup_fragcoord_coeff()</li>
 | 
			
		||||
  <li>cso: fix loop bound in cso_set_vertex_samplers()</li>
 | 
			
		||||
  <li>st/mesa: fix incorrect glCopyPixels position on fallback path</li>
 | 
			
		||||
  <li>st/mesa: set renderbuffer _BaseFormat in a few places</li>
 | 
			
		||||
  <li>st/mesa: fix the default case in st_format_datatype()</li>
 | 
			
		||||
  <li>st/mesa: need to translate clear color according to surface's base format</li>
 | 
			
		||||
  <li>docs: update 7.9.2 release notes with Brian's cherry-picks</li>
 | 
			
		||||
  <li>docs: add link to 7.10.1 release notes</li>
 | 
			
		||||
  <li>mesa: implement glGetShaderPrecisionFormat()</li>
 | 
			
		||||
  <li>docs: updated environment variable list</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Bryce Harrington (1):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>r300g: Null pointer check for buffer deref in gallium winsys</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Chad Versace (20):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>glsl: At link-time, check that globals have matching centroid qualifiers</li>
 | 
			
		||||
  <li>glcpp: Fix segfault when validating macro redefinitions</li>
 | 
			
		||||
  <li>glsl: Fix parser rule for type_specifier</li>
 | 
			
		||||
  <li>glsl: Change default value of ast_type_specifier::precision</li>
 | 
			
		||||
  <li>glsl: Add semantic checks for precision qualifiers</li>
 | 
			
		||||
  <li>glsl: Add support for default precision statements</li>
 | 
			
		||||
  <li>glsl: Remove redundant semantic check in parser</li>
 | 
			
		||||
  <li>glsl: Fix semantic checks on precision qualifiers</li>
 | 
			
		||||
  <li>glsl: Fix segfault due to missing printf argument</li>
 | 
			
		||||
  <li>glsl: Mark 'in' variables at global scope as read-only</li>
 | 
			
		||||
  <li>mesa: Refactor handling of extension strings</li>
 | 
			
		||||
  <li>mesa: Add/remove extensions in extension string</li>
 | 
			
		||||
  <li>mesa: Change dependencies of some OES extension strings</li>
 | 
			
		||||
  <li>mesa: Change OES_point_sprite to depend on ARB_point_sprite</li>
 | 
			
		||||
  <li>mesa: Change OES_standard_derivatives to be stand-alone extension</li>
 | 
			
		||||
  <li>i915: Disable extension OES_standard_derivatives</li>
 | 
			
		||||
  <li>glcpp: Raise error when modulus is zero</li>
 | 
			
		||||
  <li>glsl: Set operators '%' and '%=' to be reserved when GLSL < 1.30</li>
 | 
			
		||||
  <li>glsl: Reinstate constant-folding for division by zero</li>
 | 
			
		||||
  <li>tnl: Add support for datatype GL_FIXED in vertex arrays</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Chia-I Wu (1):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>mesa: Add glDepthRangef and glClearDepthf to APIspec.xml.</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Christoph Bumiller (1):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>nv50,nvc0: do not forget to apply sign mode to saved TGSI inputs</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Cyril Brulebois (1):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>Point to bugs.freedesktop.org rather than bugzilla.freedesktop.org</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Dave Airlie (3):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>radeon/r200: fix fbo-clearmipmap + gen-teximage</li>
 | 
			
		||||
  <li>radeon: calculate complete texture state inside TFP function</li>
 | 
			
		||||
  <li>radeon: avoid segfault on 3D textures.</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Dimitry Andric (4):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>mesa: s/movzx/movzbl/</li>
 | 
			
		||||
  <li>mesa: s/movzxw/movzwl/ in read_rgba_span_x86.S</li>
 | 
			
		||||
  <li>glapi: adding @ char before type specifier in glapi_x86.S</li>
 | 
			
		||||
  <li>glapi: add @GOTPCREL relocation type</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Eric Anholt (16):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>glsl: Fix the lowering of variable array indexing to not lose write_masks.</li>
 | 
			
		||||
  <li>i965/fs: When producing ir_unop_abs of an operand, strip negate.</li>
 | 
			
		||||
  <li>i965/vs: When MOVing to produce ABS, strip negate of the operand.</li>
 | 
			
		||||
  <li>i965/fs: Do flat shading when appropriate.</li>
 | 
			
		||||
  <li>i965: Avoid double-negation of immediate values in the VS.</li>
 | 
			
		||||
  <li>intel: Make renderbuffer tiling choice match texture tiling choice.</li>
 | 
			
		||||
  <li>i965: Fix dead pointers to fp->Parameters->ParameterValues[] after realloc.</li>
 | 
			
		||||
  <li>docs: Add a relnote for the Civ IV on i965.</li>
 | 
			
		||||
  <li>glapi: Add entrypoints and enums for GL_ARB_ES2_compatibility.</li>
 | 
			
		||||
  <li>mesa: Add extension enable bit for GL_ARB_ES2_compatibility.</li>
 | 
			
		||||
  <li>mesa: Add actual support for glReleaseShaderCompiler from ES2.</li>
 | 
			
		||||
  <li>mesa: Add support for glDepthRangef and glClearDepthf.</li>
 | 
			
		||||
  <li>mesa: Add getters for ARB_ES2_compatibility MAX_*_VECTORS.</li>
 | 
			
		||||
  <li>mesa: Add getter for GL_SHADER_COMPILER with ARB_ES2_compatibility.</li>
 | 
			
		||||
  <li>i965: Fix a bug in i965 compute-to-MRF.</li>
 | 
			
		||||
  <li>i965/fs: Add a helper function for detecting math opcodes.</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Fredrik Höglund (1):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>st/mesa: fix a regression from cae2bb76</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Ian Romanick (42):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>docs: Add 7.10 md5sums</li>
 | 
			
		||||
  <li>glsl: Support the 'invariant(all)' pragma</li>
 | 
			
		||||
  <li>glcpp: Generate an error for division by zero</li>
 | 
			
		||||
  <li>glsl: Add version_string containing properly formatted GLSL version</li>
 | 
			
		||||
  <li>glsl & glcpp: Refresh autogenerated lexer and parser files.</li>
 | 
			
		||||
  <li>glsl: Disallow 'in' and 'out' on globals in GLSL 1.20</li>
 | 
			
		||||
  <li>glsl: Track variable usage, use that to enforce semantics</li>
 | 
			
		||||
  <li>glsl: Allow 'in' and 'out' when 'layout' is also available</li>
 | 
			
		||||
  <li>docs: Initial bits of 7.10.1 release notes</li>
 | 
			
		||||
  <li>mesa: bump version to 7.10.1-devel</li>
 | 
			
		||||
  <li>doc: Update 7.10.1 release notes</li>
 | 
			
		||||
  <li>glsl: Emit errors or warnings when 'layout' is used with 'attribute' or 'varying'</li>
 | 
			
		||||
  <li>docs: Update 7.10.1 release notes</li>
 | 
			
		||||
  <li>glsl: Refresh autogenerated lexer and parser files.</li>
 | 
			
		||||
  <li>glsl: Don't assert when the value returned by a function has no rvalue</li>
 | 
			
		||||
  <li>linker: Set sizes for non-global arrays as well</li>
 | 
			
		||||
  <li>linker: Propagate max_array_access while linking functions</li>
 | 
			
		||||
  <li>docs: Update 7.10.1 release notes</li>
 | 
			
		||||
  <li>mesa: glGetUniform only returns a single element of an array</li>
 | 
			
		||||
  <li>linker: Generate link errors when ES shaders are missing stages</li>
 | 
			
		||||
  <li>mesa: Fix error checks in GetVertexAttrib functions</li>
 | 
			
		||||
  <li>Use C-style system headers in C++ code to avoid issues with std:: namespace</li>
 | 
			
		||||
  <li>docs: Update 7.10.1 release notes</li>
 | 
			
		||||
  <li>glapi: Regenerate for GL_ARB_ES2_compatibility.</li>
 | 
			
		||||
  <li>mesa: Connect glGetShaderPrecisionFormat into the dispatch table</li>
 | 
			
		||||
  <li>i965: Set correct values for range/precision of fragment shader types</li>
 | 
			
		||||
  <li>i915: Set correct values for range/precision of fragment shader types</li>
 | 
			
		||||
  <li>intel: Fix typeos from 3d028024 and 790ff232</li>
 | 
			
		||||
  <li>glsl: Ensure that all GLSL versions are supported in the stand-alone compiler</li>
 | 
			
		||||
  <li>glsl: Reject shader versions not supported by the implementation</li>
 | 
			
		||||
  <li>mesa: Initial size for secondary color array is 3</li>
 | 
			
		||||
  <li>glsl: Finish out the reduce/reduce error fixes</li>
 | 
			
		||||
  <li>glsl: Regenerate compiler and glcpp files from cherry picks</li>
 | 
			
		||||
  <li>linker: Fix off-by-one error implicit array sizing</li>
 | 
			
		||||
  <li>docs: update 7.10.1 release notes with Ian's recent cherry picks</li>
 | 
			
		||||
  <li>i915: Only mark a register as available if all components are written</li>
 | 
			
		||||
  <li>i915: Calculate partial result to temp register first</li>
 | 
			
		||||
  <li>i915: Force lowering of all types of indirect array accesses in the FS</li>
 | 
			
		||||
  <li>docs: Update 7.10.1 with (hopefully) the last of the cherry picks</li>
 | 
			
		||||
  <li>docs: Clean up bug fixes list</li>
 | 
			
		||||
  <li>intel: Remove driver date and related bits from renderer string</li>
 | 
			
		||||
  <li>mesa: set version string to 7.10.1 (final)</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Jian Zhao (1):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>mesa: fix an error in uniform arrays in row calculating.</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Julien Cristau (3):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>glx: fix request lengths</li>
 | 
			
		||||
  <li>glx: fix GLXChangeDrawableAttributesSGIX request</li>
 | 
			
		||||
  <li>glx: fix length of GLXGetFBConfigsSGIX</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Keith Packard (1):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>glsl: Eliminate reduce/reduce conflicts in glsl grammar</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Kenneth Graunke (20):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>glsl: Expose a public glsl_type::void_type const pointer.</li>
 | 
			
		||||
  <li>glsl: Don't bother unsetting a destructor that was never set.</li>
 | 
			
		||||
  <li>glsl, i965: Remove unnecessary talloc includes.</li>
 | 
			
		||||
  <li>glcpp: Remove use of talloc reference counting.</li>
 | 
			
		||||
  <li>ralloc: Add a fake implementation of ralloc based on talloc.</li>
 | 
			
		||||
  <li>Convert everything from the talloc API to the ralloc API.</li>
 | 
			
		||||
  <li>ralloc: a new MIT-licensed recursive memory allocator.</li>
 | 
			
		||||
  <li>Remove talloc from the make and automake build systems.</li>
 | 
			
		||||
  <li>Remove talloc from the SCons build system.</li>
 | 
			
		||||
  <li>Remove the talloc sources from the Mesa repository.</li>
 | 
			
		||||
  <li>glsl: Fix use of uninitialized values in _mesa_glsl_parse_state ctor.</li>
 | 
			
		||||
  <li>i965/fs: Apply source modifier workarounds to POW as well.</li>
 | 
			
		||||
  <li>i965: Fix shaders that write to gl_PointSize on Sandybridge.</li>
 | 
			
		||||
  <li>i965/fs: Avoid register coalescing away gen6 MATH workarounds.</li>
 | 
			
		||||
  <li>i965/fs: Correctly set up gl_FragCoord.w on Sandybridge.</li>
 | 
			
		||||
  <li>i965: Increase Sandybridge point size clamp.</li>
 | 
			
		||||
  <li>i965/fs: Refactor control flow stack handling.</li>
 | 
			
		||||
  <li>i965: Increase Sandybridge point size clamp in the clip state.</li>
 | 
			
		||||
  <li>glsl: Use reralloc instead of plain realloc.</li>
 | 
			
		||||
  <li>Revert "i965/fs: Correctly set up gl_FragCoord.w on Sandybridge."</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Marek Olšák (4):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>docs: fix messed up names with special characters in relnotes-7.10</li>
 | 
			
		||||
  <li>docs: fix messed up names with special characters in relnotes-7.9.1</li>
 | 
			
		||||
  <li>mesa: fix texture3D mipmap generation for UNSIGNED_BYTE_3_3_2</li>
 | 
			
		||||
  <li>st/dri: Track drawable context bindings</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Paulo Zanoni (1):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>dri_util: fail driCreateNewScreen if InitScreen is NULL</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Sam Hocevar (2):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>docs: add glsl info</li>
 | 
			
		||||
  <li>docs: fix glsl_compiler name</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Tom Fogal (1):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>Regenerate gl_mangle.h.</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Tom Stellard (2):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>r300/compiler: Disable register rename pass on r500</li>
 | 
			
		||||
  <li>r300/compiler: Don't erase sources when converting RGB->Alpha</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Vinson Lee (3):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>ralloc: Add missing va_end following va_copy.</li>
 | 
			
		||||
  <li>mesa: Move declaration before code in extensions.c.</li>
 | 
			
		||||
  <li>mesa: Move loop variable declarations outside for loop in extensions.c.</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>nobled (1):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>glx: Put null check before use</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
</body>
 | 
			
		||||
</html>
 | 
			
		||||
@@ -1,206 +0,0 @@
 | 
			
		||||
<HTML>
 | 
			
		||||
 | 
			
		||||
<head>
 | 
			
		||||
<TITLE>Mesa Release Notes</TITLE>
 | 
			
		||||
<link rel="stylesheet" type="text/css" href="mesa.css">
 | 
			
		||||
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
 | 
			
		||||
</head>
 | 
			
		||||
 | 
			
		||||
<BODY>
 | 
			
		||||
 | 
			
		||||
<body bgcolor="#eeeeee">
 | 
			
		||||
 | 
			
		||||
<H1>Mesa 7.10.2 Release Notes / April 6, 2011</H1>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Mesa 7.10.2 is a bug fix release which fixes bugs found since the 7.10 release.
 | 
			
		||||
</p>
 | 
			
		||||
<p>
 | 
			
		||||
Mesa 7.10.2 implements the OpenGL 2.1 API, but the version reported by
 | 
			
		||||
glGetString(GL_VERSION) depends on the particular driver being used.
 | 
			
		||||
Some drivers don't support all the features required in OpenGL 2.1.
 | 
			
		||||
</p>
 | 
			
		||||
<p>
 | 
			
		||||
See the <a href="install.html">Compiling/Installing page</a> for prerequisites
 | 
			
		||||
for DRI hardware acceleration.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>MD5 checksums</h2>
 | 
			
		||||
<pre>
 | 
			
		||||
2f9f444265534a2cfd9a99d1a8291089  MesaLib-7.10.2.tar.gz
 | 
			
		||||
f5de82852f1243f42cc004039e10b771  MesaLib-7.10.2.tar.bz2
 | 
			
		||||
47836e37bab6fcafe3ac90c9544ba0e9  MesaLib-7.10.2.zip
 | 
			
		||||
175120325828f313621cc5bc6c504803  MesaGLUT-7.10.2.tar.gz
 | 
			
		||||
8c71d273f5f8d6c5eda4ffc39e0fe03e  MesaGLUT-7.10.2.tar.bz2
 | 
			
		||||
03036c8efe7b791a90fa0f2c41b43f43  MesaGLUT-7.10.2.zip
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>New features</h2>
 | 
			
		||||
<p>None.</p>
 | 
			
		||||
 | 
			
		||||
<h2>Bug fixes</h2>
 | 
			
		||||
<p>This list is likely incomplete.</p>
 | 
			
		||||
<ul>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=29172">Bug 29172</a> - Arrandale - Pill Popper Pops Pills</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31159">Bug 31159</a> - shadow problem in 0ad game</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32688">Bug 32688</a> - [RADEON:KMS:R300G] some games have a wireframe or outline visible</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32949">Bug 32949</a> - [glsl wine] Need for Speed renders incorrectly with GLSL enabled</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=34203">Bug 34203</a> - [GLSL] fail to call long chains across shaders</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=34376">Bug 34376</a> - [GLSL] allowing assignment to unsized array
 | 
			
		||||
  <ul>
 | 
			
		||||
    <li>The commit message incorrectly
 | 
			
		||||
    lists <a href="https://bugs.freedesktop.org/show_bug.cgi?id=34367">bug
 | 
			
		||||
    34367</a>.</li>
 | 
			
		||||
  </ul>
 | 
			
		||||
</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=34370">Bug 34370</a> - [GLSL] "i<5 && i<4" in for loop fails</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=34374">Bug 34374</a> - [GLSL] fail to redeclare an array using initializer</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=35073">Bug 35073</a> - [GM45] Alpha test is broken when rendering to FBO with no color attachment</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=35483">Bug 35483</a> - util_blit_pixels_writemask: crash in line 322 of src/gallium/auxiliary/util/u_blit.c</li>
 | 
			
		||||
 | 
			
		||||
<!-- <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=">Bug </a> - </li> -->
 | 
			
		||||
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>Changes</h2>
 | 
			
		||||
<p>The full set of changes can be viewed by using the following GIT command:</p>
 | 
			
		||||
 | 
			
		||||
<pre>
 | 
			
		||||
  git log mesa-7.10.1..mesa-7.10.2
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
<p><em>Note:</em> Reverted commits and the reverts are not included in this list.</p>
 | 
			
		||||
 | 
			
		||||
<p>Alex Deucher (2):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>r600c: add new ontario pci ids</li>
 | 
			
		||||
  <li>r600g: add some additional ontario pci ids</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Benjamin Franzke (1):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>st/dri: Fix surfaceless gl using contexts with previous bound surfaces</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Brian Paul (9):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>docs: pull 7.9.2 release notes into 7.10 branch</li>
 | 
			
		||||
  <li>docs: update news.html with 7.10.1 and 7.9.2 releases</li>
 | 
			
		||||
  <li>docs: fill in 7.10.1 release data</li>
 | 
			
		||||
  <li>docs: add, fix release notes links</li>
 | 
			
		||||
  <li>docs: update info about Mesa packaging/contents</li>
 | 
			
		||||
  <li>docs: update prerequisites, remove old demo info</li>
 | 
			
		||||
  <li>mesa: Guard against null pointer deref in fbo validation</li>
 | 
			
		||||
  <li>st/mesa: Apply LOD bias from correct texture unit</li>
 | 
			
		||||
  <li>glsl: silence warning in printf() with a cast</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Chad Versace (1):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>i965: Fix tex_swizzle when depth mode is GL_RED</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Dave Airlie (1):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>r600: don't close fd on failed load</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Eric Anholt (2):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>i965: Apply a workaround for the Ironlake "vertex flashing".</li>
 | 
			
		||||
  <li>i965: Fix alpha testing when there is no color buffer in the FBO.</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Fabian Bieler (1):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>st/mesa: Apply LOD from texture object</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Henri Verbeet (1):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>st/mesa: Validate state before doing blits.</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Ian Romanick (13):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>docs: Add 7.10.1 md5sums</li>
 | 
			
		||||
  <li>glsl: Refactor AST-to-HIR code handling variable initializers</li>
 | 
			
		||||
  <li>glsl: Refactor AST-to-HIR code handling variable redeclarations</li>
 | 
			
		||||
  <li>glsl: Process redeclarations before initializers</li>
 | 
			
		||||
  <li>glsl: Function signatures cannot have NULL return type</li>
 | 
			
		||||
  <li>glsl: Add several function / call related validations</li>
 | 
			
		||||
  <li>linker: Add imported functions to the linked IR</li>
 | 
			
		||||
  <li>glsl: Use insert_before for lists instead of open coding it</li>
 | 
			
		||||
  <li>glsl: Only allow unsized array assignment in an initializer</li>
 | 
			
		||||
  <li>glcpp: Refresh autogenerated lexer files</li>
 | 
			
		||||
  <li>docs: Initial bits of 7.10.2 release notes</li>
 | 
			
		||||
  <li>mesa: set version string to 7.10.2</li>
 | 
			
		||||
  <li>mesa: Remove nonexistant files from _FILES lists</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Jerome Glisse (1):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>r600g: move user fence into base radeon structure</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>José Fonseca (2):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>mesa: Fix typo glGet*v(GL_TEXTURE_COORD_ARRAY_*).</li>
 | 
			
		||||
  <li>mesa: More glGet* fixes.</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Kenneth Graunke (4):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>glcpp: Rework lexer to use a SKIP state rather than REJECT.</li>
 | 
			
		||||
  <li>glcpp: Remove trailing contexts from #if rules.</li>
 | 
			
		||||
  <li>i965/fs: Fix linear gl_Color interpolation on pre-gen6 hardware.</li>
 | 
			
		||||
  <li>glsl: Accept precision qualifiers on sampler types, but only in ES.</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Marek Olšák (15):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>st/mesa: fix crash when DrawBuffer->_ColorDrawBuffers[0] is NULL</li>
 | 
			
		||||
  <li>st/mesa: fail to alloc a renderbuffer if st_choose_renderbuffer_format fails</li>
 | 
			
		||||
  <li>r300/compiler: fix the saturate modifier when applied to TEX instructions</li>
 | 
			
		||||
  <li>r300/compiler: fix translating the src negate bits in pair_translate</li>
 | 
			
		||||
  <li>r300/compiler: Abs doesn't cancel Negate (in the conversion to native swizzles)</li>
 | 
			
		||||
  <li>r300/compiler: TEX instructions don't support negation on source arguments</li>
 | 
			
		||||
  <li>r300/compiler: do not set TEX_IGNORE_UNCOVERED on r500</li>
 | 
			
		||||
  <li>r300/compiler: saturate Z before the shadow comparison</li>
 | 
			
		||||
  <li>r300/compiler: fix equal and notequal shadow compare functions</li>
 | 
			
		||||
  <li>r300/compiler: remove unused variables</li>
 | 
			
		||||
  <li>st/mesa: fix crash when using both user and vbo buffers with the same stride</li>
 | 
			
		||||
  <li>r300g: fix alpha-test with no colorbuffer</li>
 | 
			
		||||
  <li>r300g: tell the GLSL compiler to lower the continue opcode</li>
 | 
			
		||||
  <li>r300/compiler: propagate SaturateMode down to the result of shadow comparison</li>
 | 
			
		||||
  <li>r300/compiler: apply the texture swizzle to shadow pass and fail values too</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Michel Dänzer (1):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>Use proper source row stride when getting depth/stencil texels.</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Tom Stellard (4):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>r300/compiler: Use a 4-bit writemask in pair instructions</li>
 | 
			
		||||
  <li>prog_optimize: Fix reallocating registers for shaders with loops</li>
 | 
			
		||||
  <li>r300/compiler: Fix vertex shader MAD instructions with constant swizzles</li>
 | 
			
		||||
  <li>r300/compiler: Don't try to convert RGB to Alpha in full instructions</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
</body>
 | 
			
		||||
</html>
 | 
			
		||||
@@ -1,303 +0,0 @@
 | 
			
		||||
<HTML>
 | 
			
		||||
 | 
			
		||||
<head>
 | 
			
		||||
<TITLE>Mesa Release Notes</TITLE>
 | 
			
		||||
<link rel="stylesheet" type="text/css" href="mesa.css">
 | 
			
		||||
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
 | 
			
		||||
</head>
 | 
			
		||||
 | 
			
		||||
<BODY>
 | 
			
		||||
 | 
			
		||||
<body bgcolor="#eeeeee">
 | 
			
		||||
 | 
			
		||||
<H1>Mesa 7.10.3 Release Notes / June 13, 2011</H1>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Mesa 7.10.3 is a bug fix release which fixes bugs found since the 7.10.2 release.
 | 
			
		||||
</p>
 | 
			
		||||
<p>
 | 
			
		||||
Mesa 7.10.3 implements the OpenGL 2.1 API, but the version reported by
 | 
			
		||||
glGetString(GL_VERSION) depends on the particular driver being used.
 | 
			
		||||
Some drivers don't support all the features required in OpenGL 2.1.
 | 
			
		||||
</p>
 | 
			
		||||
<p>
 | 
			
		||||
See the <a href="install.html">Compiling/Installing page</a> for prerequisites
 | 
			
		||||
for DRI hardware acceleration.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>MD5 checksums</h2>
 | 
			
		||||
<pre>
 | 
			
		||||
d77b02034c11d6c2a55c07f82367d780  MesaLib-7.10.3.tar.gz
 | 
			
		||||
8c38fe8266be8e1ed1d84076ba5a703b  MesaLib-7.10.3.tar.bz2
 | 
			
		||||
614d063ecd170940d9ae7b355d365d59  MesaLib-7.10.3.zip
 | 
			
		||||
8768fd562ede7ed763d92b2d22232d7a  MesaGLUT-7.10.3.tar.gz
 | 
			
		||||
1496415b89da9549f0f3b34d9622e2e2  MesaGLUT-7.10.3.tar.bz2
 | 
			
		||||
1f29d0e7398fd3bf9f36f5db02941198  MesaGLUT-7.10.3.zip
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>New features</h2>
 | 
			
		||||
<p>None.</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>Bug fixes</h2>
 | 
			
		||||
<p>This list is likely incomplete.</p>
 | 
			
		||||
<ul>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=29162">Bug 29162</a> - mesa/darwin is severly broken</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31590">Bug 31590</a> - Black space between colors on mole hill example</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32395">Bug 32395</a> - [glsl] Incorrect code generation for shadow2DProj() with bias</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32564">Bug 32564</a> - [llvmpipe] prog: Unknown command line argument '-disable-mmx'. Try: 'prog -help' with llvm-2.9svn</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32835">Bug 32835</a> - [glsl] recursive #define results in infinite stack recursion</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=33303">Bug 33303</a> - [glsl] ir_constant_expression.cpp:72: virtual ir_constant* ir_expression::constant_expression_value(): Assertion `op[0]->type->base_type == op[1]->type->base_type' failed.</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=33314">Bug 33314</a> - [glsl] ir_constant_expression.cpp:122: virtual ir_constant* ir_expression::constant_expression_value(): Assertion `op[0]->type->base_type == GLSL_TYPE_BOOL' failed.</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=33512">Bug 33512</a> - [SNB] case ogles2conform/GL/gl_FragCoord/gl_FragCoord_xy_frag.test and gl_FragCoord_w_frag.test fail</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=34280">Bug 34280</a> - r200 mesa-7.10 font distortion</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=34321">Bug 34321</a> - The ARB_fragment_program subset of ARB_draw_buffers not implemented</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=35603">Bug 35603</a> - GLSL compiler freezes compiling shaders</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=36173">Bug 36173</a> - struct renderbuffer's 'format' field never set when using FBO</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=36238">Bug 36238</a> - Mesa release files don't contain scons control files</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=36410">Bug 36410</a> - [SNB] Rendering errors in 3DMMES subtest taiji</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=36527">Bug 36527</a> - [wine] Wolfenstein: Failed to translate rgb instruction.</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=36651">Bug 36651</a> - mesa requires bison and flex to build but configure does not check for them</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=36738">Bug 36738</a> - Openarena crash with r300g, swrastg + llvm > 2.8</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=37648">Bug 37648</a> - Logic error in mesa/main/teximage.c:texsubimage</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=37739">Bug 37739</a> - Color clear of FBO without color buffer crashes</li>
 | 
			
		||||
 | 
			
		||||
<!-- <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=">Bug </a> - </li> -->
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>Changes</h2>
 | 
			
		||||
<p>The full set of changes can be viewed by using the following GIT command:</p>
 | 
			
		||||
 | 
			
		||||
<pre>
 | 
			
		||||
  git log mesa-7.10.2..mesa-7.10.3
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
<p>Alan Hourihane (1):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>Check for out of memory when creating fence</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Alex Buell (1):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>configure: bump LIBDRM_REQUIRED to 2.4.24</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Alex Deucher (2):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>r600c: add new pci ids</li>
 | 
			
		||||
  <li>r600g: add new pci ids</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Brian Paul (19):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>docs: add link to 7.10.2 release notes</li>
 | 
			
		||||
  <li>scons: remove dangling reference to state_trackers/python/SConscript</li>
 | 
			
		||||
  <li>Makefile: add missing Scons files</li>
 | 
			
		||||
  <li>llvmpipe: document issue with LLVM 2.8 and earlier with AVX</li>
 | 
			
		||||
  <li>docs: replace llvmpipe/README with docs/llvmpipe.html</li>
 | 
			
		||||
  <li>glsl: add static qualifier to silence warning</li>
 | 
			
		||||
  <li>glsl: add cast to silence signed/unsigned comparison warning</li>
 | 
			
		||||
  <li>mesa: s/height/depth/ in texsubimage()</li>
 | 
			
		||||
  <li>mesa: fix void pointer arithmetic warnings</li>
 | 
			
		||||
  <li>mesa: add some missing GLAPIENTRY keywords</li>
 | 
			
		||||
  <li>mesa: check that flex/bison are installed</li>
 | 
			
		||||
  <li>st/mesa: fix incorrect texture level/face/slice accesses</li>
 | 
			
		||||
  <li>draw: fix edge flag handling in clipper (for unfilled tris/quads/polygons)</li>
 | 
			
		||||
  <li>vbo: check array indexes to prevent negative indexing</li>
 | 
			
		||||
  <li>vbo: remove node->count > 0 test in vbo_save_playback_vertex_list()</li>
 | 
			
		||||
  <li>st/mesa: fix software accum buffer format bug</li>
 | 
			
		||||
  <li>mesa: add include/c99/inttypes.h include/c99/stdbool.h include/c99/stdint.h files to tarballs</li>
 | 
			
		||||
  <li>docs: 7.10.3 release notes skeleton file, links</li>
 | 
			
		||||
  <li>mesa: bump version to 7.10.3</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Carl Worth (2):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>glcpp: Simplify calling convention of parser's active_list functions</li>
 | 
			
		||||
  <li>glcpp: Fix attempts to expand recursive macros infinitely (bug #32835).</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Dave Airlie (1):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>st/mesa: fix compressed mipmap generation.</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Eric Anholt (19):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>i965: Fix the VS thread limits for GT1, and clarify the WM limits on both.</li>
 | 
			
		||||
  <li>glsl: Avoid cascading errors when looking for a scalar boolean and failing.</li>
 | 
			
		||||
  <li>glsl: Semantically check the RHS of `&&' even when short-circuiting.</li>
 | 
			
		||||
  <li>glsl: Semantically check the RHS of `||' even when short-circuiting.</li>
 | 
			
		||||
  <li>glsl: When we've emitted a semantic error for ==, return a bool constant.</li>
 | 
			
		||||
  <li>glsl: Perform type checking on "^^" operands.</li>
 | 
			
		||||
  <li>intel: Use _mesa_base_tex_format for FBO texture attachments.</li>
 | 
			
		||||
  <li>swrast: Don't assert against glReadPixels of GL_RED and GL_RG.</li>
 | 
			
		||||
  <li>mesa: Add a gl_renderbuffer.RowStride field like textures have.</li>
 | 
			
		||||
  <li>mesa: Add a function to set up the default renderbuffer accessors.</li>
 | 
			
		||||
  <li>intel: Use Mesa core's renderbuffer accessors for depth.</li>
 | 
			
		||||
  <li>mesa: Use _mesa_get_format_bytes to refactor out the RB get_pointer_*</li>
 | 
			
		||||
  <li>mesa: Use _mesa_get_format_bytes to refactor out the RB get_row_*</li>
 | 
			
		||||
  <li>mesa: Add renderbuffer accessors for R8/RG88/R16/RG1616.</li>
 | 
			
		||||
  <li>swrast: Don't try to adjust_colors for <8bpc when handling R16, RG1616.</li>
 | 
			
		||||
  <li>intel: Use mesa core's R8, RG88, R16, RG1616 RB accessors.</li>
 | 
			
		||||
  <li>Revert "intel: Add spans code for the ARB_texture_rg support."</li>
 | 
			
		||||
  <li>mesa: Add support for the ARB_fragment_program part of ARB_draw_buffers.</li>
 | 
			
		||||
  <li>mesa: Add support for OPTION ATI_draw_buffers to ARB_fp.</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Hans de Goede (1):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>texstore: fix regression stricter check for memcpy path for unorm88 and unorm1616</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Henri Verbeet (3):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>mesa: Also update the color draw buffer if it's explicitly set to GL_NONE.</li>
 | 
			
		||||
  <li>glx: Destroy dri2Hash on DRI2 display destruction.</li>
 | 
			
		||||
  <li>glx: Only remove the glx_display from the list after it's destroyed.</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Ian Romanick (9):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>docs: Add 7.10.2 md5sums</li>
 | 
			
		||||
  <li>glsl: Fix off-by-one error setting max_array_access for non-constant indexing</li>
 | 
			
		||||
  <li>ir_to_mesa: Handle shadow compare w/projection and LOD bias correctly</li>
 | 
			
		||||
  <li>intel: Fix ROUND_DOWN_TO macro</li>
 | 
			
		||||
  <li>glsl: Regenerate compiler and glcpp files from cherry picks</li>
 | 
			
		||||
  <li>i965: Remove hint_gs_always and resulting dead code</li>
 | 
			
		||||
  <li>mesa: Don't try to clear a NULL renderbuffer</li>
 | 
			
		||||
  <li>mesa: Ignore blits to/from missing buffers</li>
 | 
			
		||||
  <li>docs: Add list of bugs fixed in 7.10.3 release</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Jeremy Huddleston (18):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>apple: Update GL specs</li>
 | 
			
		||||
  <li>apple: Rename glcontextmodes.[ch] to glxconfig.[ch]</li>
 | 
			
		||||
  <li>apple: Rename __GLcontextModes to struct glx_config</li>
 | 
			
		||||
  <li>apple: Rename GLXcontext</li>
 | 
			
		||||
  <li>apple: Re-add driContext and do_destroy</li>
 | 
			
		||||
  <li>apple: Rename _gl_context_modes_find_visual to glx_config_find_visual</li>
 | 
			
		||||
  <li>apple: Rename GLXcontext</li>
 | 
			
		||||
  <li>apple: Change from XExtDisplayInfo to struct glx_display</li>
 | 
			
		||||
  <li>apple: ifdef out come glapi-foo on darwin</li>
 | 
			
		||||
  <li>glx: Dead code removal</li>
 | 
			
		||||
  <li>apple: Build darwin using applegl rather than indirect</li>
 | 
			
		||||
  <li>apple: Fix build failures in applegl_glx.c</li>
 | 
			
		||||
  <li>darwin: Define GALLIUM_DRIVERS_DIRS in darwin config</li>
 | 
			
		||||
  <li>apple: Package applegl source into MesaLib tarball</li>
 | 
			
		||||
  <li>darwin: Set VG_LIB_{NAME,GLOB} to fix make install</li>
 | 
			
		||||
  <li>darwin: Don't link against libGL when building libOSMesa</li>
 | 
			
		||||
  <li>darwin: Fix VG_LIB_GLOB to also match the unversioned symlink</li>
 | 
			
		||||
  <li>osmesa: Fix missing symbols when GLX_INDIRECT_RENDERING is defined.</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>José Fonseca (13):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>llvmpipe: Update readme.</li>
 | 
			
		||||
  <li>mesa: GL_PROVOKING_VERTEX_EXT is a GLenum, not GLboolean.</li>
 | 
			
		||||
  <li>mesa: Fix GetVertexAttrib* inside display lists.</li>
 | 
			
		||||
  <li>draw: Fix draw_variant_output::format's type.</li>
 | 
			
		||||
  <li>gallivm: Tell LLVM to not assume a 16-byte aligned stack on x86.</li>
 | 
			
		||||
  <li>gallivm: Fix for dynamically linked LLVM 2.8 library.</li>
 | 
			
		||||
  <li>st/wgl: Adjust the pbuffer invisible window size.</li>
 | 
			
		||||
  <li>st/wgl: Fix debug output format specifiers of stw_framebuffer_get_size().</li>
 | 
			
		||||
  <li>st/wgl: Prevent spurious framebuffer sizes when the window is minimized.</li>
 | 
			
		||||
  <li>st/wgl: Cope with zero width/height windows.</li>
 | 
			
		||||
  <li>st/wgl: Allow to create pbuffers bigger than the desktop.</li>
 | 
			
		||||
  <li>st/wgl: Remove buggy assertion.</li>
 | 
			
		||||
  <li>wgl: Don't hold on to user supplied HDC.</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Kenneth Graunke (10):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>i965/fs: Switch W and 1/W in Sandybridge interpolation setup.</li>
 | 
			
		||||
  <li>i965: Refactor Sandybridge implied move handling.</li>
 | 
			
		||||
  <li>i965: Resolve implied moves in brw_dp_READ_4_vs_relative.</li>
 | 
			
		||||
  <li>intel: Add IS_GT2 macro for recognizing Sandybridge GT2 systems.</li>
 | 
			
		||||
  <li>i965: Allocate the whole URB to the VS and fix calculations for Gen6.</li>
 | 
			
		||||
  <li>intel: Support glCopyTexImage() from ARGB8888 to XRGB8888.</li>
 | 
			
		||||
  <li>glsl: Fix memory error when creating the supported version string.</li>
 | 
			
		||||
  <li>glsl: Regenerate autogenerated file builtin_function.cpp.</li>
 | 
			
		||||
  <li>i965: Rename various gen6 #defines to match the documentation.</li>
 | 
			
		||||
  <li>i965: Never enable the GS on Gen6.</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Kostas Georgiou (1):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>r600c/g: Add pci id for FirePro 2270</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Marek Olšák (18):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>tgsi/ureg: bump the limit of immediates</li>
 | 
			
		||||
  <li>st/mesa: fix changing internal format via RenderbufferStorage</li>
 | 
			
		||||
  <li>st/mesa: GenerateMipmap should not be killed by conditional rendering</li>
 | 
			
		||||
  <li>swrast: BlitFramebuffer should not be killed by conditional rendering</li>
 | 
			
		||||
  <li>st/mesa: BlitFramebuffer should not be killed by conditional rendering</li>
 | 
			
		||||
  <li>st/mesa: CopyTex(Sub)Image should not be killed by conditional rendering</li>
 | 
			
		||||
  <li>st/mesa: conditional rendering should not kill texture decompression via blit</li>
 | 
			
		||||
  <li>mesa: forbid UseProgram to be called inside Begin/End</li>
 | 
			
		||||
  <li>mesa: UseShaderProgramEXT and Uniform* shouldn't be allowed inside Begin/End</li>
 | 
			
		||||
  <li>mesa: queries of non-existent FBO attachments should return INVALID_OPERATION</li>
 | 
			
		||||
  <li>r300g: fix draw_vbo splitting on r3xx-r4xx</li>
 | 
			
		||||
  <li>r300g: fix texturing with non-3D textures and wrap R mode set to sample border</li>
 | 
			
		||||
  <li>r300g: fix occlusion queries when depth test is disabled or zbuffer is missing</li>
 | 
			
		||||
  <li>r300g: clear can be killed by render condition</li>
 | 
			
		||||
  <li>st/mesa: remove asserts in st_texture_image_copy</li>
 | 
			
		||||
  <li>mesa: fix up assertion in _mesa_source_buffer_exists</li>
 | 
			
		||||
  <li>mesa: invalidate framebuffer if internal format of renderbuffer is changed</li>
 | 
			
		||||
  <li>mesa: return after invalidating renderbuffer</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Matt Turner (1):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>r300/compiler: align memory allocations to 8-bytes</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Tom Stellard (3):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>r300/compiler: Fix incorrect presubtract conversion</li>
 | 
			
		||||
  <li>r300/compiler: Fix dataflow analysis bug with ELSE blocks</li>
 | 
			
		||||
  <li>r300/compiler: Limit instructions to 3 source selects</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Vinson Lee (1):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>gallivm: Disable MMX-disabling code on llvm-2.9.</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Zou Nan hai (1):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>i965: Align interleaved URB write length to 2</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>pepp (1):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>st/mesa: assign renderbuffer's format field when allocating storage</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
</body>
 | 
			
		||||
</html>
 | 
			
		||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -1,86 +0,0 @@
 | 
			
		||||
<HTML>
 | 
			
		||||
 | 
			
		||||
<head>
 | 
			
		||||
<TITLE>Mesa Release Notes</TITLE>
 | 
			
		||||
<link rel="stylesheet" type="text/css" href="mesa.css">
 | 
			
		||||
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
 | 
			
		||||
</head>
 | 
			
		||||
 | 
			
		||||
<BODY>
 | 
			
		||||
 | 
			
		||||
<body bgcolor="#eeeeee">
 | 
			
		||||
 | 
			
		||||
<H1>Mesa 7.11 Release Notes / (release date TBD)</H1>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Mesa 7.11 is a new development release.
 | 
			
		||||
People who are concerned with stability and reliability should stick
 | 
			
		||||
with a previous release or wait for Mesa 7.11.1.
 | 
			
		||||
</p>
 | 
			
		||||
<p>
 | 
			
		||||
Mesa 7.11 implements the OpenGL 2.1 API, but the version reported by
 | 
			
		||||
glGetString(GL_VERSION) depends on the particular driver being used.
 | 
			
		||||
Some drivers don't support all the features required in OpenGL 2.1.
 | 
			
		||||
</p>
 | 
			
		||||
<p>
 | 
			
		||||
See the <a href="install.html">Compiling/Installing page</a> for prerequisites
 | 
			
		||||
for DRI hardware acceleration.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>MD5 checksums</h2>
 | 
			
		||||
<pre>
 | 
			
		||||
tbd
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>New features</h2>
 | 
			
		||||
<ul>
 | 
			
		||||
<li>GL_ARB_ES2_compatibility (gallium drivers)
 | 
			
		||||
<li>GL_ARB_color_buffer_float (gallium drivers, i965)
 | 
			
		||||
<li>GL_ARB_draw_buffers_blend (gallium)
 | 
			
		||||
<li>GL_ARB_draw_instanced extension (gallium drivers, swrast)
 | 
			
		||||
<li>GL_ARB_instanced_arrays extension (gallium drivers)
 | 
			
		||||
<li>GL_ARB_occlusion_query2 (gallium drivers, swrast)
 | 
			
		||||
<li>GL_ARB_robustness (all drivers)
 | 
			
		||||
<li>GL_ARB_sampler_objects (gallium drivers)
 | 
			
		||||
<li>GL_ARB_seamless_cube_map (gallium r600)
 | 
			
		||||
<li>GL_ARB_shader_texture_lod (gallium drivers, i965)
 | 
			
		||||
<li>GL_ARB_sync (gallium drivers only, intel support was in 7.6)
 | 
			
		||||
<li>GL_ARB_texture_compression_rgtc (gallium drivers, swrast, i965)
 | 
			
		||||
<li>GL_ARB_texture_float (gallium, i965)
 | 
			
		||||
<li>GL_EXT_packed_float (gallium r600)
 | 
			
		||||
<li>GL_EXT_texture_compression_latc (gallium drivers, swrast)
 | 
			
		||||
<li>GL_EXT_texture_compression_rgtc (gallium drivers, swrast, i965)
 | 
			
		||||
<li>GL_EXT_texture_filter_anisotropic (swrast)
 | 
			
		||||
<li>GL_EXT_texture_shared_exponent (gallium drivers, swrast)
 | 
			
		||||
<li>GL_EXT_texture_sRGB_decode (gallium drivers, swrast, i965)
 | 
			
		||||
<li>GL_EXT_texture_snorm (gallium drivers)
 | 
			
		||||
<li>GL_AMD_draw_buffers_blend (alias of the ARB variant)
 | 
			
		||||
<li>GL_AMD_seamless_cubemap_per_texture (gallium r600)
 | 
			
		||||
<li>GL_AMD_shader_stencil_export (alias of the ARB variant)
 | 
			
		||||
<li>GL_ATI_draw_buffers (all drivers)
 | 
			
		||||
<li>GL_ATI_texture_compression_3dc (gallium drivers, swrast)
 | 
			
		||||
<li>GL_ATI_texture_float (gallium, i965)
 | 
			
		||||
<li>GL_NV_conditional_render (i965)
 | 
			
		||||
<li>GL_NV_texture_barrier (gallium drivers)
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>Bug fixes</h2>
 | 
			
		||||
<ul>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>Changes</h2>
 | 
			
		||||
<ul>
 | 
			
		||||
<li>The Windows MSVC project files have been removed.
 | 
			
		||||
They haven't been maintained in quite a while.
 | 
			
		||||
Building with SCons is an alternative.
 | 
			
		||||
<li>Removed GL_SGI_texture_color_table support from swrast driver - the only
 | 
			
		||||
driver that implemented it.
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
</body>
 | 
			
		||||
</html>
 | 
			
		||||
@@ -8,7 +8,7 @@
 | 
			
		||||
 | 
			
		||||
<body bgcolor="#eeeeee">
 | 
			
		||||
 | 
			
		||||
<H1>Mesa 7.6.1 Release Notes, 21 December 2009</H1>
 | 
			
		||||
<H1>Mesa 7.6.1 Release Notes, (date tbd)</H1>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Mesa 7.6.1 is a bug-fix release fixing issues since version 7.6.
 | 
			
		||||
@@ -26,15 +26,7 @@ for DRI hardware acceleration.
 | 
			
		||||
 | 
			
		||||
<h2>MD5 checksums</h2>
 | 
			
		||||
<pre>
 | 
			
		||||
e80fabad2e3eb7990adae773d6aeacba  MesaLib-7.6.1.tar.gz
 | 
			
		||||
7db4617e9e10ad3aca1b64339fd71b7d  MesaLib-7.6.1.tar.bz2
 | 
			
		||||
dd3275dbf9833480d2e92d0c69b22abd  MesaLib-7.6.1.zip
 | 
			
		||||
f7fdcfe3c0f363e571c60f02f74368fb  MesaDemos-7.6.1.tar.gz
 | 
			
		||||
a4226f06732a02556fcf6be290b86dff  MesaDemos-7.6.1.tar.bz2
 | 
			
		||||
849425f356bd940726cebedfa79de176  MesaDemos-7.6.1.zip
 | 
			
		||||
d40cc7c5e337a85b674e27a8e494f52f  MesaGLUT-7.6.1.tar.gz
 | 
			
		||||
ca9aecb91f05b1da9fd7d5eeb19d47d7  MesaGLUT-7.6.1.tar.bz2
 | 
			
		||||
23fad8398004c977a1d8953079b72ca6  MesaGLUT-7.6.1.zip
 | 
			
		||||
tbd
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,60 +0,0 @@
 | 
			
		||||
<HTML>
 | 
			
		||||
 | 
			
		||||
<TITLE>Mesa Release Notes</TITLE>
 | 
			
		||||
 | 
			
		||||
<head><link rel="stylesheet" type="text/css" href="mesa.css"></head>
 | 
			
		||||
 | 
			
		||||
<BODY>
 | 
			
		||||
 | 
			
		||||
<body bgcolor="#eeeeee">
 | 
			
		||||
 | 
			
		||||
<H1>Mesa 7.7.1 Release Notes / March 28, 2010</H1>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Mesa 7.7.1 is a bug-fix release.
 | 
			
		||||
</p>
 | 
			
		||||
<p>
 | 
			
		||||
Mesa 7.7.1 implements the OpenGL 2.1 API, but the version reported by
 | 
			
		||||
glGetString(GL_VERSION) depends on the particular driver being used.
 | 
			
		||||
Some drivers don't support all the features required in OpenGL 2.1.
 | 
			
		||||
</p>
 | 
			
		||||
<p>
 | 
			
		||||
See the <a href="install.html">Compiling/Installing page</a> for prerequisites
 | 
			
		||||
for DRI hardware acceleration.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>MD5 checksums</h2>
 | 
			
		||||
<pre>
 | 
			
		||||
3ab0638cfa7ce8157337a229cf0db2c4  MesaLib-7.7.1.tar.gz
 | 
			
		||||
46664d99e03f1e3ac078a7fea02af115  MesaLib-7.7.1.tar.bz2
 | 
			
		||||
4e73ba8abb59aff79485eb95d7cefff7  MesaLib-7.7.1.zip
 | 
			
		||||
bf1b108983995f7a712cf3343df1c918  MesaDemos-7.7.1.tar.gz
 | 
			
		||||
aeb39645d80d656e0adebaa09e5bcd03  MesaDemos-7.7.1.tar.bz2
 | 
			
		||||
01c49b7454fd292244eaf8bdc6ed8cf0  MesaDemos-7.7.1.zip
 | 
			
		||||
37ec6386693dcb6dc770d1efd63a7a93  MesaGLUT-7.7.1.tar.gz
 | 
			
		||||
1e16c85282f843791a21f7bc7b6a1ca8  MesaGLUT-7.7.1.tar.bz2
 | 
			
		||||
d352c9e36a8e4d1059f4abc017b131e0  MesaGLUT-7.7.1.zip
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>Bug fixes</h2>
 | 
			
		||||
<ul>
 | 
			
		||||
<li>Assorted fixes to VMware SVGA gallium driver.
 | 
			
		||||
<li>Fixed broken blending to multiple color buffers in swrast driver.
 | 
			
		||||
<li>Allocate constants more tightly in GL_ARB_vertex/fragment parser.
 | 
			
		||||
<li>Fixed mipmap generation bug caused by invalid viewport state.
 | 
			
		||||
<li>Gallium SSE codegen for XPD didn't always work.
 | 
			
		||||
<li>Fixed Windows build.
 | 
			
		||||
<li>Fixed broken glMultiDrawElements().
 | 
			
		||||
<li>Silence bogus GL errors generated in glxinfo.
 | 
			
		||||
<li>Fixed several render to texture bugs.
 | 
			
		||||
<li>Assorted bug fixes in Mesa/Gallium state tracker including
 | 
			
		||||
    glCopy/DrawPixels() to FBOs.
 | 
			
		||||
<li>Assorted fixes to Gallium drivers.
 | 
			
		||||
<li>Fixed broken glPush/PopClientAttrib() for vertex arrays in GLX code.
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
</body>
 | 
			
		||||
</html>
 | 
			
		||||
@@ -1,70 +0,0 @@
 | 
			
		||||
<HTML>
 | 
			
		||||
 | 
			
		||||
<TITLE>Mesa Release Notes</TITLE>
 | 
			
		||||
 | 
			
		||||
<head><link rel="stylesheet" type="text/css" href="mesa.css"></head>
 | 
			
		||||
 | 
			
		||||
<BODY>
 | 
			
		||||
 | 
			
		||||
<body bgcolor="#eeeeee">
 | 
			
		||||
 | 
			
		||||
<H1>Mesa 7.7 Release Notes / 21 December 2009</H1>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Mesa 7.7 is a new development release.
 | 
			
		||||
People who are concerned with stability and reliability should stick
 | 
			
		||||
with a previous release or wait for Mesa 7.7.1.
 | 
			
		||||
</p>
 | 
			
		||||
<p>
 | 
			
		||||
Mesa 7.7 implements the OpenGL 2.1 API, but the version reported by
 | 
			
		||||
glGetString(GL_VERSION) depends on the particular driver being used.
 | 
			
		||||
Some drivers don't support all the features required in OpenGL 2.1.
 | 
			
		||||
</p>
 | 
			
		||||
<p>
 | 
			
		||||
See the <a href="install.html">Compiling/Installing page</a> for prerequisites
 | 
			
		||||
for DRI hardware acceleration.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>MD5 checksums</h2>
 | 
			
		||||
<pre>
 | 
			
		||||
395c9516edf1ad54b0934d8db15557bf  MesaLib-7.7.tar.gz
 | 
			
		||||
e3fa64a1508bc23dd9de9dd2cea7cfb1  MesaLib-7.7.tar.bz2
 | 
			
		||||
e54903eb5e49c3969821fa16b32da245  MesaLib-7.7.zip
 | 
			
		||||
53b5b6f78e55de170d43c98cb6aaab7e  MesaDemos-7.7.tar.gz
 | 
			
		||||
6fd616b27b9826d0faa23e08e05d9435  MesaDemos-7.7.tar.bz2
 | 
			
		||||
240fe06159ad73d5e22c27033b66c80a  MesaDemos-7.7.zip
 | 
			
		||||
9fe11a904b2a9d8cd06cc52bc330b716  MesaGLUT-7.7.tar.gz
 | 
			
		||||
e8dceed05a59a2d3c2619d7d734587e3  MesaGLUT-7.7.tar.bz2
 | 
			
		||||
96af041d435349ee23ead4667ec36363  MesaGLUT-7.7.zip
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>New features</h2>
 | 
			
		||||
<ul>
 | 
			
		||||
<li>VMware "SVGA" Gallium driver.  This is a Gallium3D driver which targets the
 | 
			
		||||
    VMware virtual graphics device.  It allows Linux OpenGL guest applications
 | 
			
		||||
    to utilize the 3D graphics hardware of the host operating system.
 | 
			
		||||
<li>GL_ARB_draw_elements_base_vertex (supported in Intel i965 and software drivers)</li>
 | 
			
		||||
<li>GL_ARB_depth_clamp (supported in Intel i965 DRI and software drivers)</li>
 | 
			
		||||
<li>GL_NV_depth_clamp (supported in Intel i965 DRI and software drivers)</li>
 | 
			
		||||
<li>GL_ARB_provoking_vertex (same as GL_EXT_provoking_vertex)</li>
 | 
			
		||||
<li>Wavefront .obj file loader/viewer demo (progs/demos/objviewer)
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>Bug fixes</h2>
 | 
			
		||||
<ul>
 | 
			
		||||
<li>Many assorted i965 driver fixes.
 | 
			
		||||
<li>Many r300-gallium driver fixes; this driver is now considered unstable-quality instead of experimental-quality.
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>Changes</h2>
 | 
			
		||||
<ul>
 | 
			
		||||
<li>New Mesa texture/surface format infrastructure
 | 
			
		||||
<li>Removed some unused Mesa device driver hooks
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
</body>
 | 
			
		||||
</html>
 | 
			
		||||
@@ -1,62 +0,0 @@
 | 
			
		||||
<HTML>
 | 
			
		||||
 | 
			
		||||
<TITLE>Mesa Release Notes</TITLE>
 | 
			
		||||
 | 
			
		||||
<head><link rel="stylesheet" type="text/css" href="mesa.css"></head>
 | 
			
		||||
 | 
			
		||||
<BODY>
 | 
			
		||||
 | 
			
		||||
<body bgcolor="#eeeeee">
 | 
			
		||||
 | 
			
		||||
<H1>Mesa 7.8.1 Release Notes / April, 5, 2010</H1>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Mesa 7.8.1 fixes a couple critical bugs in the recent Mesa 7.8 release.  Even
 | 
			
		||||
though this is a bug fix release, given its proximity to the 7.8 release, a
 | 
			
		||||
new development release, it should also be considered new development release.
 | 
			
		||||
People who are concerned with stability and reliability should stick
 | 
			
		||||
with a previous release, such as 7.7.1, or wait for Mesa 7.8.2.
 | 
			
		||||
</p>
 | 
			
		||||
<p>
 | 
			
		||||
Mesa 7.8.1 implements the OpenGL 2.1 API, but the version reported by
 | 
			
		||||
glGetString(GL_VERSION) depends on the particular driver being used.
 | 
			
		||||
Some drivers don't support all the features required in OpenGL 2.1.
 | 
			
		||||
</p>
 | 
			
		||||
<p>
 | 
			
		||||
See the <a href="install.html">Compiling/Installing page</a> for prerequisites
 | 
			
		||||
for DRI hardware acceleration.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>MD5 checksums</h2>
 | 
			
		||||
<pre>
 | 
			
		||||
62e8e47cbd63741b4bbe634dcdc8a56a  MesaLib-7.8.1.tar.gz
 | 
			
		||||
25ec15f8e41fde6d206118cc786dbac4  MesaLib-7.8.1.tar.bz2
 | 
			
		||||
22b1153010ffdf513836ea9931159e80  MesaLib-7.8.1.zip
 | 
			
		||||
c9c0a830923d3820807a08c09d521b3e  MesaDemos-7.8.1.tar.gz
 | 
			
		||||
9ef47f911869657c6bf2f43ebce86b61  MesaDemos-7.8.1.tar.bz2
 | 
			
		||||
93720605eb3f784f9bcc289a4dd2ff52  MesaDemos-7.8.1.zip
 | 
			
		||||
ed1d0b1e960afe6a3768eab747cbdbd3  MesaGLUT-7.8.1.tar.gz
 | 
			
		||||
6bae516a44c6d26ff3152c960ab648e7  MesaGLUT-7.8.1.tar.bz2
 | 
			
		||||
ba306f603ea73c30ee0e7efa14dc5581  MesaGLUT-7.8.1.zip
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>New features</h2>
 | 
			
		||||
<p>None.</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>Bug fixes</h2>
 | 
			
		||||
<ul>
 | 
			
		||||
<li>Fix incorrect enums for GLX_INTEL_swap_event by updating glxext.h to
 | 
			
		||||
  version 27 from OpenGL.org.</li>
 | 
			
		||||
<li>Fix compilation errors on non-GLX_DIRECT_RENDERING builds.</li>
 | 
			
		||||
<li>Various fixes for building Mesa on OS X.</li>
 | 
			
		||||
<li>Pass GLX drawable ID to dri2InvalidateBuffers.  Fixes bug #27190.</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>Changes</h2>
 | 
			
		||||
<p>None.</p>
 | 
			
		||||
</body>
 | 
			
		||||
</html>
 | 
			
		||||
@@ -1,146 +0,0 @@
 | 
			
		||||
<HTML>
 | 
			
		||||
 | 
			
		||||
<TITLE>Mesa Release Notes</TITLE>
 | 
			
		||||
 | 
			
		||||
<head><link rel="stylesheet" type="text/css" href="mesa.css"></head>
 | 
			
		||||
 | 
			
		||||
<BODY>
 | 
			
		||||
 | 
			
		||||
<body bgcolor="#eeeeee">
 | 
			
		||||
 | 
			
		||||
<H1>Mesa 7.8.2 Release Notes / (date tbd)</H1>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Mesa 7.8.2 is a bug fix release which fixes bugs found since the 7.8.1 release.
 | 
			
		||||
</p>
 | 
			
		||||
<p>
 | 
			
		||||
Mesa 7.8.2 implements the OpenGL 2.1 API, but the version reported by
 | 
			
		||||
glGetString(GL_VERSION) depends on the particular driver being used.
 | 
			
		||||
Some drivers don't support all the features required in OpenGL 2.1.
 | 
			
		||||
</p>
 | 
			
		||||
<p>
 | 
			
		||||
See the <a href="install.html">Compiling/Installing page</a> for prerequisites
 | 
			
		||||
for DRI hardware acceleration.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>MD5 checksums</h2>
 | 
			
		||||
<pre>
 | 
			
		||||
c89b63d253605ed40e8ac370d25a833c  MesaLib-7.8.2.tar.gz
 | 
			
		||||
6be2d343a0089bfd395ce02aaf8adb57  MesaLib-7.8.2.tar.bz2
 | 
			
		||||
a04ad3b06ac5ff3969a003fa7bbf7d5b  MesaLib-7.8.2.zip
 | 
			
		||||
7c213f92efeb471f0331670d5079d4c0  MesaDemos-7.8.2.tar.gz
 | 
			
		||||
757d9e2e06f48b1a52848be9b0307ced  MesaDemos-7.8.2.tar.bz2
 | 
			
		||||
8d0e5cfe68b8ebf90265d350ae2c48b1  MesaDemos-7.8.2.zip
 | 
			
		||||
b74482e3f44f35ed395c4aada4fd8240  MesaGLUT-7.8.2.tar.gz
 | 
			
		||||
a471807b65e49c325808ba4551be93ed  MesaGLUT-7.8.2.tar.bz2
 | 
			
		||||
9f190268c42be582ef66e47365ee61e3  MesaGLUT-7.8.2.zip
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>New features</h2>
 | 
			
		||||
<p>None.</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>Changes</h2>
 | 
			
		||||
<ul>
 | 
			
		||||
<li>Upgraded glext.h to version 61, and upgraded glxext.h
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>Bug fixes</h2>
 | 
			
		||||
<ul>
 | 
			
		||||
<li>Fixed Gallium glDrawPixels(GL_DEPTH_COMPONENT).
 | 
			
		||||
<li>Fixed Gallium Cell driver to buildable, runable state
 | 
			
		||||
<li>Fixed bad error checking for glFramebufferRenderbuffer(attachment=GL_DEPTH_STENCIL_ATTACHMENT).
 | 
			
		||||
<li>Fixed incorrect Z coordinate handling in "meta" glDraw/CopyPixels.
 | 
			
		||||
    <a href="https://bugs.freedesktop.org/show_bug.cgi?id=23670">Bug
 | 
			
		||||
    #23670</a>.</li>
 | 
			
		||||
 | 
			
		||||
<li>Assorted i965 driver fixes.
 | 
			
		||||
    Including but not limited to:
 | 
			
		||||
  <ul>
 | 
			
		||||
    <li>Fix scissoring when width or height is
 | 
			
		||||
    0.  <a href="https://bugs.freedesktop.org/show_bug.cgi?id=27643">Bug
 | 
			
		||||
    #27643</a>.
 | 
			
		||||
    <li>Fix bit allocation for number of color regions for
 | 
			
		||||
    ARB_draw_buffers.</li>
 | 
			
		||||
    <li>Set the correct provoking vertex for clipped first-mode
 | 
			
		||||
    trifans.  <a href="https://bugs.freedesktop.org/show_bug.cgi?id=24470">Bug
 | 
			
		||||
    #24470</a>.</li>
 | 
			
		||||
    <li>Use <code>R16G16B16A16_FLOAT</code> for 3-component half-float.</li>
 | 
			
		||||
    <li>Fix assertion for surface tile offset usage on Ironlake.</li>
 | 
			
		||||
    <li>Fix cube map layouts on Ironlake.</li>
 | 
			
		||||
    <li>When an RB gets a new region, clear the old from the state
 | 
			
		||||
    cache.  <a href="https://bugs.freedesktop.org/show_bug.cgi?id=24119">Bug
 | 
			
		||||
    #24119</a>.</li>
 | 
			
		||||
    <li>Reject shaders with uninlined function calls instead of hanging.</li>
 | 
			
		||||
  </ul>
 | 
			
		||||
</li>
 | 
			
		||||
 | 
			
		||||
<li>Assorted i915 driver fixes.  Including but not limited to:
 | 
			
		||||
  <ul>
 | 
			
		||||
    <li>Fixed texture LOD clamping in i915 driver.
 | 
			
		||||
    <a href="https://bugs.freedesktop.org/show_bug.cgi?id=24846">Bug
 | 
			
		||||
    #24846</a>.</li>
 | 
			
		||||
    <li>Fix off-by-one for drawing rectangle.
 | 
			
		||||
    <a href="https://bugs.freedesktop.org/show_bug.cgi?id=27408">Bug
 | 
			
		||||
    #27408</a>.</li>
 | 
			
		||||
  </ul>
 | 
			
		||||
</li>
 | 
			
		||||
 | 
			
		||||
<li>Fixed hangs in etracer on 830 and 845
 | 
			
		||||
    chipsets.  <a href="https://bugs.freedesktop.org/show_bug.cgi?id=26557">Bug
 | 
			
		||||
    #26557</a>.</li>
 | 
			
		||||
<li>Fixed tiling of small textures on all Intel drivers.</li>
 | 
			
		||||
<li>Fixed crash in Savage driver when using <code>_mesa_CopyTexImage2D</code>.
 | 
			
		||||
    <a href="https://bugs.freedesktop.org/show_bug.cgi?id=27652">Bug
 | 
			
		||||
    #27652</a>.</li>
 | 
			
		||||
 | 
			
		||||
<li>Assorted GLX fixes.  Including but not limited to:
 | 
			
		||||
  <ul>
 | 
			
		||||
    <li>Fixed <code>__glXInitializeVisualConfigFromTags</code>'s handling of
 | 
			
		||||
        unrecognized fbconfig tags.</li>
 | 
			
		||||
    <li>Fixed regression with <code>GLX_USE_GL</code>.
 | 
			
		||||
    <li>Fixed config chooser logic for 'mask' matching.</li>
 | 
			
		||||
    <li>Report swap events correctly in direct rendered case (DRI2)</li>
 | 
			
		||||
    <li>Fixed build with dri2proto which doesn't define
 | 
			
		||||
        <code>X_DRI2SwapInterval</code>.</li>
 | 
			
		||||
    <li>Get <code>GLX_SCREEN</code> first in <code>__glXQueryContextInfo</code>.
 | 
			
		||||
        <a href="https://bugs.freedesktop.org/show_bug.cgi?id=14245">Bug
 | 
			
		||||
	#14245</a>.</li>
 | 
			
		||||
  </ul>
 | 
			
		||||
</li>
 | 
			
		||||
 | 
			
		||||
<li>Assorted GLSL fixes.  Including but not limited to:
 | 
			
		||||
  <ul>
 | 
			
		||||
    <li>Change variable declared assertion into conditional in GLSL
 | 
			
		||||
        compiler.  <a href="https://bugs.freedesktop.org/show_bug.cgi?id=27921">Bug
 | 
			
		||||
        #27921</a>.</li>
 | 
			
		||||
    <li>Fix instruction indexing
 | 
			
		||||
        bugs.  <a href="https://bugs.freedesktop.org/show_bug.cgi?id=27566">Bug
 | 
			
		||||
        #27566</a>.</li>
 | 
			
		||||
    <li>Updated uniform location / offset encoding to be more like
 | 
			
		||||
        other implementations.</li>
 | 
			
		||||
    <li>Don't overwrite a driver's shader infolog with generic failure
 | 
			
		||||
        message.</li>
 | 
			
		||||
  </ul>
 | 
			
		||||
</li>
 | 
			
		||||
 | 
			
		||||
<li>Fixed OSMesa build for 16 and 32-bit color channel depth.
 | 
			
		||||
<li>Fixed OSMesa build with hidden symbol visibility. libOSMesa no longer links to libGL.
 | 
			
		||||
    <a href="https://bugs.freedesktop.org/show_bug.cgi?id=28305">Bug
 | 
			
		||||
    #28305</a>.
 | 
			
		||||
<li>Fixed handling of multiple render targets in fixed-function
 | 
			
		||||
    texture envrionmnent programs.</li>
 | 
			
		||||
<li>Fixed conversion errors in <code>signed_rgba8888[rev]</code> texel
 | 
			
		||||
    fetch.</li>
 | 
			
		||||
<li>Don't set srcLevel on <code>GL_TEXTURE_RECTANGLE_ARB</code> targets.</li>
 | 
			
		||||
<li>Various build fixes for OpenBSD.</li>
 | 
			
		||||
<li>Various build fixes for OS X.</li>
 | 
			
		||||
<li>Various build fixes for GCC 3.3.</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
</body>
 | 
			
		||||
</html>
 | 
			
		||||
@@ -1,89 +0,0 @@
 | 
			
		||||
<HTML>
 | 
			
		||||
 | 
			
		||||
<TITLE>Mesa Release Notes</TITLE>
 | 
			
		||||
 | 
			
		||||
<head><link rel="stylesheet" type="text/css" href="mesa.css"></head>
 | 
			
		||||
 | 
			
		||||
<BODY>
 | 
			
		||||
 | 
			
		||||
<body bgcolor="#eeeeee">
 | 
			
		||||
 | 
			
		||||
<H1>Mesa 7.8.3 Release Notes / (date tbd)</H1>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Mesa 7.8.3 is a bug fix release which fixes bugs found since the 7.8.2 release.
 | 
			
		||||
</p>
 | 
			
		||||
<p>
 | 
			
		||||
Mesa 7.8.3 implements the OpenGL 2.1 API, but the version reported by
 | 
			
		||||
glGetString(GL_VERSION) depends on the particular driver being used.
 | 
			
		||||
Some drivers don't support all the features required in OpenGL 2.1.
 | 
			
		||||
</p>
 | 
			
		||||
<p>
 | 
			
		||||
See the <a href="install.html">Compiling/Installing page</a> for prerequisites
 | 
			
		||||
for DRI hardware acceleration.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>MD5 checksums</h2>
 | 
			
		||||
<pre>
 | 
			
		||||
x  MesaLib-7.8.3.tar.gz
 | 
			
		||||
x  MesaLib-7.8.3.tar.bz2
 | 
			
		||||
x  MesaLib-7.8.3.zip
 | 
			
		||||
x  MesaDemos-7.8.3.tar.gz
 | 
			
		||||
x  MesaDemos-7.8.3.tar.bz2
 | 
			
		||||
x  MesaDemos-7.8.3.zip
 | 
			
		||||
x  MesaGLUT-7.8.3.tar.gz
 | 
			
		||||
x  MesaGLUT-7.8.3.tar.bz2
 | 
			
		||||
x  MesaGLUT-7.8.3.zip
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>New features</h2>
 | 
			
		||||
<p>None.</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>Changes</h2>
 | 
			
		||||
<ul>
 | 
			
		||||
<li>The radeon driver should use less memory when searching for a valid mip
 | 
			
		||||
image.</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>Bug fixes</h2>
 | 
			
		||||
<ul>
 | 
			
		||||
<li>Fix unsupported FB with D24S8 (bug 
 | 
			
		||||
    <a href="https://bugs.freedesktop.org/show_bug.cgi?id=23670">29116</a>)</li>
 | 
			
		||||
<li>Fix ReadPixels crash when reading depth/stencil from an FBO</li>
 | 
			
		||||
<li>Fixed a bug rendering to 16-bit buffers using swrast.</li>
 | 
			
		||||
<li>Fixed a state tracker/TGSI bug that caused crashes when using Windows'
 | 
			
		||||
    memory debugging features.</li>
 | 
			
		||||
<li>Fixed an issue rendering to 32-bit channels with swrast (bug
 | 
			
		||||
    <a href="https://bugs.freedesktop.org/show_bug.cgi?id=29487">29487</a>)</li>
 | 
			
		||||
<li>GLSL: fix indirect <TT>gl_TextureMatrix</TT> addressing (bug
 | 
			
		||||
    <a href="https://bugs.freedesktop.org/show_bug.cgi?id=28967">28967</a>)</li>
 | 
			
		||||
<li>GLSL: fix for bug
 | 
			
		||||
    <a href="https://bugs.freedesktop.org/show_bug.cgi?id=27216">27216</a></li>
 | 
			
		||||
<li>GLSL: fix zw fragcoord entries in some cases (bug
 | 
			
		||||
    <a href="https://bugs.freedesktop.org/show_bug.cgi?id=29183">29183</a>)</li>
 | 
			
		||||
<li>Fix texture env generation in some cases (bug
 | 
			
		||||
    <a href="https://bugs.freedesktop.org/show_bug.cgi?id=28169">28169</a>)</li>
 | 
			
		||||
<li>osmesa: a fix for calling <TT>OSMesaMakeCurrent</TT> twice was applied (bug 
 | 
			
		||||
    <a href="https://bugs.freedesktop.org/show_bug.cgi?id=10966">10966</a></li>
 | 
			
		||||
<li>A bug was fixed which could cause Mesa to ignore the
 | 
			
		||||
    <TT>MESA_EXTENSION_OVERRIDE</TT> environment variable.</li>
 | 
			
		||||
<li>A bug related to specular highlights on backfaces was fixed.</li>
 | 
			
		||||
<li>A radeon-specific issue with <TT>glCopyTex(Sub)Image</TT> was
 | 
			
		||||
    corrected.</li>
 | 
			
		||||
<li>radeon/wine: flush command stream in more cases, fixing wine d3d9
 | 
			
		||||
    tests.</li>
 | 
			
		||||
<li>r600: fix sin+cos normalization.</li>
 | 
			
		||||
<li>r600: (properly) ignore <TT>GL_COORD_REPLACE</TT> when point sprites are
 | 
			
		||||
    disabled.</li>
 | 
			
		||||
<li>radeon: avoid flushing when the context is not current.</li>
 | 
			
		||||
<li>r300c: a bug affecting unaligned BOs was fixed.</li>
 | 
			
		||||
<li>r300c: a hardlock caused by ARB_half_float_vertex incorrectly advertised on some chipsets.</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
</body>
 | 
			
		||||
</html>
 | 
			
		||||
@@ -1,70 +0,0 @@
 | 
			
		||||
<HTML>
 | 
			
		||||
 | 
			
		||||
<TITLE>Mesa Release Notes</TITLE>
 | 
			
		||||
 | 
			
		||||
<head><link rel="stylesheet" type="text/css" href="mesa.css"></head>
 | 
			
		||||
 | 
			
		||||
<BODY>
 | 
			
		||||
 | 
			
		||||
<body bgcolor="#eeeeee">
 | 
			
		||||
 | 
			
		||||
<H1>Mesa 7.8 Release Notes / March 28, 2010</H1>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Mesa 7.8 is a new development release.
 | 
			
		||||
People who are concerned with stability and reliability should stick
 | 
			
		||||
with a previous release or wait for Mesa 7.8.1.
 | 
			
		||||
</p>
 | 
			
		||||
<p>
 | 
			
		||||
Mesa 7.8 implements the OpenGL 2.1 API, but the version reported by
 | 
			
		||||
glGetString(GL_VERSION) depends on the particular driver being used.
 | 
			
		||||
Some drivers don't support all the features required in OpenGL 2.1.
 | 
			
		||||
</p>
 | 
			
		||||
<p>
 | 
			
		||||
See the <a href="install.html">Compiling/Installing page</a> for prerequisites
 | 
			
		||||
for DRI hardware acceleration.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>MD5 checksums</h2>
 | 
			
		||||
<pre>
 | 
			
		||||
5fcfde5383eccb3e9fd665f08a0ea59b  MesaLib-7.8.tar.gz
 | 
			
		||||
85cb891eecb89aae4fdd3499cccd934b  MesaLib-7.8.tar.bz2
 | 
			
		||||
754f39593006effc1c8ec3c27c2f1296  MesaLib-7.8.zip
 | 
			
		||||
c3869c29fa6c3dbdd763f7428d271e12  MesaDemos-7.8.tar.gz
 | 
			
		||||
9fe8ec184c7f78691e43c4c0a7f97d56  MesaDemos-7.8.tar.bz2
 | 
			
		||||
063a96947f7b83d4ad789c6cf291b184  MesaDemos-7.8.zip
 | 
			
		||||
5f4246756b7daaddb4fb3f970cad1e28  MesaGLUT-7.8.tar.gz
 | 
			
		||||
ca7048a4aa7a437dcc84cc2c7d731336  MesaGLUT-7.8.tar.bz2
 | 
			
		||||
b54581aeb79b585b158d6a32f94feff2  MesaGLUT-7.8.zip
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>New features</h2>
 | 
			
		||||
<ul>
 | 
			
		||||
<li>GL_NV_conditional_render extension (swrast driver only)
 | 
			
		||||
<li>GL_EXT_draw_buffers2 extension (swrast and i965 driver only)
 | 
			
		||||
<li>GL_ARB_fragment_coord_conventions extension (for swrast, i965, and Gallium drivers)
 | 
			
		||||
<li>GL_EXT_texture_array extension (swrast driver only)
 | 
			
		||||
<li>GL_APPLE_object_purgeable extension (swrast and i945/i965 DRI drivers)
 | 
			
		||||
<li>Much improved support for <a href="egl.html">EGL in Mesa</a>
 | 
			
		||||
<li>New state trackers for <a href="opengles.html">OpenGL ES 1.1 and 2.0</a>
 | 
			
		||||
<li>Dedicated documentation for Gallium
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>Bug fixes</h2>
 | 
			
		||||
<ul>
 | 
			
		||||
<li>Massive improvements to the Gallium driver for R300-R500 Radeons; this
 | 
			
		||||
    driver is now moderately stable but not terribly performant.
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>Changes</h2>
 | 
			
		||||
<ul>
 | 
			
		||||
<li>Removed support for color-index rendering</li>
 | 
			
		||||
<li>Removed support for GCC versions earlier than 3.3.0.</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
</body>
 | 
			
		||||
</html>
 | 
			
		||||
@@ -1,406 +0,0 @@
 | 
			
		||||
<HTML>
 | 
			
		||||
 | 
			
		||||
<head>
 | 
			
		||||
<TITLE>Mesa Release Notes</TITLE>
 | 
			
		||||
<link rel="stylesheet" type="text/css" href="mesa.css">
 | 
			
		||||
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
 | 
			
		||||
</head>
 | 
			
		||||
 | 
			
		||||
<BODY>
 | 
			
		||||
 | 
			
		||||
<body bgcolor="#eeeeee">
 | 
			
		||||
 | 
			
		||||
<H1>Mesa 7.9.1 Release Notes / January 7, 2011</H1>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Mesa 7.9.1 is a bug fix release which fixes bugs found since the 7.9 release.
 | 
			
		||||
</p>
 | 
			
		||||
<p>
 | 
			
		||||
Mesa 7.9.1 implements the OpenGL 2.1 API, but the version reported by
 | 
			
		||||
glGetString(GL_VERSION) depends on the particular driver being used.
 | 
			
		||||
Some drivers don't support all the features required in OpenGL 2.1.
 | 
			
		||||
</p>
 | 
			
		||||
<p>
 | 
			
		||||
See the <a href="install.html">Compiling/Installing page</a> for prerequisites
 | 
			
		||||
for DRI hardware acceleration.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>MD5 checksums</h2>
 | 
			
		||||
<pre>
 | 
			
		||||
78422843ea875ad4eac35b9b8584032b  MesaLib-7.9.1.tar.gz
 | 
			
		||||
07dc6cfb5928840b8b9df5bd1b3ae434  MesaLib-7.9.1.tar.bz2
 | 
			
		||||
c8eaea5b3c3d6dee784bd8c2db91c80f  MesaLib-7.9.1.zip
 | 
			
		||||
ee9ecae4ca56fbb2d14dc15e3a0a7640  MesaGLUT-7.9.1.tar.gz
 | 
			
		||||
41fc477d524e7dc5c84da8ef22422bea  MesaGLUT-7.9.1.tar.bz2
 | 
			
		||||
90b287229afdf19317aa989d19462e7a  MesaGLUT-7.9.1.zip
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>New features</h2>
 | 
			
		||||
<p>None.</p>
 | 
			
		||||
 | 
			
		||||
<h2>Bug fixes</h2>
 | 
			
		||||
<p>This list is likely incomplete.</p>
 | 
			
		||||
<ul>
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=28800">Bug 28800</a> - [r300c, r300g] Texture corruption with World of Warcraft</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=29420">Bug 29420</a> - Amnesia / HPL2 RendererFeatTest - not rendering correctly</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=29946">Bug 29946</a> - [swrast] piglit valgrind glsl-array-bounds-04 fails</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=30261">Bug 30261</a> - [GLSL 1.20] allowing inconsistent invariant declaration between two vertex shaders</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=30632">Bug 30632</a> - [softpipe] state_tracker/st_manager.c:489: st_context_notify_invalid_framebuffer: Assertion `stfb && stfb->iface == stfbi' failed.</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=30694">Bug 30694</a> - wincopy will crash on Gallium drivers when going to front buffer</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=30787">Bug 30787</a> - Invalid asm shader does not generate draw-time error when used with GLSL shader</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=30993">Bug 30993</a> - getFramebufferAttachmentParameteriv wrongly generates error</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31101">Bug 31101</a> -  [glsl2] abort() in ir_validate::visit_enter(ir_assignment *ir)</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31193">Bug 31193</a> -  [regression] aa43176e break water reflections</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31194">Bug 31194</a> - The mesa meta save/restore code doesn't ref the current GLSL program</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31371">Bug 31371</a> - glslparsertest: ir.cpp:358: ir_constant::ir_constant(const glsl_type*, const ir_constant_data*): Assertion `(type->base_type >= 0) && (type->base_type <= 3)' failed.</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31439">Bug 31439</a> - Crash in glBufferSubData() with size == 0</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31495">Bug 31495</a> - [i965 gles2c bisected] OpenGL ES 2.0 conformance GL2Tests_GetBIFD_input.run regressed</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31514">Bug 31514</a> - isBuffer returns true for unbound buffers</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31560">Bug 31560</a> - [tdfx] tdfx_tex.c:702: error: ‘const struct gl_color_table’ has no member named ‘Format’</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31617">Bug 31617</a> - Radeon/Compiz: 'failed to attach dri2 front buffer', error case not handled</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31648">Bug 31648</a> -  [GLSL] array-struct-array gets assertion: `(size >= 1) && (size <= 4)' failed.</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31650">Bug 31650</a> - [GLSL] varying gl_TexCoord fails to be re-declared to different size in the second shader</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31673">Bug 31673</a> - GL_FRAGMENT_PRECISION_HIGH preprocessor macro undefined in GLSL ES</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31690">Bug 31690</a> -  i915 shader compiler fails to flatten if in Aquarium webgl demo.</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31832">Bug 31832</a> - [i915] Bad renderbuffer format: 21</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31841">Bug 31841</a> - [drm:radeon_cs_ioctl] *ERROR* Invalid command stream !</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31894">Bug 31894</a> - Writing to gl_PointSize with GLES2 corrupts other varyings</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31909">Bug 31909</a> - [i965] brw_fs.cpp:1461: void fs_visitor::emit_bool_to_cond_code(ir_rvalue*): Assertion `expr->operands[i]->type->is_scalar()' failed.</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31934">Bug 31934</a> - [gallium] Mapping empty buffer object causes SIGSEGV</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31983">Bug 31983</a> -  [i915 gles2] "if (expression with builtin/varying variables) discard" breaks linkage</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31985">Bug 31985</a> - [GLSL 1.20] initialized uniform array considered as "unsized"</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31987">Bug 31987</a> - [gles2] if input a wrong pname(GL_NONE) to glGetBoolean, it will not case GL_INVALID_ENUM</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32035">Bug 32035</a> - [GLSL bisected] comparing unsized array gets segfault</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32070">Bug 32070</a> - llvmpipe renders stencil demo incorrectly</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32273">Bug 32273</a> - assertion fails when starting vdrift 2010 release with shaders enabled</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32287">Bug 32287</a> - [bisected GLSL] float-int failure</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32311">Bug 32311</a> - [965 bisected] Array look-ups broken on GM45</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32520">Bug 32520</a> -  [gles2] glBlendFunc(GL_ZERO, GL_DST_COLOR) will result in GL_INVALID_ENUM</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32825">Bug 32825</a> - egl_glx driver completely broken in 7.9 branch [fix in master]</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>Changes</h2>
 | 
			
		||||
<p>The full set of changes can be viewed by using the following GIT command:</p>
 | 
			
		||||
 | 
			
		||||
<pre>
 | 
			
		||||
  git log mesa-7.9..mesa-7.9.1
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
<p>Alex Deucher (5):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>r100: revalidate after radeon_update_renderbuffers</li>
 | 
			
		||||
  <li>r600c: add missing radeon_prepare_render() call on evergreen</li>
 | 
			
		||||
  <li>r600c: properly align mipmaps to group size</li>
 | 
			
		||||
  <li>gallium/egl: fix r300 vs r600 loading</li>
 | 
			
		||||
  <li>r600c: fix some opcodes on evergreen</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Aras Pranckevicius (2):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>glsl: fix crash in loop analysis when some controls can't be determined</li>
 | 
			
		||||
  <li>glsl: fix matrix type check in ir_algebraic</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Brian Paul (27):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>swrast: fix choose_depth_texture_level() to respect mipmap filtering state</li>
 | 
			
		||||
  <li>st/mesa: replace assertion w/ conditional in framebuffer invalidation</li>
 | 
			
		||||
  <li>egl/i965: include inline_wrapper_sw_helper.h</li>
 | 
			
		||||
  <li>mesa: Add missing else in do_row_3D</li>
 | 
			
		||||
  <li>mesa: add missing formats in _mesa_format_to_type_and_comps()</li>
 | 
			
		||||
  <li>mesa: handle more pixel types in mipmap generation code</li>
 | 
			
		||||
  <li>mesa: make glIsBuffer() return false for never bound buffers</li>
 | 
			
		||||
  <li>mesa: fix glDeleteBuffers() regression</li>
 | 
			
		||||
  <li>swrast: init alpha value to 1.0 in opt_sample_rgb_2d()</li>
 | 
			
		||||
  <li>meta: Mask Stencil.Clear against stencilMax in _mesa_meta_Clear</li>
 | 
			
		||||
  <li>st/mesa: fix mapping of zero-sized buffer objects</li>
 | 
			
		||||
  <li>mesa: check for posix_memalign() errors</li>
 | 
			
		||||
  <li>llvmpipe: fix broken stencil writemask</li>
 | 
			
		||||
  <li>mesa: fix GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME query</li>
 | 
			
		||||
  <li>mesa: return GL_FRAMEBUFFER_DEFAULT as FBO attachment type</li>
 | 
			
		||||
  <li>mesa: make glGet*(GL_NONE) generate GL_INVALID_ENUM</li>
 | 
			
		||||
  <li>mesa: test for cube map completeness in glGenerateMipmap()</li>
 | 
			
		||||
  <li>tnl: Initialize gl_program_machine memory in run_vp.</li>
 | 
			
		||||
  <li>tnl: a better way to initialize the gl_program_machine memory</li>
 | 
			
		||||
  <li>mesa, st/mesa: disable GL_ARB_geometry_shader4</li>
 | 
			
		||||
  <li>glsl: fix off by one in register index assertion</li>
 | 
			
		||||
  <li>st/mesa: fix mipmap generation bug</li>
 | 
			
		||||
  <li>glsl: new glsl_strtod() wrapper to fix decimal point interpretation</li>
 | 
			
		||||
  <li>mesa: no-op glBufferSubData() on size==0</li>
 | 
			
		||||
  <li>tdfx: s/Format/_BaseFormat/</li>
 | 
			
		||||
  <li>st/mesa: fix renderbuffer pointer check in st_Clear()</li>
 | 
			
		||||
  <li>mesa: Bump the number of bits in the register index.</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Chad Versace (5):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>glsl: Fix lexer rule for ^=</li>
 | 
			
		||||
  <li>glsl: Fix ast-to-hir for ARB_fragment_coord_conventions</li>
 | 
			
		||||
  <li>glsl: Fix ir_expression::constant_expression_value()</li>
 | 
			
		||||
  <li>glsl: Fix erroneous cast in ast_jump_statement::hir()</li>
 | 
			
		||||
  <li>glsl: Fix linker bug in cross_validate_globals()</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Chia-I Wu (10):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>targets/egl: Fix linking with libdrm.</li>
 | 
			
		||||
  <li>st/vega: Fix version check in context creation.</li>
 | 
			
		||||
  <li>st/egl: Do not finish a fence that is NULL.</li>
 | 
			
		||||
  <li>egl: Fix a false negative check in _eglCheckMakeCurrent.</li>
 | 
			
		||||
  <li>st/mesa: Unreference the sampler view in st_bind_surface.</li>
 | 
			
		||||
  <li>egl_dri2: Fix __DRI_DRI2 version 1 support.</li>
 | 
			
		||||
  <li>st/vega: Do not wait NULL fences.</li>
 | 
			
		||||
  <li>mesa: Do not advertise GL_OES_texture_3D.</li>
 | 
			
		||||
  <li>egl_glx: Fix borken driver.</li>
 | 
			
		||||
  <li>egl: Check extensions.</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Daniel Lichtenberger (1):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>radeon: fix potential segfault in renderbuffer update</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Daniel Vetter (1):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>r200: revalidate after radeon_update_renderbuffers</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Dave Airlie (1):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>r300g: fixup rs690 tiling stride alignment calculations.</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Eric Anholt (13):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>intel: Allow CopyTexSubImage to InternalFormat 3/4 textures, like RGB/RGBA.</li>
 | 
			
		||||
  <li>glsl: Free the loop state context when we free the loop state.</li>
 | 
			
		||||
  <li>i965: Allow OPCODE_SWZ to put immediates in the first arg.</li>
 | 
			
		||||
  <li>i965: Add support for rendering to SARGB8 FBOs.</li>
 | 
			
		||||
  <li>glsl: Add a helper constructor for expressions that works out result type.</li>
 | 
			
		||||
  <li>glsl: Fix structure and array comparisions.</li>
 | 
			
		||||
  <li>glsl: Quiet unreachable no-return-from-function warning.</li>
 | 
			
		||||
  <li>glsl: Mark the array access for whole-array comparisons.</li>
 | 
			
		||||
  <li>glsl: Fix flipped return of has_value() for array constants.</li>
 | 
			
		||||
  <li>mesa: Add getters for the rest of the supported draw buffers.</li>
 | 
			
		||||
  <li>mesa: Add getters for ARB_copy_buffer's attachment points.</li>
 | 
			
		||||
  <li>i965: Correct the dp_read message descriptor setup on g4x.</li>
 | 
			
		||||
  <li>glsl: Correct the marking of InputsRead/OutputsWritten on in/out matrices.</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Fabian Bieler (1):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>glsl: fix lowering conditional returns in subroutines</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Francisco Jerez (3):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>meta: Don't leak alpha function/reference value changes.</li>
 | 
			
		||||
  <li>meta: Fix incorrect rendering of the bitmap alpha component.</li>
 | 
			
		||||
  <li>meta: Don't try to disable cube maps if the driver doesn't expose the extension.</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Henri Verbeet (2):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>r600: Evergreen has two extra frac_bits for the sampler LOD state.</li>
 | 
			
		||||
  <li>st/mesa: Handle wrapped depth buffers in st_copy_texsubimage().</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Ian Romanick (33):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>Add 7.9 md5sums</li>
 | 
			
		||||
  <li>docs: Import 7.8.x release notes from 7.8 branch.</li>
 | 
			
		||||
  <li>docs: download.html does not need to be updated for each release</li>
 | 
			
		||||
  <li>docs: Update mailing lines from sf.net to freedesktop.org</li>
 | 
			
		||||
  <li>docs: added news item for 7.9 release</li>
 | 
			
		||||
  <li>mesa: Validate assembly shaders when GLSL shaders are used</li>
 | 
			
		||||
  <li>linker: Reject shaders that have unresolved function calls</li>
 | 
			
		||||
  <li>mesa: Refactor validation of shader targets</li>
 | 
			
		||||
  <li>glsl: Slightly change the semantic of _LinkedShaders</li>
 | 
			
		||||
  <li>linker: Improve handling of unread/unwritten shader inputs/outputs</li>
 | 
			
		||||
  <li>glsl: Commit lexer files changed by previous cherry picking</li>
 | 
			
		||||
  <li>mesa: Make metaops use program refcounts instead of names.</li>
 | 
			
		||||
  <li>glsl: Fix incorrect gl_type of sampler2DArray and sampler1DArrayShadow</li>
 | 
			
		||||
  <li>mesa: Allow query of MAX_SAMPLES with EXT_framebuffer_multisample</li>
 | 
			
		||||
  <li>glsl: better handling of linker failures</li>
 | 
			
		||||
  <li>mesa: Fix glGet of ES2's GL_MAX_*_VECTORS properties.</li>
 | 
			
		||||
  <li>i915: Disallow alpha, red, RG, and sRGB as render targets</li>
 | 
			
		||||
  <li>glsl/linker: Free any IR discarded by optimization passes.</li>
 | 
			
		||||
  <li>glsl: Add an optimization pass to simplify discards.</li>
 | 
			
		||||
  <li>glsl: Add a lowering pass to move discards out of if-statements.</li>
 | 
			
		||||
  <li>i915: Correctly generate unconditional KIL instructions</li>
 | 
			
		||||
  <li>glsl: Add unary ir_expression constructor</li>
 | 
			
		||||
  <li>glsl: Ensure that equality comparisons don't return a NULL IR tree</li>
 | 
			
		||||
  <li>glcpp: Commit changes in generated files cause by previous commit</li>
 | 
			
		||||
  <li>glsl: Inherrit type of declared variable from initializer</li>
 | 
			
		||||
  <li>glsl: Inherrit type of declared variable from initializer after processing assignment</li>
 | 
			
		||||
  <li>linker: Ensure that unsized arrays have a size after linking</li>
 | 
			
		||||
  <li>linker: Fix regressions caused by previous commit</li>
 | 
			
		||||
  <li>linker: Allow built-in arrays to have different sizes between shader stages</li>
 | 
			
		||||
  <li>ir_to_mesa: Don't generate swizzles for record derefs of non-scalar/vectors</li>
 | 
			
		||||
  <li>Refresh autogenerated file builtin_function.cpp.</li>
 | 
			
		||||
  <li>docs: Initial set of release notes for 7.9.1</li>
 | 
			
		||||
  <li>mesa: set version string to 7.9.1</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Julien Cristau (1):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>Makefile: don't include the same files twice in the tarball</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Kenneth Graunke (19):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>glcpp: Return NEWLINE token for newlines inside multi-line comments.</li>
 | 
			
		||||
  <li>generate_builtins.py: Output large strings as arrays of characters.</li>
 | 
			
		||||
  <li>glsl: Fix constant component count in vector constructor emitting.</li>
 | 
			
		||||
  <li>ir_dead_functions: Actually free dead functions and signatures.</li>
 | 
			
		||||
  <li>glcpp: Define GL_FRAGMENT_PRECISION_HIGH if GLSL version >= 1.30.</li>
 | 
			
		||||
  <li>glsl: Unconditionally define GL_FRAGMENT_PRECISION_HIGH in ES2 shaders.</li>
 | 
			
		||||
  <li>glsl: Fix constant expression handling for <, >, <=, >= on vectors.</li>
 | 
			
		||||
  <li>glsl: Use do_common_optimization in the standalone compiler.</li>
 | 
			
		||||
  <li>glsl: Don't inline function prototypes.</li>
 | 
			
		||||
  <li>glsl: Add a virtual as_discard() method.</li>
 | 
			
		||||
  <li>glsl: Remove "discard" support from lower_jumps.</li>
 | 
			
		||||
  <li>glsl: Refactor get_num_operands.</li>
 | 
			
		||||
  <li>glcpp: Don't emit SPACE tokens in conditional_tokens production.</li>
 | 
			
		||||
  <li>glsl: Clean up code by adding a new is_break() function.</li>
 | 
			
		||||
  <li>glsl: Consider the "else" branch when looking for loop breaks.</li>
 | 
			
		||||
  <li>Remove OES_compressed_paletted_texture from the ES2 extension list.</li>
 | 
			
		||||
  <li>glsl/builtins: Compute the correct value for smoothstep(vec, vec, vec).</li>
 | 
			
		||||
  <li>Fix build on systems where "python" is python 3.</li>
 | 
			
		||||
  <li>i965: Internally enable GL_NV_blend_square on ES2.</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Kristian Høgsberg (1):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>i965: Don't write mrf assignment for pointsize output</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Luca Barbieri (1):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>glsl: Unroll loops with conditional breaks anywhere (not just the end)</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Marek Olšák (17):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>r300g: fix microtiling for 16-bits-per-channel formats</li>
 | 
			
		||||
  <li>r300g: fix texture border for 16-bits-per-channel formats</li>
 | 
			
		||||
  <li>r300g: add a default channel ordering of texture border for unhandled formats</li>
 | 
			
		||||
  <li>r300g: fix texture border color for all texture formats</li>
 | 
			
		||||
  <li>r300g: fix rendering with no vertex elements</li>
 | 
			
		||||
  <li>r300/compiler: fix rc_rewrite_depth_out for it to work with any instruction</li>
 | 
			
		||||
  <li>r300g: fix texture border color once again</li>
 | 
			
		||||
  <li>r300g: fix texture swizzling with compressed textures on r400-r500</li>
 | 
			
		||||
  <li>r300g: disable ARB_texture_swizzle if S3TC is enabled on r3xx-only</li>
 | 
			
		||||
  <li>mesa, st/mesa: fix gl_FragCoord with FBOs in Gallium</li>
 | 
			
		||||
  <li>st/mesa: initialize key in st_vp_varient</li>
 | 
			
		||||
  <li>r300/compiler: fix swizzle lowering with a presubtract source operand</li>
 | 
			
		||||
  <li>r300g: fix rendering with a vertex attrib having a zero stride</li>
 | 
			
		||||
  <li>ir_to_mesa: Add support for conditional discards.</li>
 | 
			
		||||
  <li>r300g: finally fix the texture corruption on r3xx-r4xx</li>
 | 
			
		||||
  <li>mesa: fix texel store functions for some float formats</li>
 | 
			
		||||
  <li>r300/compiler: disable the rename_regs pass for loops</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Mario Kleiner (1):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>mesa/r300classic: Fix dri2Invalidate/radeon_prepare_render for page flipping.</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Peter Clifton (1):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>intel: Fix emit_linear_blit to use DWORD aligned width blits</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Robert Hooker (2):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>intel: Add a new B43 pci id.</li>
 | 
			
		||||
  <li>egl_dri2: Add missing intel chip ids.</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Roland Scheidegger (1):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>r200: fix r200 large points</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Thomas Hellstrom (17):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>st/xorg: Don't try to use option values before processing options</li>
 | 
			
		||||
  <li>xorg/vmwgfx: Make vmwarectrl work also on 64-bit servers</li>
 | 
			
		||||
  <li>st/xorg: Add a customizer option to get rid of annoying cursor update flicker</li>
 | 
			
		||||
  <li>xorg/vmwgfx: Don't hide HW cursors when updating them</li>
 | 
			
		||||
  <li>st/xorg: Don't try to remove invalid fbs</li>
 | 
			
		||||
  <li>st/xorg: Fix typo</li>
 | 
			
		||||
  <li>st/xorg, xorg/vmwgfx: Be a bit more frendly towards cross-compiling environments</li>
 | 
			
		||||
  <li>st/xorg: Fix compilation errors for Xservers compiled without Composite</li>
 | 
			
		||||
  <li>st/xorg: Don't use deprecated x*alloc / xfree functions</li>
 | 
			
		||||
  <li>xorg/vmwgfx: Don't use deprecated x*alloc / xfree functions</li>
 | 
			
		||||
  <li>st/xorg: Fix compilation for Xservers >= 1.10</li>
 | 
			
		||||
  <li>mesa: Make sure we have the talloc cflags when using the talloc headers</li>
 | 
			
		||||
  <li>egl: Add an include for size_t</li>
 | 
			
		||||
  <li>mesa: Add talloc includes for gles</li>
 | 
			
		||||
  <li>st/egl: Fix build for include files in nonstandard places</li>
 | 
			
		||||
  <li>svga/drm: Optionally resolve calls to powf during link-time</li>
 | 
			
		||||
  <li>gallium/targets: Trivial crosscompiling fix</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Tom Stellard (7):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>r300/compiler: Make sure presubtract sources use supported swizzles</li>
 | 
			
		||||
  <li>r300/compiler: Fix register allocator's handling of loops</li>
 | 
			
		||||
  <li>r300/compiler: Fix instruction scheduling within IF blocks</li>
 | 
			
		||||
  <li>r300/compiler: Use zero as the register index for unused sources</li>
 | 
			
		||||
  <li>r300/compiler: Ignore alpha dest register when replicating the result</li>
 | 
			
		||||
  <li>r300/compiler: Use correct swizzles for all presubtract sources</li>
 | 
			
		||||
  <li>r300/compiler: Don't allow presubtract sources to be remapped twice</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Vinson Lee (1):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>glsl: Fix 'control reaches end of non-void function' warning.</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>richard (1):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>r600c : inline vertex format is not updated in an app, switch to use vfetch constants. For the 7.9 and 7.10 branches as well.</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
</body>
 | 
			
		||||
</html>
 | 
			
		||||
@@ -1,336 +0,0 @@
 | 
			
		||||
<HTML>
 | 
			
		||||
 | 
			
		||||
<head>
 | 
			
		||||
<TITLE>Mesa Release Notes</TITLE>
 | 
			
		||||
<link rel="stylesheet" type="text/css" href="mesa.css">
 | 
			
		||||
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
 | 
			
		||||
</head>
 | 
			
		||||
 | 
			
		||||
<BODY>
 | 
			
		||||
 | 
			
		||||
<body bgcolor="#eeeeee">
 | 
			
		||||
 | 
			
		||||
<H1>Mesa 7.9.2 Release Notes / TBD</H1>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Mesa 7.9.2 is a bug fix release which fixes bugs found since the 7.9.1 release.
 | 
			
		||||
</p>
 | 
			
		||||
<p>
 | 
			
		||||
Mesa 7.9.2 implements the OpenGL 2.1 API, but the version reported by
 | 
			
		||||
glGetString(GL_VERSION) depends on the particular driver being used.
 | 
			
		||||
Some drivers don't support all the features required in OpenGL 2.1.
 | 
			
		||||
</p>
 | 
			
		||||
<p>
 | 
			
		||||
See the <a href="install.html">Compiling/Installing page</a> for prerequisites
 | 
			
		||||
for DRI hardware acceleration.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>MD5 checksums</h2>
 | 
			
		||||
<pre>
 | 
			
		||||
eb4ab8c1a03386def3ea34b1358e9cda  MesaLib-7.9.2.tar.gz
 | 
			
		||||
8f6d1474912787ce13bd35f3bae9938a  MesaLib-7.9.2.tar.bz2
 | 
			
		||||
427a81dd43ac97603768dc5c6af3df26  MesaLib-7.9.2.zip
 | 
			
		||||
aacb8f4db997e346db40c6066942140a  MesaGLUT-7.9.2.tar.gz
 | 
			
		||||
18abe6cff4fad8ad4752c7b7ab548e5d  MesaGLUT-7.9.2.tar.bz2
 | 
			
		||||
3189e5732d636c71baf3d8bc23ce7b11  MesaGLUT-7.9.2.zip
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>New features</h2>
 | 
			
		||||
<p>None.</p>
 | 
			
		||||
 | 
			
		||||
<h2>Bug fixes</h2>
 | 
			
		||||
<p>This list is likely incomplete.</p>
 | 
			
		||||
<ul>
 | 
			
		||||
<li>Fix an off-by-one bug in a vsplit assertion.</li>
 | 
			
		||||
<li>Fix incorrect handling of <tt>layout</tt> qualifier
 | 
			
		||||
with <tt>in</tt>, <tt>out</tt>, <tt>attribute</tt>, and <tt>varying</tt>.</li>
 | 
			
		||||
 | 
			
		||||
<li>Fix an i965 GPU hang in GLSL shaders that contain an unconditional <tt>discard</tt> statement.</li>
 | 
			
		||||
 | 
			
		||||
<li>Fix an i965 shader bug where the negative absolute value was generated instead of the absolute value of a negation.</li>
 | 
			
		||||
 | 
			
		||||
<li>Fix numerous issues handling precision qualifiers in GLSL ES.</li>
 | 
			
		||||
 | 
			
		||||
<li>Fixed a few GLX protocol encoder bugs (Julien Cristau)</li>
 | 
			
		||||
 | 
			
		||||
<li>Assorted Gallium llvmpipe driver bug fixes</li>
 | 
			
		||||
 | 
			
		||||
<li>Assorted Mesa/Gallium state tracker bug fixes</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=26795">Bug 26795</a> - gl_FragCoord off by one in Gallium drivers.</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=29164">Bug 29164</a> - [GLSL 1.20] invariant variable shouldn't be used before declaration</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=29823">Bug 29823</a> - GetUniform[if]v busted</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=29927">Bug 29927</a> - [glsl2] fail to compile shader with constructor for array of struct type</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=30156">Bug 30156</a> - [i965] After updating to Mesa 7.9, Civilization IV starts to show garbage</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31923">Bug 31923</a> - [GLSL 1.20] allowing inconsistent centroid declaration between two vertex shaders</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=31925">Bug 31925</a> - [GLSL 1.20] "#pragma STDGL invariant(all)" fail</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32214">Bug 32214</a> - [gles2]no link error happens when missing vertex shader or frag shader</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32375">Bug 32375</a> - [gl gles2] Not able to get the attribute by function glGetVertexAttribfv</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32541">Bug 32541</a> - Segmentation Fault while running an HDR (high dynamic range) rendering demo</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32569">Bug 32569</a> - [gles2] glGetShaderPrecisionFormat not implemented yet</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32695">Bug 32695</a> - [glsl] SIGSEGV glcpp/glcpp-parse.y:833</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32831">Bug 32831</a> - [glsl] division by zero crashes GLSL compiler</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=32910">Bug 32910</a> - Keywords 'in' and 'out' not handled properly for GLSL 1.20 shaders</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=33219">Bug 33219</a> -[GLSL bisected] implicit sized array triggers segfault in ir_to_mesa_visitor::copy_propagate</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=33306">Bug 33306</a> - GLSL integer division by zero crashes GLSL compiler</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=33308">Bug 33308</a> -[glsl] ast_to_hir.cpp:3016: virtual ir_rvalue* ast_jump_statement::hir(exec_list*, _mesa_glsl_parse_state*): Assertion `ret != __null' failed.</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=33316">Bug 33316</a> - uniform array will be allocate one line more and initialize it when it was freed will abort</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=33386">Bug 33386</a> - Dubious assembler in read_rgba_span_x86.S</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=33388">Bug 33388</a> - Dubious assembler in xform4.S</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=33433">Bug 33433</a> - Error in x86-64 API dispatch code.</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=33507">Bug 33507</a> - [glsl] GLSL preprocessor modulus by zero crash</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=33508">Bug 33508</a> - [glsl] GLSL compiler modulus by zero crash</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=33916">Bug 33916</a> - Compiler accepts reserved operators % and %=</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=34047">Bug 34047</a> - Assert in _tnl_import_array() when using GLfixed vertex datatypes with GLESv2</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=34114">Bug 34114</a> - Sun Studio build fails due to standard library functions not being in global namespace</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=34198">Bug 34198</a> - [GLSL] implicit sized array with index 0 used gets assertion</li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.launchpad.net/ubuntu/+source/mesa/+bug/691653">Ubuntu bug 691653</a> - compiz crashes when using alt-tab (the radeon driver kills it) </li>
 | 
			
		||||
 | 
			
		||||
<li><a href="https://bugs.meego.com/show_bug.cgi?id=13005">Meego bug 13005</a> - Graphics GLSL issue lead to camera preview fail on Pinetrail</li>
 | 
			
		||||
 | 
			
		||||
<!-- <li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=">Bug </a> - </li> -->
 | 
			
		||||
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>Changes</h2>
 | 
			
		||||
<p>The full set of changes can be viewed by using the following GIT command:</p>
 | 
			
		||||
 | 
			
		||||
<pre>
 | 
			
		||||
  git log mesa-7.9.1..mesa-7.9.2
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
<p>Alberto Milone (1):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>r600c: add evergreen ARL support.</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Brian Paul (19):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>draw: Fix an off-by-one bug in a vsplit assertion.</li>
 | 
			
		||||
  <li>mesa: fix a few format table mistakes, assertions</li>
 | 
			
		||||
  <li>mesa: fix num_draw_buffers==0 in fixed-function fragment program generation</li>
 | 
			
		||||
  <li>mesa: don't assert in GetIntegerIndexed, etc</li>
 | 
			
		||||
  <li>mesa: check for dummy renderbuffer in _mesa_FramebufferRenderbufferEXT()</li>
 | 
			
		||||
  <li>llvmpipe: make sure binning is active when we begin/end a query</li>
 | 
			
		||||
  <li>st/mesa: fix incorrect fragcoord.x translation</li>
 | 
			
		||||
  <li>softpipe: fix off-by-one error in setup_fragcoord_coeff()</li>
 | 
			
		||||
  <li>cso: fix loop bound in cso_set_vertex_samplers()</li>
 | 
			
		||||
  <li>st/mesa: set renderbuffer _BaseFormat in a few places</li>
 | 
			
		||||
  <li>st/mesa: fix the default case in st_format_datatype()</li>
 | 
			
		||||
  <li>st/mesa: need to translate clear color according to surface's base format</li>
 | 
			
		||||
  <li>docs: update 7.9.2 release notes with Brian's cherry-picks</li>
 | 
			
		||||
  <li>docs: add links to 7.9.1 and 7.9.2 release notes</li>
 | 
			
		||||
  <li>mesa: include compiler.h for ASSERT macro</li>
 | 
			
		||||
  <li>glsl: add ir_shader case in switch stmt to silence warning</li>
 | 
			
		||||
  <li>glsl2: fix signed/unsigned comparison warning</li>
 | 
			
		||||
  <li>mesa: implement glGetShaderPrecisionFormat()</li>
 | 
			
		||||
  <li>docs: updated environment variable list</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Bryce Harrington (1):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>r300g: Null pointer check for buffer deref in gallium winsys</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Chad Versace (14):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>glsl: At link-time, check that globals have matching centroid qualifiers</li>
 | 
			
		||||
  <li>glcpp: Fix segfault when validating macro redefinitions</li>
 | 
			
		||||
  <li>glsl: Fix parser rule for type_specifier</li>
 | 
			
		||||
  <li>glsl: Change default value of ast_type_specifier::precision</li>
 | 
			
		||||
  <li>glsl: Add semantic checks for precision qualifiers</li>
 | 
			
		||||
  <li>glsl: Add support for default precision statements</li>
 | 
			
		||||
  <li>glsl: Remove redundant semantic check in parser</li>
 | 
			
		||||
  <li>glsl: Fix semantic checks on precision qualifiers</li>
 | 
			
		||||
  <li>glsl: Fix segfault due to missing printf argument</li>
 | 
			
		||||
  <li>glsl: Mark 'in' variables at global scope as read-only</li>
 | 
			
		||||
  <li>glcpp: Raise error when modulus is zero</li>
 | 
			
		||||
  <li>glsl: Set operators '%' and '%=' to be reserved when GLSL < 1.30</li>
 | 
			
		||||
  <li>glsl: Reinstate constant-folding for division by zero</li>
 | 
			
		||||
  <li>tnl: Add support for datatype GL_FIXED in vertex arrays</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Chia-I Wu (1):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>mesa: Add glDepthRangef and glClearDepthf to APIspec.xml.</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Chris Wilson (1):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>intel: Check for unsupported texture when finishing using as a render target</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Cyril Brulebois (1):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>Point to bugs.freedesktop.org rather than bugzilla.freedesktop.org</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Dave Airlie (2):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>radeon/r200: fix fbo-clearmipmap + gen-teximage</li>
 | 
			
		||||
  <li>radeon: avoid segfault on 3D textures.</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Dimitry Andric (4):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>mesa: s/movzx/movzbl/</li>
 | 
			
		||||
  <li>mesa: s/movzxw/movzwl/ in read_rgba_span_x86.S</li>
 | 
			
		||||
  <li>glapi: adding @ char before type specifier in glapi_x86.S</li>
 | 
			
		||||
  <li>glapi: add @GOTPCREL relocation type</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Eric Anholt (11):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>i965: Avoid double-negation of immediate values in the VS.</li>
 | 
			
		||||
  <li>docs: Add a relnote for the Civ IV on i965.</li>
 | 
			
		||||
  <li>i965/vs: When MOVing to produce ABS, strip negate of the operand.</li>
 | 
			
		||||
  <li>glsl: Fix the lowering of variable array indexing to not lose write_masks.</li>
 | 
			
		||||
  <li>intel: Make renderbuffer tiling choice match texture tiling choice.</li>
 | 
			
		||||
  <li>glapi: Add entrypoints and enums for GL_ARB_ES2_compatibility.</li>
 | 
			
		||||
  <li>mesa: Add extension enable bit for GL_ARB_ES2_compatibility.</li>
 | 
			
		||||
  <li>mesa: Add actual support for glReleaseShaderCompiler from ES2.</li>
 | 
			
		||||
  <li>mesa: Add support for glDepthRangef and glClearDepthf.</li>
 | 
			
		||||
  <li>mesa: Add getters for ARB_ES2_compatibility MAX_*_VECTORS.</li>
 | 
			
		||||
  <li>mesa: Add getter for GL_SHADER_COMPILER with ARB_ES2_compatibility.</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Ian Romanick (42):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>docs: Add 7.9.1 md5sums</li>
 | 
			
		||||
  <li>glsl: Support the 'invariant(all)' pragma</li>
 | 
			
		||||
  <li>glcpp: Generate an error for division by zero</li>
 | 
			
		||||
  <li>glsl: Add version_string containing properly formatted GLSL version</li>
 | 
			
		||||
  <li>glsl & glcpp: Refresh autogenerated lexer and parser files.</li>
 | 
			
		||||
  <li>glsl: Disallow 'in' and 'out' on globals in GLSL 1.20</li>
 | 
			
		||||
  <li>glsl: Track variable usage, use that to enforce semantics</li>
 | 
			
		||||
  <li>glsl: Allow 'in' and 'out' when 'layout' is also available</li>
 | 
			
		||||
  <li>docs: Initial set of release notes for 7.9.2</li>
 | 
			
		||||
  <li>mesa: bump version to 7.9.2-devel</li>
 | 
			
		||||
  <li>docs: Update 7.9.2 release notes</li>
 | 
			
		||||
  <li>i965: Make OPCODE_KIL_NV do its work in a temp, not the null reg!</li>
 | 
			
		||||
  <li>glsl: Refresh autogenerated lexer and parser files.</li>
 | 
			
		||||
  <li>glsl: Don't assert when the value returned by a function has no rvalue</li>
 | 
			
		||||
  <li>linker: Set sizes for non-global arrays as well</li>
 | 
			
		||||
  <li>linker: Propagate max_array_access while linking functions</li>
 | 
			
		||||
  <li>docs: Update 7.9.2 release notes</li>
 | 
			
		||||
  <li>Use C-style system headers in C++ code to avoid issues with std:: namespace</li>
 | 
			
		||||
  <li>mesa: glGetUniform only returns a single element of an array</li>
 | 
			
		||||
  <li>linker: Generate link errors when ES shaders are missing stages</li>
 | 
			
		||||
  <li>mesa: Fix error checks in GetVertexAttrib functions</li>
 | 
			
		||||
  <li>docs: Update 7.9.2 release notes</li>
 | 
			
		||||
  <li>mesa: Remove unsupported OES extensions</li>
 | 
			
		||||
  <li>glapi: Regenerate for GL_ARB_ES2_compatibility.</li>
 | 
			
		||||
  <li>mesa: Connect glGetShaderPrecisionFormat into the dispatch table</li>
 | 
			
		||||
  <li>i965: Set correct values for range/precision of fragment shader types</li>
 | 
			
		||||
  <li>i915: Set correct values for range/precision of fragment shader types</li>
 | 
			
		||||
  <li>intel: Fix typeos from 3d028024 and 790ff232</li>
 | 
			
		||||
  <li>glsl: Ensure that all GLSL versions are supported in the stand-alone compiler</li>
 | 
			
		||||
  <li>glsl: Reject shader versions not supported by the implementation</li>
 | 
			
		||||
  <li>mesa: Initial size for secondary color array is 3</li>
 | 
			
		||||
  <li>glcpp: Regenerate files from recent cherry picks</li>
 | 
			
		||||
  <li>glsl: Finish out the reduce/reduce error fixes</li>
 | 
			
		||||
  <li>glsl: Regenerate compiler files from cherry picks</li>
 | 
			
		||||
  <li>linker: Fix off-by-one error implicit array sizing</li>
 | 
			
		||||
  <li>i915: Only mark a register as available if all components are written</li>
 | 
			
		||||
  <li>i915: Calculate partial result to temp register first</li>
 | 
			
		||||
  <li>i915: Force lowering of all types of indirect array accesses in the FS</li>
 | 
			
		||||
  <li>docs: Update 7.9.2 release notes for recent cherry picks</li>
 | 
			
		||||
  <li>docs: Clean up bug fixes list</li>
 | 
			
		||||
  <li>intel: Remove driver date and related bits from renderer string</li>
 | 
			
		||||
  <li>mesa: set version string to 7.9.2 (final)</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Jian Zhao (1):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>mesa: fix an error in uniform arrays in row calculating.</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Julien Cristau (3):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>glx: fix request lengths</li>
 | 
			
		||||
  <li>glx: fix GLXChangeDrawableAttributesSGIX request</li>
 | 
			
		||||
  <li>glx: fix length of GLXGetFBConfigsSGIX</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Keith Packard (1):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>glsl: Eliminate reduce/reduce conflicts in glsl grammar</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Kenneth Graunke (12):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>glsl: Expose a public glsl_type::void_type const pointer.</li>
 | 
			
		||||
  <li>glsl: Don't bother unsetting a destructor that was never set.</li>
 | 
			
		||||
  <li>glsl, i965: Remove unnecessary talloc includes.</li>
 | 
			
		||||
  <li>glcpp: Remove use of talloc reference counting.</li>
 | 
			
		||||
  <li>ralloc: Add a fake implementation of ralloc based on talloc.</li>
 | 
			
		||||
  <li>Convert everything from the talloc API to the ralloc API.</li>
 | 
			
		||||
  <li>ralloc: a new MIT-licensed recursive memory allocator.</li>
 | 
			
		||||
  <li>Remove talloc from the make and automake build systems.</li>
 | 
			
		||||
  <li>Remove talloc from the SCons build system.</li>
 | 
			
		||||
  <li>Remove the talloc sources from the Mesa repository.</li>
 | 
			
		||||
  <li>glsl: Fix use of uninitialized values in _mesa_glsl_parse_state ctor.</li>
 | 
			
		||||
  <li>glsl: Use reralloc instead of plain realloc.</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Marek Olšák (3):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>docs: fix messed up names with special characters in relnotes-7.9.1</li>
 | 
			
		||||
  <li>mesa: fix texture3D mipmap generation for UNSIGNED_BYTE_3_3_2</li>
 | 
			
		||||
  <li>st/dri: Track drawable context bindings</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Paulo Zanoni (1):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>dri_util: fail driCreateNewScreen if InitScreen is NULL</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Sam Hocevar (2):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>docs: add glsl info</li>
 | 
			
		||||
  <li>docs: fix glsl_compiler name</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>Vinson Lee (1):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>ralloc: Add missing va_end following va_copy.</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
 | 
			
		||||
<p>nobled (1):
 | 
			
		||||
<ul>
 | 
			
		||||
  <li>glx: Put null check before use</li>
 | 
			
		||||
</ul></p>
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
</body>
 | 
			
		||||
</html>
 | 
			
		||||
@@ -1,137 +0,0 @@
 | 
			
		||||
<HTML>
 | 
			
		||||
 | 
			
		||||
<TITLE>Mesa Release Notes</TITLE>
 | 
			
		||||
 | 
			
		||||
<head><link rel="stylesheet" type="text/css" href="mesa.css"></head>
 | 
			
		||||
 | 
			
		||||
<BODY>
 | 
			
		||||
 | 
			
		||||
<body bgcolor="#eeeeee">
 | 
			
		||||
 | 
			
		||||
<H1>Mesa 7.9 Release Notes / October 4, 2010</H1>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Mesa 7.9 is a new development release.
 | 
			
		||||
People who are concerned with stability and reliability should stick
 | 
			
		||||
with a previous release or wait for Mesa 7.9.1.
 | 
			
		||||
</p>
 | 
			
		||||
<p>
 | 
			
		||||
Mesa 7.9 implements the OpenGL 2.1 API, but the version reported by
 | 
			
		||||
glGetString(GL_VERSION) depends on the particular driver being used.
 | 
			
		||||
Some drivers don't support all the features required in OpenGL 2.1.
 | 
			
		||||
</p>
 | 
			
		||||
<p>
 | 
			
		||||
See the <a href="install.html">Compiling/Installing page</a> for prerequisites
 | 
			
		||||
for DRI hardware acceleration.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>MD5 checksums</h2>
 | 
			
		||||
<pre>
 | 
			
		||||
ed65ab425b25895c7f473d0a5e6e64f8  MesaLib-7.9.tar.gz
 | 
			
		||||
82c740c49d572baa6da2b1a1eee90bca  MesaLib-7.9.tar.bz2
 | 
			
		||||
cd2b6ecec759b0457475e94bbb38fedb  MesaLib-7.9.zip
 | 
			
		||||
7b54af9fb9b1f6a1a65db2520f50848f  MesaGLUT-7.9.tar.gz
 | 
			
		||||
20d07419d1929f833fdb36bced290ad5  MesaGLUT-7.9.tar.bz2
 | 
			
		||||
62a7edecd7c92675cd6029b05217eb0a  MesaGLUT-7.9.zip
 | 
			
		||||
</pre>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>New features</h2>
 | 
			
		||||
<ul>
 | 
			
		||||
<li>New, improved GLSL compiler written by Intel.
 | 
			
		||||
    See the <a href="shading.html"> Shading Language</a> page for
 | 
			
		||||
    more information.
 | 
			
		||||
<li>New, very experimental Gallium driver for R600-R700 Radeons.
 | 
			
		||||
<li>Support for AMD Evergreen-based Radeons (HD 5xxx)
 | 
			
		||||
<li>GL_EXT_timer_query extension (i965 driver and softpipe only)
 | 
			
		||||
<li>GL_EXT_framebuffer_multisample extension (intel drivers, MAX_SAMPLES = 1)
 | 
			
		||||
<li>GL_ARB_texture_swizzle extension (alias of GL_EXT_texture_swizzle)
 | 
			
		||||
<li>GL_ARB_draw_elements_base_vertex, GL_ARB_fragment_program_shadow,
 | 
			
		||||
    GL_ARB_window_pos, GL_EXT_gpu_program_parameters,
 | 
			
		||||
    GL_ATI_texture_env_combine3, GL_MESA_pack_invert, and GL_OES_EGL_image
 | 
			
		||||
    extensions in Gallium drivers
 | 
			
		||||
<li>GL_ARB_depth_clamp and GL_NV_depth_clamp extensions (in nv50 and r600
 | 
			
		||||
    Gallium drivers)
 | 
			
		||||
<li>GL_ARB_half_float_vertex extension (in nvfx, r300, r600, softpipe,
 | 
			
		||||
    and llvmpipe Gallium drivers)
 | 
			
		||||
<li>GL_EXT_draw_buffers2 (in nv50, r600, softpipe, and llvmpipe Gallium
 | 
			
		||||
    drivers)
 | 
			
		||||
<li>GL_EXT_texture_swizzle (in nvfx, r300, r600, softpipe, and llvmpipe
 | 
			
		||||
    Gallium drivers)
 | 
			
		||||
<li>GL_ATI_texture_mirror_once (in nvfx, nv50, r300, r600, softpipe, and
 | 
			
		||||
    llvmpipe Gallium drivers)
 | 
			
		||||
<li>GL_NV_conditional_render (in r300 Gallium driver)
 | 
			
		||||
<li>Initial "signs of life" support for Sandybridge hardware in i965 DRI
 | 
			
		||||
    driver.
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>Bug fixes</h2>
 | 
			
		||||
<p>This list is likely incomplete.</p>
 | 
			
		||||
<ul>
 | 
			
		||||
<li>Massive improvements to the Gallium driver for R300-R500 Radeons; this
 | 
			
		||||
    driver is now considered stable for use as a DRI (OpenGL) driver.
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=10908">Bug 10908</a> - GLSL: gl_FogParamaters gl_Fog built-in uniform not functioning</li>
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=13753">Bug 13753</a> - Numerous bugs in GLSL uniform handling</li>
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=16854">Bug 16854</a> - GLSL function call at global scope causes SEGV</li>
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=16856">Bug 16856</a> - GLSL indexing of unsized array results in assertion failure</li>
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=18659">Bug 18659</a> - Crash in shader/slang/slang_codegen.c _slang_gen_function_call_name()</li>
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=19089">Bug 19089</a> - [GLSL] glsl1/shadow2D() cases fail</li>
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=22622">Bug 22622</a> - [GM965 GLSL] noise*() cause GPU lockup</li>
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=23743">Bug 23743</a> - For loop from 0 to 0 not optimized out</li>
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=24553">Bug 24553</a> - shader compilation times explode when using more () pairs</li>
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=25664">Bug 25664</a> - [GLSL] re-declaring an empty array fails to compile</li>
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=25769">Bug 25769</a> - [GLSL] "float" can be implicitly converted to "int"</li>
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=25808">Bug 25808</a> - [GLSL] const variable is modified successfully</li>
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=25826">Bug 25826</a> - [GLSL] declaring an unsized array then re-declaring with a size fails</li>
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=25827">Bug 25827</a> - [GLSL] vector constructor accepts too many arguments successfully</li>
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=25829">Bug 25829</a> - [GLSL] allowing non-void function without returning value</li>
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=25830">Bug 25830</a> - [GLSL] allowing non-constant-expression as const declaration initializer</li>
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=25877">Bug 25877</a> - [GLSL 1.10] implicit conversion from "int" to "float" should not be allowed</li>
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=25878">Bug 25878</a> - [GLSL] sampler is converted to int successfully</li>
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=25994">Bug 25994</a> - [GM45][GLSL] 'return' statement in vertex shader unsupported</li>
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=25999">Bug 25999</a> - [GLSL] embedded structure constructor fails to compile</li>
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=26000">Bug 26000</a> - [GLSL] allowing different parameter qualifier between the function definition and declaration</li>
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=26001">Bug 26001</a> - [GLSL 1.10] constructing matrix from matrix succeeds</li>
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=26224">Bug 26224</a> - [GLSL] Cannot get location of a uniform struct member</li>
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=26990">Bug 26990</a> - [GLSL] variable declaration in "while" fails to compile</li>
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=27004">Bug 27004</a> - [GLSL] allowing macro redefinition</li>
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=27060">Bug 27060</a> - [965] piglit glsl-fs-raytrace failure due to lack of function calls.</li>
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=27216">Bug 27216</a> - Assignment with a function call in an if statement causes an assertion failure</li>
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=27261">Bug 27261</a> - GLSL Compiler fails on the following vertex shader</li>
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=27265">Bug 27265</a> - GLSL Compiler doesnt link the attached vertex shader</li>
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=27388">Bug 27388</a> - [i965] piglit glsl-vs-arrays failure</li>
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=27403">Bug 27403</a> - GLSL struct causing "Invalid src register file ..." error</li>
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=27914">Bug 27914</a> - GLSL compiler uses MUL+ADD where it could use MAD</li>
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=28055">Bug 28055</a> - glsl-texcoord-array fails GLSL compilation</li>
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=28374">Bug 28374</a> - SIGSEGV shader/slang/slang_typeinfo.c:534</li>
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=28748">Bug 28748</a> - [i965] uninlined function calls support</li>
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=28833">Bug 28833</a> - piglit/shaders/glsl-texcoord-array fail</li>
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=28834">Bug 28834</a> - Add support for system fpclassify to GL_OES_query_matrix function for OpenBSD / NetBSD</li>
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=28837">Bug 28837</a> - varying vec4 index support</li>
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=28845">Bug 28845</a> - The GLU tesselator code has some warnings</li>
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=28889">Bug 28889</a> - [regression] wine game crash</li>
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=28894">Bug 28894</a> - slang build fails if absolute path contains spaces</li>
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=28913">Bug 28913</a> - [GLSL] allowing two version statements</li>
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=28931">Bug 28931</a> - Floating Point Exception in Warzone2100 Trunk version</li>
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=28966">Bug 28966</a> - [r300g] Dynamic branching 3 demo does not run</li>
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=28967">Bug 28967</a> - slang/slang_emit.c:350: storage_to_src_reg: Assertion `index >= 0' failed.</li>
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=29013">Bug 29013</a> - [r300g] translate_rgb_op: unknown opcode ILLEGAL OPCODE</li>
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=29020">Bug 29020</a> - [r300g] Wine d3d9 tests hardlock</li>
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=29910">Bug 29910</a> - Mesa advertises bogus GL_ARB_shading_language_120</li>
 | 
			
		||||
<li><a href="https://bugs.freedesktop.org/show_bug.cgi?id=30196">Bug 30196</a> - [GLSL] gl_TextureMatrix{Inverse,Transpose,InverseTranspose} unsupported</li>
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<h2>Changes</h2>
 | 
			
		||||
<ul>
 | 
			
		||||
<li>The Mesa demo/test programs have been moved into a separate git
 | 
			
		||||
repository.
 | 
			
		||||
<li>GL/glext.h file upgraded to version 64
 | 
			
		||||
<li>GL/glxext.h file upgraded to version 32
 | 
			
		||||
<li>GL/wglext.h file upgraded to version 22
 | 
			
		||||
</ul>
 | 
			
		||||
 | 
			
		||||
</body>
 | 
			
		||||
</html>
 | 
			
		||||
@@ -13,20 +13,6 @@ The release notes summarize what's new or changed in each Mesa release.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<UL>
 | 
			
		||||
<LI><A HREF="relnotes-7.11.html">7.11 release notes</A>
 | 
			
		||||
<LI><A HREF="relnotes-7.10.3.html">7.10.3 release notes</A>
 | 
			
		||||
<LI><A HREF="relnotes-7.10.2.html">7.10.2 release notes</A>
 | 
			
		||||
<LI><A HREF="relnotes-7.10.1.html">7.10.1 release notes</A>
 | 
			
		||||
<LI><A HREF="relnotes-7.10.html">7.10 release notes</A>
 | 
			
		||||
<LI><A HREF="relnotes-7.9.2.html">7.9.2 release notes</A>
 | 
			
		||||
<LI><A HREF="relnotes-7.9.1.html">7.9.1 release notes</A>
 | 
			
		||||
<LI><A HREF="relnotes-7.9.html">7.9 release notes</A>
 | 
			
		||||
<LI><A HREF="relnotes-7.8.3.html">7.8.3 release notes</A>
 | 
			
		||||
<LI><A HREF="relnotes-7.8.2.html">7.8.2 release notes</A>
 | 
			
		||||
<LI><A HREF="relnotes-7.8.1.html">7.8.1 release notes</A>
 | 
			
		||||
<LI><A HREF="relnotes-7.8.html">7.8 release notes</A>
 | 
			
		||||
<LI><A HREF="relnotes-7.7.1.html">7.7.1 release notes</A>
 | 
			
		||||
<LI><A HREF="relnotes-7.7.html">7.7 release notes</A>
 | 
			
		||||
<LI><A HREF="relnotes-7.6.1.html">7.6.1 release notes</A>
 | 
			
		||||
<LI><A HREF="relnotes-7.6.html">7.6 release notes</A>
 | 
			
		||||
<LI><A HREF="relnotes-7.5.2.html">7.5.2 release notes</A>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
<HTML>
 | 
			
		||||
 | 
			
		||||
<TITLE>Code Repository</TITLE>
 | 
			
		||||
<TITLE>Cocd Repository</TITLE>
 | 
			
		||||
 | 
			
		||||
<link rel="stylesheet" type="text/css" href="mesa.css"></head>
 | 
			
		||||
 | 
			
		||||
@@ -9,8 +9,11 @@
 | 
			
		||||
<h1>Code Repository</h1>
 | 
			
		||||
 | 
			
		||||
<p>
 | 
			
		||||
Mesa uses <a href="http://git.or.cz/"target="_parent">git</a>
 | 
			
		||||
As of December 5, 2006, Mesa is using
 | 
			
		||||
<a href="http://git.or.cz/"target="_parent">git</a>
 | 
			
		||||
as its source code management system.
 | 
			
		||||
CVS was used previously.
 | 
			
		||||
The old CVS repository should no longer be used.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
The master git repository is hosted on
 | 
			
		||||
@@ -27,9 +30,7 @@ You may access the repository either as an
 | 
			
		||||
<p>
 | 
			
		||||
You may also 
 | 
			
		||||
<a href="http://gitweb.freedesktop.org/?p=mesa/mesa.git"
 | 
			
		||||
target="_parent">browse the main Mesa git repository</a> and the
 | 
			
		||||
<a href="http://cgit.freedesktop.org/mesa/demos"
 | 
			
		||||
target="_parent">Mesa demos and tests git repository</a>.
 | 
			
		||||
target="_parent">browse the git repository</a>.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -50,10 +51,6 @@ To get the Mesa sources anonymously (read-only):
 | 
			
		||||
    <pre>
 | 
			
		||||
    git pull origin
 | 
			
		||||
    </pre>
 | 
			
		||||
<li>If you also want the Mesa demos/tests repository:
 | 
			
		||||
    <pre>
 | 
			
		||||
    git clone git://anongit.freedesktop.org/git/mesa/demos
 | 
			
		||||
    </pre>
 | 
			
		||||
</ol>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -85,10 +82,6 @@ Once your account is established:
 | 
			
		||||
    <pre>
 | 
			
		||||
    git pull origin
 | 
			
		||||
    </pre>
 | 
			
		||||
<li>If you also want the Mesa demos/tests repository:
 | 
			
		||||
    <pre>
 | 
			
		||||
    git clone git+ssh://username@git.freedesktop.org/git/mesa/demos
 | 
			
		||||
    </pre>
 | 
			
		||||
</ol>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -132,83 +125,6 @@ Questions about branch status/activity should be posted to the
 | 
			
		||||
mesa3d-dev mailing list.
 | 
			
		||||
</p>
 | 
			
		||||
 | 
			
		||||
<H2>Developer Git Tips</H2>
 | 
			
		||||
 | 
			
		||||
<ol>
 | 
			
		||||
<li>Setting up to edit the master branch
 | 
			
		||||
<p>
 | 
			
		||||
If you try to do a pull by just saying<code> git pull </code>
 | 
			
		||||
and git complains that you have not specified a
 | 
			
		||||
branch, try:
 | 
			
		||||
<pre>
 | 
			
		||||
    git config branch.master.remote origin
 | 
			
		||||
    git config branch.master.merge master
 | 
			
		||||
</pre>
 | 
			
		||||
Otherwise, you have to say<code> git pull origin master </code>
 | 
			
		||||
each time you do a pull.
 | 
			
		||||
</p>
 | 
			
		||||
<li>Small changes to master
 | 
			
		||||
<p>
 | 
			
		||||
If you are an experienced git user working on substancial modifications,
 | 
			
		||||
you are probably
 | 
			
		||||
working on a separate branch and would rebase your branch prior to
 | 
			
		||||
merging with master.
 | 
			
		||||
But for small changes to the master branch itself,
 | 
			
		||||
you also need to use the rebase feature in order to avoid an
 | 
			
		||||
unnecessary and distracting branch in master.
 | 
			
		||||
</p>
 | 
			
		||||
<p>
 | 
			
		||||
If it has been awhile since you've done the initial clone, try
 | 
			
		||||
<pre>
 | 
			
		||||
    git pull
 | 
			
		||||
</pre>
 | 
			
		||||
to get the latest files before you start working.
 | 
			
		||||
</p>
 | 
			
		||||
<p>
 | 
			
		||||
Make your changes and use
 | 
			
		||||
<pre>
 | 
			
		||||
    git add <files to commit>
 | 
			
		||||
    git commit
 | 
			
		||||
</pre>
 | 
			
		||||
to get your changes ready to push back into the fd.o repository.
 | 
			
		||||
</p>
 | 
			
		||||
<p>
 | 
			
		||||
It is possible (and likely) that someone has changed master since
 | 
			
		||||
you did your last pull.  Even if your changes do not conflict with
 | 
			
		||||
their changes, git will make a fast-forward 
 | 
			
		||||
merge branch, branching from the point in time
 | 
			
		||||
where you did your last pull and merging it to a point after the other changes.
 | 
			
		||||
</p>
 | 
			
		||||
<p>
 | 
			
		||||
To avoid this, 
 | 
			
		||||
<pre>
 | 
			
		||||
    git pull --rebase
 | 
			
		||||
    git push
 | 
			
		||||
</pre>
 | 
			
		||||
If you are familiar with CVS or similar system, this is similar to doing a
 | 
			
		||||
<code> cvs update </code> in order to update your source tree to
 | 
			
		||||
the current repository state, instead of the time you did the last update.
 | 
			
		||||
(CVS doesn't work like git in this respect, but this is easiest way
 | 
			
		||||
to explain it.)
 | 
			
		||||
</br>
 | 
			
		||||
In any case, your repository now looks like you made your changes after
 | 
			
		||||
all the other changes.
 | 
			
		||||
</p>
 | 
			
		||||
<p>
 | 
			
		||||
If the rebase resulted in conflicts or changes that could affect
 | 
			
		||||
the proper operation of your changes, you'll need to investigate
 | 
			
		||||
those before doing the push.
 | 
			
		||||
</p>
 | 
			
		||||
<p>
 | 
			
		||||
If you want the rebase action to be the default action, then
 | 
			
		||||
<pre>
 | 
			
		||||
    git config branch.master.rebase true
 | 
			
		||||
    git config --global branch.autosetuprebase=always
 | 
			
		||||
</pre>
 | 
			
		||||
<p>
 | 
			
		||||
See <a href="http://www.eecs.harvard.edu/~cduan/technical/git/" target="_parent">Understanding Git Conceptually</a> for a fairly clear explanation about all of this.
 | 
			
		||||
</p>
 | 
			
		||||
</ol>
 | 
			
		||||
 | 
			
		||||
</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