Makefile | 12 configs/autoconf.in | 8 configs/default | 8 configure.ac | 23 debian/changelog | 8 debian/patches/01_fix-installdir.patch | 380 - debian/patches/04_osmesa_version.diff | 27 debian/patches/series | 1 docs/install.html | 17 docs/relnotes-7.1.html | 7 src/egl/drivers/demo/Makefile | 5 src/egl/drivers/dri/Makefile | 3 src/egl/main/Makefile | 3 src/glu/Makefile | 12 src/glu/glu.pc.in | 4 src/glu/mesa/Makefile | 2 src/glu/sgi/Makefile | 2 src/glut/beos/Makefile | 6 src/glut/directfb/Makefile | 2 src/glut/fbdev/Makefile | 10 src/glut/ggi/Makefile | 2 src/glut/glx/Makefile | 18 src/glut/glx/glut.pc.in | 4 src/glut/mini/Makefile | 19 src/glut/mini/glut.pc.in | 4 src/glw/Makefile | 19 src/glw/glw.pc.in | 4 src/glx/mini/Makefile | 2 src/glx/x11/.gitignore | 1 src/glx/x11/Makefile | 2 src/glx/x11/dri2_glx.c | 2 src/glx/x11/dri_common.c | 4 src/glx/x11/dri_common.h | 2 src/glx/x11/dri_glx.c | 2 src/glx/x11/drisw_glx.c | 2 src/glx/x11/glxext.c | 11 src/mesa/Makefile | 24 src/mesa/drivers/beos/Makefile | 5 src/mesa/drivers/directfb/Makefile | 2 src/mesa/drivers/dri/Makefile | 16 src/mesa/drivers/dri/Makefile.template | 2 src/mesa/drivers/dri/common/extension_helper.h | 32 src/mesa/drivers/dri/dri.pc.in | 4 src/mesa/drivers/dri/i915/i915_texstate.c | 11 src/mesa/drivers/dri/i965/brw_clip_line.c | 2 src/mesa/drivers/dri/i965/brw_clip_state.c | 2 src/mesa/drivers/dri/i965/brw_clip_tri.c | 2 src/mesa/drivers/dri/i965/brw_context.c | 2 src/mesa/drivers/dri/i965/brw_defines.h | 13 src/mesa/drivers/dri/i965/brw_eu_emit.c | 16 src/mesa/drivers/dri/i965/brw_misc_state.c | 8 src/mesa/drivers/dri/i965/brw_structs.h | 4 src/mesa/drivers/dri/i965/brw_vs_emit.c | 2 src/mesa/drivers/dri/intel/intel_batchbuffer.h | 4 src/mesa/drivers/dri/intel/intel_blit.c | 5 src/mesa/drivers/dri/intel/intel_chipset.h | 10 src/mesa/drivers/dri/intel/intel_context.c | 4 src/mesa/drivers/dri/r300/Makefile | 3 src/mesa/drivers/dri/r300/r300_cmdbuf.c | 11 src/mesa/drivers/dri/r300/r300_context.h | 51 src/mesa/drivers/dri/r300/r300_fragprog.c | 184 src/mesa/drivers/dri/r300/r300_fragprog.h | 30 src/mesa/drivers/dri/r300/r300_fragprog_emit.c | 2092 ----- src/mesa/drivers/dri/r300/r300_fragprog_swizzle.c | 227 src/mesa/drivers/dri/r300/r300_fragprog_swizzle.h | 42 src/mesa/drivers/dri/r300/r300_ioctl.c | 9 src/mesa/drivers/dri/r300/r300_reg.h | 7 src/mesa/drivers/dri/r300/r300_render.c | 2 src/mesa/drivers/dri/r300/r300_state.c | 109 src/mesa/drivers/dri/r300/r500_fragprog.c | 207 src/mesa/drivers/dri/r300/r500_fragprog.h | 32 src/mesa/drivers/dri/r300/r500_fragprog_emit.c | 1596 ---- src/mesa/drivers/dri/r300/radeon_nqssadce.c | 282 src/mesa/drivers/dri/r300/radeon_nqssadce.h | 96 src/mesa/drivers/dri/r300/radeon_program.c | 275 src/mesa/drivers/dri/r300/radeon_program.h | 113 src/mesa/drivers/dri/r300/radeon_program_alu.c | 475 + src/mesa/drivers/dri/r300/radeon_program_alu.h | 12 src/mesa/drivers/dri/r300/radeon_program_pair.c | 983 ++ src/mesa/drivers/dri/r300/radeon_program_pair.h | 126 src/mesa/drivers/fbdev/Makefile | 3 src/mesa/drivers/osmesa/Makefile | 12 src/mesa/drivers/x11/Makefile | 7 src/mesa/gl.pc.in | 4 src/mesa/glapi/gl_API.xml | 90 src/mesa/glapi/glapi.c | 7 src/mesa/main/api_validate.c | 23 src/mesa/main/buffers.c | 2 src/mesa/main/context.c | 1 src/mesa/main/dd.h | 2 src/mesa/main/enums.c | 5874 +++++++--------- src/mesa/main/execmem.c | 8 src/mesa/main/fbobject.c | 26 src/mesa/main/fbobject.h | 7 src/mesa/main/mtypes.h | 1 src/mesa/main/shaders.c | 14 src/mesa/main/state.c | 17 src/mesa/main/texstate.c | 28 src/mesa/main/version.h | 2 src/mesa/shader/arbprogparse.c | 9 src/mesa/shader/program.c | 62 src/mesa/shader/program.h | 13 src/mesa/shader/shader_api.c | 281 src/mesa/shader/slang/library/slang_common_builtin.gc | 35 src/mesa/shader/slang/library/slang_common_builtin_gc.h | 315 src/mesa/shader/slang/library/slang_core.gc | 46 src/mesa/shader/slang/library/slang_core_gc.h | 1509 ++-- src/mesa/shader/slang/slang_codegen.c | 449 - src/mesa/shader/slang/slang_compile.c | 24 src/mesa/shader/slang/slang_emit.c | 17 src/mesa/shader/slang/slang_emit.h | 8 src/mesa/shader/slang/slang_ir.c | 10 src/mesa/shader/slang/slang_link.c | 14 src/mesa/shader/slang/slang_log.c | 3 src/mesa/shader/slang/slang_print.c | 84 src/mesa/shader/slang/slang_vartable.c | 3 src/mesa/swrast/s_fragprog.c | 28 src/mesa/swrast/s_points.c | 2 src/mesa/tnl/t_vb_program.c | 2 src/mesa/tnl_dd/t_dd_tritmp.h | 4 120 files changed, 8030 insertions(+), 8788 deletions(-)
New commits: commit a8dde163dc3032515cf18c33bca3cb223ef218b9 Author: Julien Cristau <[EMAIL PROTECTED]> Date: Sun Jul 13 19:42:01 2008 +0200 Prepare changelog for upload diff --git a/debian/changelog b/debian/changelog index d82a4c0..db5cdcc 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,4 @@ -mesa (7.1~rc3-1) UNRELEASED; urgency=low +mesa (7.1~rc3-1) experimental; urgency=low [ Julien Cristau ] * New upstream release candidate (updated to git commit 4fab47b1). @@ -19,7 +19,7 @@ mesa (7.1~rc3-1) UNRELEASED; urgency=low * Add automake & autoconf to build-deps. * Use --enable-glx-tls for dri. - -- Julien Cristau <[EMAIL PROTECTED]> Sun, 13 Jul 2008 19:22:21 +0200 + -- Julien Cristau <[EMAIL PROTECTED]> Sun, 13 Jul 2008 19:41:42 +0200 mesa (7.0.3-4) unstable; urgency=low commit 868d0accef457f4d5d9e58ea44c54c3402cd4b2c Author: Julien Cristau <[EMAIL PROTECTED]> Date: Sun Jul 13 19:36:56 2008 +0200 update changelog and patches 01_fix-installdir.patch dropped, applied upstream 04_osmesa_version.diff needed fixing diff --git a/debian/changelog b/debian/changelog index 06fa56e..d82a4c0 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,7 +1,7 @@ -mesa (7.1~rc1-1) UNRELEASED; urgency=low +mesa (7.1~rc3-1) UNRELEASED; urgency=low [ Julien Cristau ] - * New upstream release candidate. + * New upstream release candidate (updated to git commit 4fab47b1). * Build against libdrm >= 2.3.1. * 04_osmesa_version.diff: fix libOSMesa versioning, to revert accidental SONAME bump. @@ -16,12 +16,10 @@ mesa (7.1~rc1-1) UNRELEASED; urgency=low * rules: Replace the old build system with the new autotools-based system. * Run autoreconf before building the various flavours.. - * 01_fix-installdir.patch: installdir handling was broken, this patch - from upstream fixes it. * Add automake & autoconf to build-deps. * Use --enable-glx-tls for dri. - -- Timo Aaltonen <[EMAIL PROTECTED]> Fri, 04 Jul 2008 10:59:12 +0300 + -- Julien Cristau <[EMAIL PROTECTED]> Sun, 13 Jul 2008 19:22:21 +0200 mesa (7.0.3-4) unstable; urgency=low diff --git a/debian/patches/01_fix-installdir.patch b/debian/patches/01_fix-installdir.patch deleted file mode 100644 index 2148a7b..0000000 --- a/debian/patches/01_fix-installdir.patch +++ /dev/null @@ -1,380 +0,0 @@ -From 410195da3cddb0e4f0a4d31a25732f00c264af51 Mon Sep 17 00:00:00 2001 -From: Dan Nicholson <[EMAIL PROTECTED]> -Date: Thu, 3 Jul 2008 09:17:44 -0700 -Subject: [PATCH] Set library and header installation directories from configuration - -Currently the installation directories for libraries and headers are -resolved within the install commands. For instance, the libraries will -be installed to $(INSTALL_DIR)/$(LIB_DIR). This limits the flexibility -of the installation, such as when the libraries should be installed to a -subdirectory like /usr/lib/tls. - -This adds the make variables $(INSTALL_LIB_DIR) and $(INSTALL_INC_DIR) -to define the locations that the libraries and headers are installed. -For the static configs, this resolves exactly as before to -$(INSTALL_DIR)/include and $(INSTALL_DIR)/$(LIB_DIR). For autoconf, they -are derived directly from the --libdir and --includedir settings. ---- - configs/autoconf.in | 3 +++ - configs/default | 4 +++- - configure.ac | 1 + - src/glu/Makefile | 11 ++++++----- - src/glu/glu.pc.in | 4 ++-- - src/glut/fbdev/Makefile | 8 ++++---- - src/glut/glx/Makefile | 15 ++++++++------- - src/glut/glx/glut.pc.in | 4 ++-- - src/glut/mini/Makefile | 15 ++++++++------- - src/glut/mini/glut.pc.in | 4 ++-- - src/glw/Makefile | 15 ++++++++------- - src/glw/glw.pc.in | 4 ++-- - src/mesa/Makefile | 19 ++++++++++--------- - src/mesa/drivers/dri/Makefile | 15 +++++++++------ - src/mesa/drivers/dri/dri.pc.in | 4 ++-- - src/mesa/gl.pc.in | 4 ++-- - 16 files changed, 72 insertions(+), 58 deletions(-) - -diff --git a/configs/autoconf.in b/configs/autoconf.in -index ed44a0f..21d224f 100644 ---- a/configs/autoconf.in -+++ b/configs/autoconf.in -@@ -89,9 +89,12 @@ EXPAT_INCLUDES = @EXPAT_INCLUDES@ - prefix = @prefix@ - exec_prefix = @exec_prefix@ - libdir = @libdir@ -+includedir = @includedir@ - - # Installation directories (for make install) - INSTALL_DIR = $(prefix) -+INSTALL_LIB_DIR = $(libdir) -+INSTALL_INC_DIR = $(includedir) - - # DRI installation directories - DRI_DRIVER_INSTALL_DIR = @DRI_DRIVER_INSTALL_DIR@ -diff --git a/configs/default b/configs/default -index 37b6939..d5b40c5 100644 ---- a/configs/default -+++ b/configs/default -@@ -84,7 +84,9 @@ APP_LIB_DEPS = -lm - - # Installation directories (for make install) - INSTALL_DIR = /usr/local --DRI_DRIVER_INSTALL_DIR = $(INSTALL_DIR)/$(LIB_DIR)/dri -+INSTALL_LIB_DIR = $(INSTALL_DIR)/$(LIB_DIR) -+INSTALL_INC_DIR = $(INSTALL_DIR)/include -+DRI_DRIVER_INSTALL_DIR = $(INSTALL_LIB_DIR)/dri - - # Where libGL will look for DRI hardware drivers - DRI_DRIVER_SEARCH_DIR = $(DRI_DRIVER_INSTALL_DIR) -diff --git a/configure.ac b/configure.ac -index f15d9ff..961a60c 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -994,6 +994,7 @@ echo "" - echo " prefix: $prefix" - echo " exec_prefix: $exec_prefix" - echo " libdir: $libdir" -+echo " includedir: $includedir" - - dnl Driver info - echo "" -diff --git a/src/glu/Makefile b/src/glu/Makefile -index 23161b5..fe19fd1 100644 ---- a/src/glu/Makefile -+++ b/src/glu/Makefile -@@ -16,16 +16,17 @@ default: $(TOP)/configs/current - # GLU pkg-config file - pcedit = sed \ - -e 's,@INSTALL_DIR@,$(INSTALL_DIR),' \ -- -e 's,@LIB_DIR@,$(LIB_DIR),' \ -+ -e 's,@INSTALL_LIB_DIR@,$(INSTALL_LIB_DIR),' \ -+ -e 's,@INSTALL_INC_DIR@,$(INSTALL_INC_DIR),' \ - -e 's,@VERSION@,$(MESA_MAJOR).$(MESA_MINOR).$(MESA_TINY),' - glu.pc: glu.pc.in - $(pcedit) $< > $@ - - install: glu.pc -- $(INSTALL) -d $(DESTDIR)$(INSTALL_DIR)/$(LIB_DIR) -- $(INSTALL) -d $(DESTDIR)$(INSTALL_DIR)/$(LIB_DIR)/pkgconfig -- $(INSTALL) $(TOP)/$(LIB_DIR)/libGLU.* $(DESTDIR)$(INSTALL_DIR)/$(LIB_DIR) -- $(INSTALL) -m 644 glu.pc $(DESTDIR)$(INSTALL_DIR)/$(LIB_DIR)/pkgconfig -+ $(INSTALL) -d $(DESTDIR)$(INSTALL_LIB_DIR) -+ $(INSTALL) -d $(DESTDIR)$(INSTALL_LIB_DIR)/pkgconfig -+ $(INSTALL) $(TOP)/$(LIB_DIR)/libGLU.* $(DESTDIR)$(INSTALL_LIB_DIR) -+ $(INSTALL) -m 644 glu.pc $(DESTDIR)$(INSTALL_LIB_DIR)/pkgconfig - - clean: - [EMAIL PROTECTED] dir in $(SUBDIRS) ; do \ -diff --git a/src/glu/glu.pc.in b/src/glu/glu.pc.in -index 5d6e52a..8606b9b 100644 ---- a/src/glu/glu.pc.in -+++ b/src/glu/glu.pc.in -@@ -1,7 +1,7 @@ - [EMAIL PROTECTED]@ - exec_prefix=${prefix} --libdir=${exec_prefix}/@LIB_DIR@ --includedir=${prefix}/include [EMAIL PROTECTED]@ [EMAIL PROTECTED]@ - - Name: glu - Description: Mesa OpenGL Utility library -diff --git a/src/glut/fbdev/Makefile b/src/glut/fbdev/Makefile -index 95893b7..ff74a28 100644 ---- a/src/glut/fbdev/Makefile -+++ b/src/glut/fbdev/Makefile -@@ -69,10 +69,10 @@ $(TOP)/$(LIB_DIR)/$(GLUT_LIB_NAME): depend $(OBJECTS) - $(MKLIB_OPTIONS) $(OBJECTS) - - install: -- $(INSTALL) -d $(DESTDIR)$(INSTALL_DIR)/include/GL -- $(INSTALL) -d $(DESTDIR)$(INSTALL_DIR)/$(LIB_DIR) -- $(INSTALL) -m 644 $(TOP)/include/GL/glut.h $(DESTDIR)$(INSTALL_DIR)/include/GL -- $(INSTALL) $(TOP)/$(LIB_DIR)/libglut* $(DESTDIR)$(INSTALL_DIR)/$(LIB_DIR) -+ $(INSTALL) -d $(DESTDIR)$(INSTALL_INC_DIR)/GL -+ $(INSTALL) -d $(DESTDIR)$(INSTALL_LIB_DIR) -+ $(INSTALL) -m 644 $(TOP)/include/GL/glut.h $(DESTDIR)$(INSTALL_INC_DIR)/GL -+ $(INSTALL) $(TOP)/$(LIB_DIR)/libglut* $(DESTDIR)$(INSTALL_LIB_DIR) - - # Run 'make -f Makefile.solo dep' to update the dependencies if you change - # what's included by any source file. -diff --git a/src/glut/glx/Makefile b/src/glut/glx/Makefile -index 674d5a5..819dfd2 100644 ---- a/src/glut/glx/Makefile -+++ b/src/glut/glx/Makefile -@@ -100,18 +100,19 @@ $(TOP)/$(LIB_DIR)/$(GLUT_LIB_NAME): depend $(OBJECTS) - # glut pkgconfig file - pcedit = sed \ - -e 's,@INSTALL_DIR@,$(INSTALL_DIR),' \ -- -e 's,@LIB_DIR@,$(LIB_DIR),' \ -+ -e 's,@INSTALL_LIB_DIR@,$(INSTALL_LIB_DIR),' \ -+ -e 's,@INSTALL_INC_DIR@,$(INSTALL_INC_DIR),' \ - -e 's,@VERSION@,$(GLUT_MAJOR).$(GLUT_MINOR).$(GLUT_TINY),' - glut.pc: glut.pc.in - $(pcedit) $< > $@ - - install: glut.pc -- $(INSTALL) -d $(DESTDIR)$(INSTALL_DIR)/include/GL -- $(INSTALL) -d $(DESTDIR)$(INSTALL_DIR)/$(LIB_DIR) -- $(INSTALL) -d $(DESTDIR)$(INSTALL_DIR)/$(LIB_DIR)/pkgconfig -- $(INSTALL) -m 644 $(TOP)/include/GL/glut.h $(DESTDIR)$(INSTALL_DIR)/include/GL -- $(INSTALL) $(TOP)/$(LIB_DIR)/libglut* $(DESTDIR)$(INSTALL_DIR)/$(LIB_DIR) -- $(INSTALL) -m 644 glut.pc $(DESTDIR)$(INSTALL_DIR)/$(LIB_DIR)/pkgconfig -+ $(INSTALL) -d $(DESTDIR)$(INSTALL_INC_DIR)/GL -+ $(INSTALL) -d $(DESTDIR)$(INSTALL_LIB_DIR) -+ $(INSTALL) -d $(DESTDIR)$(INSTALL_LIB_DIR)/pkgconfig -+ $(INSTALL) -m 644 $(TOP)/include/GL/glut.h $(DESTDIR)$(INSTALL_INC_DIR)/GL -+ $(INSTALL) $(TOP)/$(LIB_DIR)/libglut* $(DESTDIR)$(INSTALL_LIB_DIR) -+ $(INSTALL) -m 644 glut.pc $(DESTDIR)$(INSTALL_LIB_DIR)/pkgconfig - - - clean: -diff --git a/src/glut/glx/glut.pc.in b/src/glut/glx/glut.pc.in -index f732f29..e8638fe 100644 ---- a/src/glut/glx/glut.pc.in -+++ b/src/glut/glx/glut.pc.in -@@ -1,7 +1,7 @@ - [EMAIL PROTECTED]@ - exec_prefix=${prefix} --libdir=${exec_prefix}/@LIB_DIR@ --includedir=${prefix}/include [EMAIL PROTECTED]@ [EMAIL PROTECTED]@ - - Name: glut - Description: Mesa OpenGL Utility Toolkit library -diff --git a/src/glut/mini/Makefile b/src/glut/mini/Makefile -index d386050..6aba2af 100644 ---- a/src/glut/mini/Makefile -+++ b/src/glut/mini/Makefile -@@ -75,18 +75,19 @@ tags: - # glut pkgconfig file - pcedit = sed \ - -e 's,@INSTALL_DIR@,$(INSTALL_DIR),' \ -- -e 's,@LIB_DIR@,$(LIB_DIR),' \ -+ -e 's,@INSTALL_LIB_DIR@,$(INSTALL_LIB_DIR),' \ -+ -e 's,@INSTALL_INC_DIR@,$(INSTALL_INC_DIR),' \ - -e 's,@VERSION@,$(GLUT_MAJOR).$(GLUT_MINOR).$(GLUT_TINY),' - glut.pc: glut.pc.in - $(pcedit) $< > $@ - - install: glut.pc -- $(INSTALL) -d $(DESTDIR)$(INSTALL_DIR)/include/GL -- $(INSTALL) -d $(DESTDIR)$(INSTALL_DIR)/$(LIB_DIR) -- $(INSTALL) -d $(DESTDIR)$(INSTALL_DIR)/$(LIB_DIR)/pkgconfig -- $(INSTALL) -m 644 $(TOP)/include/GL/glut.h $(DESTDIR)$(INSTALL_DIR)/include/GL -- $(INSTALL) $(TOP)/$(LIB_DIR)/libglut* $(DESTDIR)$(INSTALL_DIR)/$(LIB_DIR) -- $(INSTALL) -m 644 glut.pc $(DESTDIR)$(INSTALL_DIR)/$(LIB_DIR)/pkgconfig -+ $(INSTALL) -d $(DESTDIR)$(INSTALL_INC_DIR)/GL -+ $(INSTALL) -d $(DESTDIR)$(INSTALL_LIB_DIR) -+ $(INSTALL) -d $(DESTDIR)$(INSTALL_LIB_DIR)/pkgconfig -+ $(INSTALL) -m 644 $(TOP)/include/GL/glut.h $(DESTDIR)$(INSTALL_INC_DIR)/GL -+ $(INSTALL) $(TOP)/$(LIB_DIR)/libglut* $(DESTDIR)$(INSTALL_LIB_DIR) -+ $(INSTALL) -m 644 glut.pc $(DESTDIR)$(INSTALL_LIB_DIR)/pkgconfig - - - # Remove .o and backup files -diff --git a/src/glut/mini/glut.pc.in b/src/glut/mini/glut.pc.in -index f732f29..e8638fe 100644 ---- a/src/glut/mini/glut.pc.in -+++ b/src/glut/mini/glut.pc.in -@@ -1,7 +1,7 @@ - [EMAIL PROTECTED]@ - exec_prefix=${prefix} --libdir=${exec_prefix}/@LIB_DIR@ --includedir=${prefix}/include [EMAIL PROTECTED]@ [EMAIL PROTECTED]@ - - Name: glut - Description: Mesa OpenGL Utility Toolkit library -diff --git a/src/glw/Makefile b/src/glw/Makefile -index 88bf99d..f0dd1ac 100644 ---- a/src/glw/Makefile -+++ b/src/glw/Makefile -@@ -28,18 +28,19 @@ default: $(TOP)/$(LIB_DIR)/$(GLW_LIB_NAME) - # GLU pkg-config file - pcedit = sed \ - -e 's,@INSTALL_DIR@,$(INSTALL_DIR),' \ -- -e 's,@LIB_DIR@,$(LIB_DIR),' \ -+ -e 's,@INSTALL_LIB_DIR@,$(INSTALL_LIB_DIR),' \ -+ -e 's,@INSTALL_INC_DIR@,$(INSTALL_INC_DIR),' \ - -e 's,@VERSION@,$(MAJOR).$(MINOR).$(TINY),' - glw.pc: glw.pc.in - $(pcedit) $< > $@ - - install: glw.pc -- $(INSTALL) -d $(DESTDIR)$(INSTALL_DIR)/include/GL -- $(INSTALL) -d $(DESTDIR)$(INSTALL_DIR)/$(LIB_DIR) -- $(INSTALL) -d $(DESTDIR)$(INSTALL_DIR)/$(LIB_DIR)/pkgconfig -- $(INSTALL) -m 644 *.h $(DESTDIR)$(INSTALL_DIR)/include/GL -- $(INSTALL) $(TOP)/$(LIB_DIR)/libGLw.* $(DESTDIR)$(INSTALL_DIR)/$(LIB_DIR) -- $(INSTALL) -m 644 glw.pc $(DESTDIR)$(INSTALL_DIR)/$(LIB_DIR)/pkgconfig -+ $(INSTALL) -d $(DESTDIR)$(INSTALL_INC_DIR)/GL -+ $(INSTALL) -d $(DESTDIR)$(INSTALL_LIB_DIR) -+ $(INSTALL) -d $(DESTDIR)$(INSTALL_LIB_DIR)/pkgconfig -+ $(INSTALL) -m 644 *.h $(DESTDIR)$(INSTALL_INC_DIR)/GL -+ $(INSTALL) $(TOP)/$(LIB_DIR)/libGLw.* $(DESTDIR)$(INSTALL_LIB_DIR) -+ $(INSTALL) -m 644 glw.pc $(DESTDIR)$(INSTALL_LIB_DIR)/pkgconfig - - clean: - -rm -f depend depend.bak -diff --git a/src/glw/glw.pc.in b/src/glw/glw.pc.in -index 9c2682f..25f3f73 100644 ---- a/src/glw/glw.pc.in -+++ b/src/glw/glw.pc.in -@@ -1,7 +1,7 @@ - [EMAIL PROTECTED]@ - exec_prefix=${prefix} --libdir=${exec_prefix}/@LIB_DIR@ --includedir=${prefix}/include [EMAIL PROTECTED]@ [EMAIL PROTECTED]@ - - Name: glw - Description: Mesa OpenGL widget library -diff --git a/src/mesa/Makefile b/src/mesa/Makefile -index e0b641b..3827ffb 100644 ---- a/src/mesa/Makefile -+++ b/src/mesa/Makefile -@@ -90,28 +90,29 @@ install: default - - pcedit = sed \ - -e 's,@INSTALL_DIR@,$(INSTALL_DIR),' \ -- -e 's,@LIB_DIR@,$(LIB_DIR),' \ -+ -e 's,@INSTALL_LIB_DIR@,$(INSTALL_LIB_DIR),' \ -+ -e 's,@INSTALL_INC_DIR@,$(INSTALL_INC_DIR),' \ - -e 's,@VERSION@,$(MESA_MAJOR).$(MESA_MINOR).$(MESA_TINY),' - - gl.pc: gl.pc.in - $(pcedit) $< > $@ - - install-headers: -- $(INSTALL) -d $(DESTDIR)$(INSTALL_DIR)/include/GL -+ $(INSTALL) -d $(DESTDIR)$(INSTALL_INC_DIR)/GL - $(INSTALL) -m 644 $(TOP)/include/GL/*.h \ -- $(DESTDIR)$(INSTALL_DIR)/include/GL -+ $(DESTDIR)$(INSTALL_INC_DIR)/GL - - install-libgl: default gl.pc install-headers -- $(INSTALL) -d $(DESTDIR)$(INSTALL_DIR)/$(LIB_DIR) -- $(INSTALL) -d $(DESTDIR)$(INSTALL_DIR)/$(LIB_DIR)/pkgconfig -+ $(INSTALL) -d $(DESTDIR)$(INSTALL_LIB_DIR) -+ $(INSTALL) -d $(DESTDIR)$(INSTALL_LIB_DIR)/pkgconfig - $(INSTALL) $(TOP)/$(LIB_DIR)/$(GL_LIB_NAME)* \ -- $(DESTDIR)$(INSTALL_DIR)/$(LIB_DIR) -- $(INSTALL) -m 644 gl.pc $(DESTDIR)$(INSTALL_DIR)/$(LIB_DIR)/pkgconfig -+ $(DESTDIR)$(INSTALL_LIB_DIR) -+ $(INSTALL) -m 644 gl.pc $(DESTDIR)$(INSTALL_LIB_DIR)/pkgconfig - - install-osmesa: default -- $(INSTALL) -d $(DESTDIR)$(INSTALL_DIR)/$(LIB_DIR) -+ $(INSTALL) -d $(DESTDIR)$(INSTALL_LIB_DIR) - $(INSTALL) $(TOP)/$(LIB_DIR)/$(OSMESA_LIB_NAME)* \ -- $(DESTDIR)$(INSTALL_DIR)/$(LIB_DIR) -+ $(DESTDIR)$(INSTALL_LIB_DIR) - - install-dri: default - cd drivers/dri && $(MAKE) install -diff --git a/src/mesa/drivers/dri/Makefile b/src/mesa/drivers/dri/Makefile -index 3f87782..96118e0 100644 ---- a/src/mesa/drivers/dri/Makefile -+++ b/src/mesa/drivers/dri/Makefile -@@ -22,7 +22,8 @@ subdirs: - - pcedit = sed \ - -e 's,@INSTALL_DIR@,$(INSTALL_DIR),' \ -- -e 's,@LIB_DIR@,$(LIB_DIR),' \ -+ -e 's,@INSTALL_LIB_DIR@,$(INSTALL_LIB_DIR),' \ -+ -e 's,@INSTALL_INC_DIR@,$(INSTALL_INC_DIR),' \ - -e 's,@VERSION@,$(MESA_MAJOR).$(MESA_MINOR).$(MESA_TINY),' \ - -e 's,@DRI_DRIVER_DIR@,$(DRI_DRIVER_SEARCH_DIR),' - -@@ -36,11 +37,13 @@ install: dri.pc - (cd $$dir && $(MAKE) install) || exit 1 ; \ - fi \ - done -- $(INSTALL) -d $(DESTDIR)$(INSTALL_DIR)/include/GL/internal -- $(INSTALL) -m 0644 $(TOP)/include/GL/internal/dri_interface.h $(DESTDIR)$(INSTALL_DIR)/include/GL/internal -- $(INSTALL) -m 0644 $(TOP)/include/GL/internal/dri_sarea.h $(DESTDIR)$(INSTALL_DIR)/include/GL/internal -- $(INSTALL) -d $(DESTDIR)$(INSTALL_DIR)/$(LIB_DIR)/pkgconfig -- $(INSTALL) -m 0644 dri.pc $(DESTDIR)$(INSTALL_DIR)/$(LIB_DIR)/pkgconfig -+ $(INSTALL) -d $(DESTDIR)$(INSTALL_INC_DIR)/GL/internal -+ $(INSTALL) -m 0644 $(TOP)/include/GL/internal/dri_interface.h \ -+ $(DESTDIR)$(INSTALL_INC_DIR)/GL/internal -+ $(INSTALL) -m 0644 $(TOP)/include/GL/internal/dri_sarea.h \ -+ $(DESTDIR)$(INSTALL_INC_DIR)/GL/internal -+ $(INSTALL) -d $(DESTDIR)$(INSTALL_LIB_DIR)/pkgconfig -+ $(INSTALL) -m 0644 dri.pc $(DESTDIR)$(INSTALL_LIB_DIR)/pkgconfig - - - clean: -diff --git a/src/mesa/drivers/dri/dri.pc.in b/src/mesa/drivers/dri/dri.pc.in -index 58d890d..c47ee9c 100644 ---- a/src/mesa/drivers/dri/dri.pc.in -+++ b/src/mesa/drivers/dri/dri.pc.in -@@ -1,7 +1,7 @@ - [EMAIL PROTECTED]@ - exec_prefix=${prefix} --libdir=${exec_prefix}/@LIB_DIR@ --includedir=${prefix}/include [EMAIL PROTECTED]@ [EMAIL PROTECTED]@ - [EMAIL PROTECTED]@ - - Name: dri -diff --git a/src/mesa/gl.pc.in b/src/mesa/gl.pc.in -index 4b144ff..1927880 100644 ---- a/src/mesa/gl.pc.in -+++ b/src/mesa/gl.pc.in -@@ -1,7 +1,7 @@ - [EMAIL PROTECTED]@ - exec_prefix=${prefix} --libdir=${exec_prefix}/@LIB_DIR@ --includedir=${prefix}/include [EMAIL PROTECTED]@ [EMAIL PROTECTED]@ - - Name: gl - Description: Mesa OpenGL library --- -1.5.3.2 diff --git a/debian/patches/04_osmesa_version.diff b/debian/patches/04_osmesa_version.diff index ba22b2f..6cc11d1 100644 --- a/debian/patches/04_osmesa_version.diff +++ b/debian/patches/04_osmesa_version.diff @@ -1,21 +1,22 @@ -diff -up mesa-20080612/src/mesa/drivers/osmesa/Makefile.osmesa mesa-20080612/src/mesa/drivers/osmesa/Makefile ---- mesa-20080612/src/mesa/drivers/osmesa/Makefile.osmesa 2008-06-12 12:17:27.000000000 +1000 -+++ mesa-20080612/src/mesa/drivers/osmesa/Makefile 2008-06-12 13:14:24.000000000 +1000 -@@ -47,7 +47,7 @@ osmesa8: $(TOP)/lib/$(OSMESA_LIB_NAME) +Index: mesa/src/mesa/drivers/osmesa/Makefile +=================================================================== +--- mesa.orig/src/mesa/drivers/osmesa/Makefile ++++ mesa/src/mesa/drivers/osmesa/Makefile +@@ -46,7 +46,7 @@ + $(TOP)/lib/$(OSMESA_LIB_NAME): $(OBJECTS) - $(TOP)/bin/mklib -o $(OSMESA_LIB) \ - -linker "$(CC)" \ + $(MKLIB) -o $(OSMESA_LIB) -linker '$(CC)' -ldflags '$(LDFLAGS)' \ - -major $(MESA_MAJOR) -minor $(MESA_MINOR) -patch $(MESA_TINY) \ + -major 6 -minor 5 -patch 3 \ - -install $(TOP)/$(LIB_DIR) \ - $(MKLIB_OPTIONS) \ + -install $(TOP)/$(LIB_DIR) $(MKLIB_OPTIONS) \ $(OSMESA_LIB_DEPS) $(OBJECTS) -@@ -60,7 +60,7 @@ $(TOP)/lib/$(OSMESA_LIB_NAME): $(OBJECTS + +@@ -57,7 +57,7 @@ + # with all the other Mesa sources (compiled with -DCHAN_BITS=16/32 osmesa16: $(OBJECTS) $(CORE_MESA) - $(TOP)/bin/mklib -o $(OSMESA_LIB) \ - -linker "$(CC)" \ + $(MKLIB) -o $(OSMESA_LIB) -linker '$(CC)' -ldflags '$(LDFLAGS)' \ - -major $(MESA_MAJOR) -minor $(MESA_MINOR) -patch $(MESA_TINY) \ + -major 6 -minor 5 -patch 3 \ - -install $(TOP)/$(LIB_DIR) \ - $(MKLIB_OPTIONS) \ + -install $(TOP)/$(LIB_DIR) $(MKLIB_OPTIONS) \ $(OSMESA_LIB_DEPS) $(OBJECTS) $(CORE_MESA) + diff --git a/debian/patches/series b/debian/patches/series index 72bb74c..86f17dc 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -1,4 +1,3 @@ -01_fix-installdir.patch 02_use-ieee-fp-on-s390-and-m68k.patch 03_optional-progs-and-install.patch 04_osmesa_version.diff commit 4fab47b13c214dc79e0ae5d8001521029ce34231 Author: Dave Airlie <[EMAIL PROTECTED]> Date: Sun Jul 13 19:00:46 2008 +1000 glx/dri: only report DRI2 extensions when DRI2 is enabled. Fixes bug 15477 diff --git a/src/glx/x11/dri2_glx.c b/src/glx/x11/dri2_glx.c index b679c72..0be65bc 100644 --- a/src/glx/x11/dri2_glx.c +++ b/src/glx/x11/dri2_glx.c @@ -308,7 +308,7 @@ static __GLXDRIscreen *dri2CreateScreen(__GLXscreenConfigs *psc, int screen, return NULL; } - driBindExtensions(psc); + driBindExtensions(psc, 1); psc->configs = driConvertConfigs(psc->core, psc->configs, driver_configs); psc->visuals = driConvertConfigs(psc->core, psc->visuals, driver_configs); diff --git a/src/glx/x11/dri_common.c b/src/glx/x11/dri_common.c index b159d19..8175f46 100644 --- a/src/glx/x11/dri_common.c +++ b/src/glx/x11/dri_common.c @@ -329,7 +329,7 @@ driConvertConfigs(const __DRIcoreExtension *core, } _X_HIDDEN void -driBindExtensions(__GLXscreenConfigs *psc) +driBindExtensions(__GLXscreenConfigs *psc, int dri2) { const __DRIextension **extensions; int i; @@ -386,7 +386,7 @@ driBindExtensions(__GLXscreenConfigs *psc) #endif #ifdef __DRI_TEX_BUFFER - if (strcmp(extensions[i]->name, __DRI_TEX_BUFFER) == 0) { + if ((strcmp(extensions[i]->name, __DRI_TEX_BUFFER) == 0) && dri2) { psc->texBuffer = (__DRItexBufferExtension *) extensions[i]; __glXEnableDirectExtension(psc, "GLX_EXT_texture_from_pixmap"); } diff --git a/src/glx/x11/dri_common.h b/src/glx/x11/dri_common.h index 3556510..15f6cc8 100644 --- a/src/glx/x11/dri_common.h +++ b/src/glx/x11/dri_common.h @@ -55,6 +55,6 @@ extern void ErrorMessageF(const char *f, ...); extern void *driOpenDriver(const char *driverName); -extern void driBindExtensions(__GLXscreenConfigs *psc); +extern void driBindExtensions(__GLXscreenConfigs *psc, int dri2); #endif /* _DRI_COMMON_H */ diff --git a/src/glx/x11/dri_glx.c b/src/glx/x11/dri_glx.c index d53f2d9..82653f1 100644 --- a/src/glx/x11/dri_glx.c +++ b/src/glx/x11/dri_glx.c @@ -635,7 +635,7 @@ static __GLXDRIscreen *driCreateScreen(__GLXscreenConfigs *psc, int screen, return NULL; } - driBindExtensions(psc); + driBindExtensions(psc, 0); psp->destroyScreen = driDestroyScreen; psp->createContext = driCreateContext; diff --git a/src/glx/x11/drisw_glx.c b/src/glx/x11/drisw_glx.c index f7ff001..bcf7e14 100644 --- a/src/glx/x11/drisw_glx.c +++ b/src/glx/x11/drisw_glx.c @@ -390,7 +390,7 @@ static __GLXDRIscreen *driCreateScreen(__GLXscreenConfigs *psc, int screen, goto handle_error; } - driBindExtensions(psc); + driBindExtensions(psc, 0); psc->configs = driConvertConfigs(psc->core, psc->configs, driver_configs); psc->visuals = driConvertConfigs(psc->core, psc->visuals, driver_configs); commit e81ba58bf4c20229677cdf89b5970b55cefb2199 Author: Nicolai Haehnle <[EMAIL PROTECTED]> Date: Sat Jul 12 21:13:03 2008 +0200 r300_fragprog: Use nqssa+dce and program_pair for emit Share almost all code with r500_fragprog now. This also fixes Piglit's texrect-many test, which means that the compiz bicubic plugin should work with hardware acceleration now. diff --git a/src/mesa/drivers/dri/r300/Makefile b/src/mesa/drivers/dri/r300/Makefile index 9baa1e7..6ca9342 100644 --- a/src/mesa/drivers/dri/r300/Makefile +++ b/src/mesa/drivers/dri/r300/Makefile @@ -42,6 +42,7 @@ DRIVER_SOURCES = \ radeon_nqssadce.c \ r300_vertprog.c \ r300_fragprog.c \ + r300_fragprog_swizzle.c \ r300_fragprog_emit.c \ r500_fragprog.c \ r500_fragprog_emit.c \ diff --git a/src/mesa/drivers/dri/r300/r300_context.h b/src/mesa/drivers/dri/r300/r300_context.h index 8e9c5ce..98af6d8 100644 --- a/src/mesa/drivers/dri/r300/r300_context.h +++ b/src/mesa/drivers/dri/r300/r300_context.h @@ -683,16 +683,25 @@ struct r300_fragment_program_external_state { }; +struct r300_fragment_program_node { + int tex_offset; /**< first tex instruction */ + int tex_end; /**< last tex instruction, relative to tex_offset */ + int alu_offset; /**< first ALU instruction */ + int alu_end; /**< last ALU instruction, relative to alu_offset */ + int flags; +}; + /** * Stores an R300 fragment program in its compiled-to-hardware form. */ struct r300_fragment_program_code { struct { - int length; + int length; /**< total # of texture instructions used */ GLuint inst[PFS_MAX_TEX_INST]; } tex; struct { + int length; /**< total # of ALU instructions used */ struct { GLuint inst0; GLuint inst1; @@ -701,21 +710,10 @@ struct r300_fragment_program_code { } inst[PFS_MAX_ALU_INST]; } alu; - struct { - int tex_offset; - int tex_end; - int alu_offset; - int alu_end; - int flags; - } node[4]; + struct r300_fragment_program_node node[4]; int cur_node; int first_node_has_tex; - int alu_offset; - int alu_end; - int tex_offset; - int tex_end; - /** * Remember which program register a given hardware constant * belongs to. diff --git a/src/mesa/drivers/dri/r300/r300_fragprog.c b/src/mesa/drivers/dri/r300/r300_fragprog.c index 8a1d690..d390de5 100644 --- a/src/mesa/drivers/dri/r300/r300_fragprog.c +++ b/src/mesa/drivers/dri/r300/r300_fragprog.c @@ -29,10 +29,8 @@ * \file * * Fragment program compiler. Perform transformations on the intermediate - * \ref radeon_program representation (which is essentially the Mesa - * program representation plus the notion of clauses) until the program - * is in a form where we can translate it more or less directly into - * machine-readable form. + * representation until the program is in a form where we can translate + * it more or less directly into machine-readable form. * * \author Ben Skeggs <[EMAIL PROTECTED]> * \author Jerome Glisse <[EMAIL PROTECTED]> @@ -47,8 +45,10 @@ #include "r300_context.h" #include "r300_fragprog.h" +#include "r300_fragprog_swizzle.h" #include "r300_state.h" +#include "radeon_nqssadce.h" #include "radeon_program_alu.h" @@ -133,25 +133,6 @@ static GLboolean transform_TEX( inst.SrcReg[0].Index = tempreg; } - /* Texture operations do not support swizzles etc. in hardware, - * so emit an additional arithmetic operation if necessary. - */ - if (inst.SrcReg[0].Swizzle != SWIZZLE_NOOP || - inst.SrcReg[0].Abs || inst.SrcReg[0].NegateBase || inst.SrcReg[0].NegateAbs) { - int tempreg = radeonFindFreeTemporary(t); - - tgt = radeonAppendInstructions(t->Program, 1); - - tgt->Opcode = OPCODE_MOV; - tgt->DstReg.File = PROGRAM_TEMPORARY; - tgt->DstReg.Index = tempreg; - tgt->SrcReg[0] = inst.SrcReg[0]; - - reset_srcreg(&inst.SrcReg[0]); - inst.SrcReg[0].File = PROGRAM_TEMPORARY; - inst.SrcReg[0].Index = tempreg; - } - if (inst.Opcode != OPCODE_KIL) { if (inst.DstReg.File != PROGRAM_TEMPORARY || inst.DstReg.WriteMask != WRITEMASK_XYZW) { @@ -339,6 +320,13 @@ static void insert_WPOS_trailer(struct r300_fragment_program_compiler *compiler) } +static void nqssadce_init(struct nqssadce_state* s) +{ + s->Outputs[FRAG_RESULT_COLR].Sourced = WRITEMASK_XYZW; + s->Outputs[FRAG_RESULT_DEPR].Sourced = WRITEMASK_W; +} + + static GLuint build_dtm(GLuint depthmode) { switch(depthmode) { @@ -417,7 +405,20 @@ void r300TranslateFragmentShader(r300ContextPtr r300, 3, transformations); if (RADEON_DEBUG & DEBUG_PIXEL) { - _mesa_printf("Fragment Program: After transformations:\n"); + _mesa_printf("Fragment Program: After native rewrite:\n"); + _mesa_print_program(compiler.program); + } + + struct radeon_nqssadce_descr nqssadce = { + .Init = &nqssadce_init, + .IsNativeSwizzle = &r300FPIsNativeSwizzle, + .BuildSwizzle = &r300FPBuildSwizzle, + .RewriteDepthOut = GL_TRUE + }; + radeonNqssaDce(r300->radeon.glCtx, compiler.program, &nqssadce); + + if (RADEON_DEBUG & DEBUG_PIXEL) { + _mesa_printf("Compiler: after NqSSA-DCE:\n"); _mesa_print_program(compiler.program); } @@ -451,22 +452,18 @@ void r300FragmentProgramDump( fprintf(stderr, "pc=%d*************************************\n", pc++); - fprintf(stderr, "Mesa program:\n"); - fprintf(stderr, "-------------\n"); - _mesa_print_program(&fp->mesa_program.Base); - fflush(stdout); - fprintf(stderr, "Hardware program\n"); fprintf(stderr, "----------------\n"); for (n = 0; n < (code->cur_node + 1); n++) { fprintf(stderr, "NODE %d: alu_offset: %d, tex_offset: %d, " - "alu_end: %d, tex_end: %d\n", n, + "alu_end: %d, tex_end: %d, flags: %08x\n", n, code->node[n].alu_offset, code->node[n].tex_offset, - code->node[n].alu_end, code->node[n].tex_end); + code->node[n].alu_end, code->node[n].tex_end, + code->node[n].flags); - if (code->tex.length) { + if (n > 0 || code->first_node_has_tex) { fprintf(stderr, " TEX:\n"); for (i = code->node[n].tex_offset; i <= code->node[n].tex_offset + code->node[n].tex_end; diff --git a/src/mesa/drivers/dri/r300/r300_fragprog.h b/src/mesa/drivers/dri/r300/r300_fragprog.h index c76ae62..b3a3cd2 100644 --- a/src/mesa/drivers/dri/r300/r300_fragprog.h +++ b/src/mesa/drivers/dri/r300/r300_fragprog.h @@ -42,33 +42,6 @@ #include "r300_context.h" #include "radeon_program.h" -/* supported hw opcodes */ -#define PFS_OP_MAD 0 -#define PFS_OP_DP3 1 -#define PFS_OP_DP4 2 -#define PFS_OP_MIN 3 -#define PFS_OP_MAX 4 -#define PFS_OP_CMP 5 -#define PFS_OP_FRC 6 -#define PFS_OP_EX2 7 -#define PFS_OP_LG2 8 -#define PFS_OP_RCP 9 -#define PFS_OP_RSQ 10 -#define PFS_OP_REPL_ALPHA 11 -#define PFS_OP_CMPH 12 -#define MAX_PFS_OP 12 - -#define PFS_FLAG_SAT (1 << 0) -#define PFS_FLAG_ABS (1 << 1) - -#define ARG_NEG (1 << 5) -#define ARG_ABS (1 << 6) -#define ARG_MASK (127 << 0) -#define ARG_STRIDE 7 -#define SRC_CONST (1 << 5) -#define SRC_MASK (63 << 0) -#define SRC_STRIDE 6 - #define DRI_CONF_FP_OPTIMIZATION_SPEED 0 #define DRI_CONF_FP_OPTIMIZATION_QUALITY 1 diff --git a/src/mesa/drivers/dri/r300/r300_fragprog_emit.c b/src/mesa/drivers/dri/r300/r300_fragprog_emit.c index 4786b45..9f0b7e3 100644 --- a/src/mesa/drivers/dri/r300/r300_fragprog_emit.c +++ b/src/mesa/drivers/dri/r300/r300_fragprog_emit.c @@ -36,1674 +36,308 @@ * \author Jerome Glisse <[EMAIL PROTECTED]> * * \todo FogOption - * - * \todo Verify results of opcodes for accuracy, I've only checked them in - * specific cases. */ -#include "glheader.h" -#include "macros.h" -#include "enums.h" -#include "shader/prog_instruction.h" -#include "shader/prog_parameter.h" -#include "shader/prog_print.h" - -#include "r300_context.h" #include "r300_fragprog.h" -#include "r300_reg.h" -#include "r300_state.h" - -/* Mapping Mesa registers to R300 temporaries */ -struct reg_acc { - int reg; /* Assigned hw temp */ - unsigned int refcount; /* Number of uses by mesa program */ -}; - -/** - * Describe the current lifetime information for an R300 temporary - */ -struct reg_lifetime { - /* Index of the first slot where this register is free in the sense - that it can be used as a new destination register. - This is -1 if the register has been assigned to a Mesa register - and the last access to the register has not yet been emitted */ - int free; - - /* Index of the first slot where this register is currently reserved. - This is used to stop e.g. a scalar operation from being moved - before the allocation time of a register that was first allocated - for a vector operation. */ - int reserved; - - /* Index of the first slot in which the register can be used as a - source without losing the value that is written by the last - emitted instruction that writes to the register */ - int vector_valid; - int scalar_valid; - - /* Index to the slot where the register was last read. - This is also the first slot in which the register may be written again */ - int vector_lastread; - int scalar_lastread; -}; - -/** - * Store usage information about an ALU instruction slot during the - * compilation of a fragment program. - */ -#define SLOT_SRC_VECTOR (1<<0) -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]