mesa: Changes to 'ubuntu'
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 <bryce@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 <bryce@ubuntu.com> Tue, 23 Jun 2009 13:32:08 -0700
+ -- Bryce Harrington <bryce@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.he@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 ~ bryce@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 <daenzer@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
Reply to: