debian/changelog | 9 debian/patches/108_destroy_intel_fb.patch | 112 ++++++++++++ debian/patches/109_release_direct_rendering_resources.patch | 34 +++ debian/patches/series | 1 4 files changed, 154 insertions(+), 2 deletions(-)
New commits: commit 68fc342cb8649e5086e2361a6b1c3fbfbb67a859 Author: Bryce Harrington <br...@bryceharrington.org> Date: Tue Jun 23 14:37:06 2009 -0700 Add patch 109, another memory leak fix diff --git a/debian/changelog b/debian/changelog index f91e44e..708ebf0 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,10 +1,15 @@ mesa (7.4.1-1ubuntu3) karmic; urgency=low * Add 108_destroy_intel_fb.patch: Release fb backing regions in - intelDestroyBuffer() Fixes memory leak when destroying framebuffers. + intelDestroyBuffer(). Cherrypicked patch. Fixes memory leak when + destroying framebuffers. (LP: #360319) + * Add 109_release_direct_rendering_resources.patch: Cherrypicked patch. + Also release direct rendering resources in glXDestroyGLXPixmap. + Fixes leak running compiz with direct rendering. + (LP: #376092) - -- Bryce Harrington <br...@ubuntu.com> Tue, 23 Jun 2009 13:32:08 -0700 + -- Bryce Harrington <br...@ubuntu.com> Tue, 23 Jun 2009 13:44:02 -0700 mesa (7.4.1-1ubuntu2) karmic; urgency=low diff --git a/debian/patches/108_destroy_intel_fb.patch b/debian/patches/108_destroy_intel_fb.patch new file mode 100644 index 0000000..7edd8b8 --- /dev/null +++ b/debian/patches/108_destroy_intel_fb.patch @@ -0,0 +1,112 @@ +commit d027e8feff7d38cccadc6aaccc0454b21ce4dca0 +Author: Shuang He <shuang...@intel.com> +Date: Mon Jun 15 16:19:30 2009 -0600 + + intel: Release fb backing regions in intelDestroyBuffer() + + Fixes memory leak when destroying framebuffers. + +# 2009-06-23: Updated for mesa 7.4 ~ br...@canonical.com + +diff -Nurp mesa-ubuntu-git/src/mesa/drivers/dri/i915/intel_screen.c working/src/mesa/drivers/dri/i915/intel_screen.c +--- mesa-ubuntu-git/src/mesa/drivers/dri/i915/intel_screen.c 2009-04-11 01:08:05.000000000 -0700 ++++ working/src/mesa/drivers/dri/i915/intel_screen.c 2009-06-23 13:26:07.000000000 -0700 +@@ -385,6 +385,30 @@ intelCreateBuffer(__DRIscreenPrivate * d + static void + intelDestroyBuffer(__DRIdrawablePrivate * driDrawPriv) + { ++ struct intel_framebuffer *intel_fb = driDrawPriv->driverPrivate; ++ struct intel_renderbuffer *depth_rb; ++ struct intel_renderbuffer *stencil_rb; ++ ++ if (intel_fb) { ++ if (intel_fb->color_rb[0]) { ++ intel_renderbuffer_set_region(intel_fb->color_rb[0], NULL); ++ } ++ ++ if (intel_fb->color_rb[1]) { ++ intel_renderbuffer_set_region(intel_fb->color_rb[1], NULL); ++ } ++ ++ depth_rb = intel_get_renderbuffer(&intel_fb->Base, BUFFER_DEPTH); ++ if (depth_rb) { ++ intel_renderbuffer_set_region(depth_rb, NULL); ++ } ++ ++ stencil_rb = intel_get_renderbuffer(&intel_fb->Base, BUFFER_STENCIL); ++ if (stencil_rb) { ++ intel_renderbuffer_set_region(stencil_rb, NULL); ++ } ++ } ++ + _mesa_unreference_framebuffer((GLframebuffer **)(&(driDrawPriv->driverPrivate))); + } + +diff -Nurp mesa-ubuntu-git/src/mesa/drivers/dri/i965/intel_screen.c working/src/mesa/drivers/dri/i965/intel_screen.c +--- mesa-ubuntu-git/src/mesa/drivers/dri/i965/intel_screen.c 2009-04-11 01:08:05.000000000 -0700 ++++ working/src/mesa/drivers/dri/i965/intel_screen.c 2009-06-23 13:26:07.000000000 -0700 +@@ -385,6 +385,30 @@ intelCreateBuffer(__DRIscreenPrivate * d + static void + intelDestroyBuffer(__DRIdrawablePrivate * driDrawPriv) + { ++ struct intel_framebuffer *intel_fb = driDrawPriv->driverPrivate; ++ struct intel_renderbuffer *depth_rb; ++ struct intel_renderbuffer *stencil_rb; ++ ++ if (intel_fb) { ++ if (intel_fb->color_rb[0]) { ++ intel_renderbuffer_set_region(intel_fb->color_rb[0], NULL); ++ } ++ ++ if (intel_fb->color_rb[1]) { ++ intel_renderbuffer_set_region(intel_fb->color_rb[1], NULL); ++ } ++ ++ depth_rb = intel_get_renderbuffer(&intel_fb->Base, BUFFER_DEPTH); ++ if (depth_rb) { ++ intel_renderbuffer_set_region(depth_rb, NULL); ++ } ++ ++ stencil_rb = intel_get_renderbuffer(&intel_fb->Base, BUFFER_STENCIL); ++ if (stencil_rb) { ++ intel_renderbuffer_set_region(stencil_rb, NULL); ++ } ++ } ++ + _mesa_unreference_framebuffer((GLframebuffer **)(&(driDrawPriv->driverPrivate))); + } + +diff -Nurp mesa-ubuntu-git/src/mesa/drivers/dri/intel/intel_screen.c working/src/mesa/drivers/dri/intel/intel_screen.c +--- mesa-ubuntu-git/src/mesa/drivers/dri/intel/intel_screen.c 2009-04-11 01:08:05.000000000 -0700 ++++ working/src/mesa/drivers/dri/intel/intel_screen.c 2009-06-23 13:26:07.000000000 -0700 +@@ -385,6 +385,30 @@ intelCreateBuffer(__DRIscreenPrivate * d + static void + intelDestroyBuffer(__DRIdrawablePrivate * driDrawPriv) + { ++ struct intel_framebuffer *intel_fb = driDrawPriv->driverPrivate; ++ struct intel_renderbuffer *depth_rb; ++ struct intel_renderbuffer *stencil_rb; ++ ++ if (intel_fb) { ++ if (intel_fb->color_rb[0]) { ++ intel_renderbuffer_set_region(intel_fb->color_rb[0], NULL); ++ } ++ ++ if (intel_fb->color_rb[1]) { ++ intel_renderbuffer_set_region(intel_fb->color_rb[1], NULL); ++ } ++ ++ depth_rb = intel_get_renderbuffer(&intel_fb->Base, BUFFER_DEPTH); ++ if (depth_rb) { ++ intel_renderbuffer_set_region(depth_rb, NULL); ++ } ++ ++ stencil_rb = intel_get_renderbuffer(&intel_fb->Base, BUFFER_STENCIL); ++ if (stencil_rb) { ++ intel_renderbuffer_set_region(stencil_rb, NULL); ++ } ++ } ++ + _mesa_unreference_framebuffer((GLframebuffer **)(&(driDrawPriv->driverPrivate))); + } + diff --git a/debian/patches/109_release_direct_rendering_resources.patch b/debian/patches/109_release_direct_rendering_resources.patch new file mode 100644 index 0000000..66e153b --- /dev/null +++ b/debian/patches/109_release_direct_rendering_resources.patch @@ -0,0 +1,34 @@ +From 9dfce365c7f35ddea6d81b7f595ddcd6d35382a5 Mon Sep 17 00:00:00 2001 +From: Michel Dänzer <daen...@vmware.com> +Date: Fri, 19 Jun 2009 09:19:07 +0000 +Subject: Also release direct rendering resources in glXDestroyGLXPixmap. + +Fixes leak running compiz with direct rendering. +--- +diff --git a/src/glx/x11/glxcmds.c b/src/glx/x11/glxcmds.c +index ec3e69e..77471b8 100644 +--- a/src/glx/x11/glxcmds.c ++++ b/src/glx/x11/glxcmds.c +@@ -869,6 +869,20 @@ PUBLIC void glXDestroyGLXPixmap(Display *dpy, GLXPixmap glxpixmap) + req->glxpixmap = glxpixmap; + UnlockDisplay(dpy); + SyncHandle(); ++ ++#ifdef GLX_DIRECT_RENDERING ++ { ++ int screen; ++ __GLXdisplayPrivate *const priv = __glXInitialize(dpy); ++ __GLXDRIdrawable *pdraw = GetGLXDRIDrawable(dpy, glxpixmap, &screen); ++ __GLXscreenConfigs *psc = &priv->screenConfigs[screen]; ++ ++ if (pdraw != NULL) { ++ (*pdraw->destroyDrawable) (pdraw); ++ __glxHashDelete(psc->drawHash, glxpixmap); ++ } ++ } ++#endif + } + + PUBLIC void glXSwapBuffers(Display *dpy, GLXDrawable drawable) +-- +cgit v0.8.2 diff --git a/debian/patches/series b/debian/patches/series index 48241d9..90f2155 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -9,3 +9,4 @@ 105_glXWaitX_segfaults.patch 107_glxgears_is_not_a_benchmark.patch 108_destroy_intel_fb.patch +109_release_direct_rendering_resources.patch -- To UNSUBSCRIBE, email to debian-x-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org