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