[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: