debian/changelog                                                 |   12 
 debian/patches/106_compiz_ring_switcher_xorg_segv_on_radeon.diff |  182 
++++++++++
 debian/patches/series                                            |    1 
 3 files changed, 195 insertions(+)

New commits:
commit 55ffb8ebe7a8046a1103e04aca3ab12af21182a8
Author: Bryce Harrington <br...@bryceharrington.org>
Date:   Mon May 4 12:41:24 2009 -0700

    Patch from mnemo to fix segfault in r300/r400 (LP: #368049)

diff --git a/debian/changelog b/debian/changelog
index 0824c99..06b6b9f 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,15 @@
+mesa (7.4-0ubuntu3.1) jaunty-proposed; urgency=low
+
+  * debian/patches/106_compiz_ring_switcher_xorg_segv_on_radeon.diff:
+    fix xserver segv triggered by compiz ring switcher plugin for users
+    with r300/r400 radeon chipsets and -ati driver. Patch previously
+    commited to mesa master as c28707b50701b1cf8727be29d61e2d939c6ee58f
+    and also to mesa_7_4_branch as a1ce4efefbb7f796a0a24544a1e893a56848f0c1.
+    Note: it was commited to the 7.4 branch after mesa 7.4.0 release.
+    (LP: #368049)
+
+ -- Martin Olsson <mar...@minimum.se>  Mon, 04 May 2009 12:25:29 +0200
+
 mesa (7.4-0ubuntu3) jaunty; urgency=low
 
   * Disable 103_bump_965_texture_limit.diff.  This is suspected to cause X
diff --git a/debian/patches/106_compiz_ring_switcher_xorg_segv_on_radeon.diff 
b/debian/patches/106_compiz_ring_switcher_xorg_segv_on_radeon.diff
index 6d72a52..3900b01 100644
--- a/debian/patches/106_compiz_ring_switcher_xorg_segv_on_radeon.diff
+++ b/debian/patches/106_compiz_ring_switcher_xorg_segv_on_radeon.diff
@@ -89,3 +89,94 @@ Index: mesa-7.4/src/mesa/drivers/dri/r300/r300_texstate.c
        }
  
        return !t->border_fallback;
+#
+# Ubuntu: https://bugs.launchpad.net/ubuntu/+source/mesa/+bug/368049
+# Upstream: https://bugs.freedesktop.org/show_bug.cgi?id=17895
+# Patch: 
http://cgit.freedesktop.org/mesa/mesa/commit/?h=mesa_7_4_branch&id=a1ce4efefbb7f796a0a24544a1e893a56848f0c1
+# Description: fix xserver segv triggered by compiz ring switcher plugin for 
users
+#   with r300/r400 radeon chipsets and -ati driver. Patch previously
+#   commited to mesa master as c28707b50701b1cf8727be29d61e2d939c6ee58f
+#   and also to mesa_7_4_branch as a1ce4efefbb7f796a0a24544a1e893a56848f0c1.
+#   Note: it was commited to the 7.4 branch after mesa 7.4.0 release.
+#   (LP: #368049)
+#
+
+Index: mesa-7.4/src/mesa/drivers/dri/r300/r300_context.h
+===================================================================
+--- mesa-7.4.orig/src/mesa/drivers/dri/r300/r300_context.h     2009-05-04 
12:07:48.000000000 +0200
++++ mesa-7.4/src/mesa/drivers/dri/r300/r300_context.h  2009-05-04 
12:08:56.000000000 +0200
+@@ -211,7 +211,7 @@
+ };
+ 
+ struct r300_texture_env_state {
+-      r300TexObjPtr texobj;
++      struct gl_texture_object *texobj;
+       GLenum format;
+       GLenum envMode;
+ };
+Index: mesa-7.4/src/mesa/drivers/dri/r300/r300_state.c
+===================================================================
+--- mesa-7.4.orig/src/mesa/drivers/dri/r300/r300_state.c       2009-05-04 
12:07:59.000000000 +0200
++++ mesa-7.4/src/mesa/drivers/dri/r300/r300_state.c    2009-05-04 
12:08:56.000000000 +0200
+@@ -1487,7 +1487,7 @@
+ #endif
+                       tmu_mappings[i] = hw_tmu;
+ 
+-                      t = r300->state.texture.unit[i].texobj;
++                      t = (r300TexObjPtr) 
r300->state.texture.unit[i].texobj->DriverData;
+                       /* XXX questionable fix for bug 9170: */
+                       if (!t)
+                               continue;
+Index: mesa-7.4/src/mesa/drivers/dri/r300/r300_texmem.c
+===================================================================
+--- mesa-7.4.orig/src/mesa/drivers/dri/r300/r300_texmem.c      2009-05-04 
12:08:07.000000000 +0200
++++ mesa-7.4/src/mesa/drivers/dri/r300/r300_texmem.c   2009-05-04 
12:08:56.000000000 +0200
+@@ -44,6 +44,7 @@
+ #include "main/colormac.h"
+ #include "main/macros.h"
+ #include "main/simple_list.h"
++#include "main/texobj.h"
+ #include "radeon_reg.h"               /* gets definition for usleep */
+ #include "r300_context.h"
+ #include "r300_state.h"
+@@ -71,8 +72,8 @@
+       }
+ 
+       for (i = 0; i < rmesa->radeon.glCtx->Const.MaxTextureUnits; i++) {
+-              if (rmesa->state.texture.unit[i].texobj == t) {
+-                      rmesa->state.texture.unit[i].texobj = NULL;
++              if (rmesa->state.texture.unit[i].texobj == t->base.tObj) {
++                      
_mesa_reference_texobj(&rmesa->state.texture.unit[i].texobj, NULL);
+               }
+       }
+ }
+Index: mesa-7.4/src/mesa/drivers/dri/r300/r300_texstate.c
+===================================================================
+--- mesa-7.4.orig/src/mesa/drivers/dri/r300/r300_texstate.c    2009-05-04 
12:08:17.000000000 +0200
++++ mesa-7.4/src/mesa/drivers/dri/r300/r300_texstate.c 2009-05-04 
12:08:56.000000000 +0200
+@@ -567,19 +567,20 @@
+       /* Update state if this is a different texture object to last
+        * time.
+        */
+-      if (rmesa->state.texture.unit[unit].texobj != t) {
++      if (rmesa->state.texture.unit[unit].texobj != tObj) {
+               if (rmesa->state.texture.unit[unit].texobj != NULL) {
++                      r300TexObjPtr t_old = (r300TexObjPtr) 
rmesa->state.texture.unit[unit].texobj->DriverData;
++
+                       /* The old texture is no longer bound to this texture 
unit.
+                        * Mark it as such.
+                        */
+ 
+-                      rmesa->state.texture.unit[unit].texobj->base.bound &=
+-                          ~(1 << unit);
++                      t_old->base.bound &= ~(1 << unit);
+               }
+ 
+-              rmesa->state.texture.unit[unit].texobj = t;
++              _mesa_reference_texobj(&rmesa->state.texture.unit[unit].texobj, 
tObj);
+               t->base.bound |= (1 << unit);
+-              driUpdateTextureLRU((driTextureObject *) t);    /* XXX: should 
be locked! */
++              driUpdateTextureLRU(&t->base);  /* XXX: should be locked! */
+       }
+ 
+       return !t->border_fallback;
diff --git a/debian/patches/series b/debian/patches/series
index 9e646e4..131afdb 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -6,3 +6,4 @@
 #103_bump_965_texture_limit.diff
 104_fix_dri2_ext_tfp.diff
 105_glXWaitX_segfaults.patch
+106_compiz_ring_switcher_xorg_segv_on_radeon.diff

commit 789ecb55156c0c11230a845ab7b6aa659927e857
Author: Bryce Harrington <br...@bryceharrington.org>
Date:   Mon May 4 10:18:08 2009 -0700

    Patch from mnemo to fix crash in R300/R400 cards

diff --git a/debian/patches/106_compiz_ring_switcher_xorg_segv_on_radeon.diff 
b/debian/patches/106_compiz_ring_switcher_xorg_segv_on_radeon.diff
new file mode 100644
index 0000000..6d72a52
--- /dev/null
+++ b/debian/patches/106_compiz_ring_switcher_xorg_segv_on_radeon.diff
@@ -0,0 +1,91 @@
+#
+# Ubuntu: https://bugs.launchpad.net/ubuntu/+source/mesa/+bug/368049
+# Upstream: https://bugs.freedesktop.org/show_bug.cgi?id=17895
+# Patch: 
http://cgit.freedesktop.org/mesa/mesa/commit/?h=mesa_7_4_branch&id=a1ce4efefbb7f796a0a24544a1e893a56848f0c1
+# Description: fix xserver segv triggered by compiz ring switcher plugin for 
users
+#   with r300/r400 radeon chipsets and -ati driver. Patch previously
+#   commited to mesa master as c28707b50701b1cf8727be29d61e2d939c6ee58f
+#   and also to mesa_7_4_branch as a1ce4efefbb7f796a0a24544a1e893a56848f0c1.
+#   Note: it was commited to the 7.4 branch after mesa 7.4.0 release.
+#   (LP: #368049)
+#
+
+Index: mesa-7.4/src/mesa/drivers/dri/r300/r300_context.h
+===================================================================
+--- mesa-7.4.orig/src/mesa/drivers/dri/r300/r300_context.h     2009-05-04 
12:07:48.000000000 +0200
++++ mesa-7.4/src/mesa/drivers/dri/r300/r300_context.h  2009-05-04 
12:08:56.000000000 +0200
+@@ -211,7 +211,7 @@
+ };
+ 
+ struct r300_texture_env_state {
+-      r300TexObjPtr texobj;
++      struct gl_texture_object *texobj;
+       GLenum format;
+       GLenum envMode;
+ };
+Index: mesa-7.4/src/mesa/drivers/dri/r300/r300_state.c
+===================================================================
+--- mesa-7.4.orig/src/mesa/drivers/dri/r300/r300_state.c       2009-05-04 
12:07:59.000000000 +0200
++++ mesa-7.4/src/mesa/drivers/dri/r300/r300_state.c    2009-05-04 
12:08:56.000000000 +0200
+@@ -1487,7 +1487,7 @@
+ #endif
+                       tmu_mappings[i] = hw_tmu;
+ 
+-                      t = r300->state.texture.unit[i].texobj;
++                      t = (r300TexObjPtr) 
r300->state.texture.unit[i].texobj->DriverData;
+                       /* XXX questionable fix for bug 9170: */
+                       if (!t)
+                               continue;
+Index: mesa-7.4/src/mesa/drivers/dri/r300/r300_texmem.c
+===================================================================
+--- mesa-7.4.orig/src/mesa/drivers/dri/r300/r300_texmem.c      2009-05-04 
12:08:07.000000000 +0200
++++ mesa-7.4/src/mesa/drivers/dri/r300/r300_texmem.c   2009-05-04 
12:08:56.000000000 +0200
+@@ -44,6 +44,7 @@
+ #include "main/colormac.h"
+ #include "main/macros.h"
+ #include "main/simple_list.h"
++#include "main/texobj.h"
+ #include "radeon_reg.h"               /* gets definition for usleep */
+ #include "r300_context.h"
+ #include "r300_state.h"
+@@ -71,8 +72,8 @@
+       }
+ 
+       for (i = 0; i < rmesa->radeon.glCtx->Const.MaxTextureUnits; i++) {
+-              if (rmesa->state.texture.unit[i].texobj == t) {
+-                      rmesa->state.texture.unit[i].texobj = NULL;
++              if (rmesa->state.texture.unit[i].texobj == t->base.tObj) {
++                      
_mesa_reference_texobj(&rmesa->state.texture.unit[i].texobj, NULL);
+               }
+       }
+ }
+Index: mesa-7.4/src/mesa/drivers/dri/r300/r300_texstate.c
+===================================================================
+--- mesa-7.4.orig/src/mesa/drivers/dri/r300/r300_texstate.c    2009-05-04 
12:08:17.000000000 +0200
++++ mesa-7.4/src/mesa/drivers/dri/r300/r300_texstate.c 2009-05-04 
12:08:56.000000000 +0200
+@@ -567,19 +567,20 @@
+       /* Update state if this is a different texture object to last
+        * time.
+        */
+-      if (rmesa->state.texture.unit[unit].texobj != t) {
++      if (rmesa->state.texture.unit[unit].texobj != tObj) {
+               if (rmesa->state.texture.unit[unit].texobj != NULL) {
++                      r300TexObjPtr t_old = (r300TexObjPtr) 
rmesa->state.texture.unit[unit].texobj->DriverData;
++
+                       /* The old texture is no longer bound to this texture 
unit.
+                        * Mark it as such.
+                        */
+ 
+-                      rmesa->state.texture.unit[unit].texobj->base.bound &=
+-                          ~(1 << unit);
++                      t_old->base.bound &= ~(1 << unit);
+               }
+ 
+-              rmesa->state.texture.unit[unit].texobj = t;
++              _mesa_reference_texobj(&rmesa->state.texture.unit[unit].texobj, 
tObj);
+               t->base.bound |= (1 << unit);
+-              driUpdateTextureLRU((driTextureObject *) t);    /* XXX: should 
be locked! */
++              driUpdateTextureLRU(&t->base);  /* XXX: should be locked! */
+       }
+ 
+       return !t->border_fallback;


-- 
To UNSUBSCRIBE, email to debian-x-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to