[arch-commits] Commit in xf86-video-intel/trunk (4 files)

Jan de Groot jgc at archlinux.org
Sat Mar 7 16:14:07 UTC 2009


    Date: Saturday, March 7, 2009 @ 11:14:07
  Author: jgc
Revision: 29267

upgpkg: xf86-video-intel 2.6.3-2
    Add two patches to fix vtswitch leaks, add another one that removes an optimization which causes unlimited texture caching

Added:
  xf86-video-intel/trunk/disable-reuse.patch
  xf86-video-intel/trunk/vt-switch-leak-1.patch
  xf86-video-intel/trunk/vt-switch-leak-2.patch
Modified:
  xf86-video-intel/trunk/PKGBUILD

------------------------+
 PKGBUILD               |   15 +++++++++++---
 disable-reuse.patch    |   11 ++++++++++
 vt-switch-leak-1.patch |   49 +++++++++++++++++++++++++++++++++++++++++++++++
 vt-switch-leak-2.patch |   24 +++++++++++++++++++++++
 4 files changed, 96 insertions(+), 3 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2009-03-07 14:48:36 UTC (rev 29266)
+++ PKGBUILD	2009-03-07 16:14:07 UTC (rev 29267)
@@ -3,7 +3,7 @@
 # Maintainer: Jan de Groot <jgc at archlinux.org>
 pkgname=xf86-video-intel
 pkgver=2.6.3
-pkgrel=1
+pkgrel=2
 pkgdesc="X.org Intel i810/i830/i915/945G/G965+ video drivers"
 arch=(i686 x86_64)
 url="http://xorg.freedesktop.org/"
@@ -13,11 +13,20 @@
 replaces=('xf86-video-i810')
 options=('!libtool' 'force')
 groups=('xorg-video-drivers')
-source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
-md5sums=('440c014bbd3072b5d379fe1bdb861918')
+source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2
+	vt-switch-leak-1.patch
+	vt-switch-leak-2.patch
+	disable-reuse.patch)
+md5sums=('440c014bbd3072b5d379fe1bdb861918'
+         'e468cfc5aabfe0ff0fcda7eb3243c343'
+         '2db78fef97610bd50b124baeea3027d7'
+	 '535239b0cee9c46c00077ab34e769e0a')
 
 build() {
   cd "${srcdir}/${pkgname}-${pkgver}"
+  patch -Np1 -i "${srcdir}/vt-switch-leak-1.patch" || return 1
+  patch -Np1 -i "${srcdir}/vt-switch-leak-2.patch" || return 1
+  patch -Np1 -i "${srcdir}/disable-reuse.patch" || return 1
   ./configure --prefix=/usr --enable-dri || return 1
   make || return 1
   make DESTDIR="${pkgdir}" install || return 1

Added: disable-reuse.patch
===================================================================
--- disable-reuse.patch	                        (rev 0)
+++ disable-reuse.patch	2009-03-07 16:14:07 UTC (rev 29267)
@@ -0,0 +1,11 @@
+diff -ru xf86-video-intel-2.6.3.orig/src/i830_driver.c xf86-video-intel-2.6.3/src/i830_driver.c
+--- xf86-video-intel-2.6.3.orig/src/i830_driver.c	2009-03-02 19:21:02.000000000 +0000
++++ xf86-video-intel-2.6.3/src/i830_driver.c	2009-03-07 15:58:05.000000000 +0000
+@@ -2951,7 +2951,6 @@
+ 	 batch_size = 4096;
+ 
+       pI830->bufmgr = intel_bufmgr_gem_init(pI830->drmSubFD, batch_size);
+-      intel_bufmgr_gem_enable_reuse(pI830->bufmgr);
+    } else {
+       assert(pI830->FbBase != NULL);
+       pI830->bufmgr = intel_bufmgr_fake_init(pI830->drmSubFD,

Added: vt-switch-leak-1.patch
===================================================================
--- vt-switch-leak-1.patch	                        (rev 0)
+++ vt-switch-leak-1.patch	2009-03-07 16:14:07 UTC (rev 29267)
@@ -0,0 +1,49 @@
+From d4c64f01b9429a8fb314e43f40d1f02bb8aab30f Mon Sep 17 00:00:00 2001
+From: Lukas Hejtmanek <xhejtman at ics.muni.cz>
+Date: Wed, 04 Mar 2009 22:33:27 +0000
+Subject: Fix serious memory leak at Enter/LeaveVT
+
+This fixes huge memory leak at each VT switch (about 600 BOs + 6MB
+of RSS of Xserver).
+---
+diff --git a/src/i965_render.c b/src/i965_render.c
+index de1c8b3..ab7f7d2 100644
+--- a/src/i965_render.c
++++ b/src/i965_render.c
+@@ -1715,7 +1715,7 @@ gen4_render_state_cleanup(ScrnInfoPtr pScrn)
+ {
+     I830Ptr pI830 = I830PTR(pScrn);
+     struct gen4_render_state *render_state= pI830->gen4_render_state;
+-    int i;
++    int i, j, k, l, m;
+ 
+     if (render_state->vertex_buffer_bo) {
+ 	dri_bo_unreference (render_state->vertex_buffer_bo);
+@@ -1728,12 +1728,23 @@ gen4_render_state_cleanup(ScrnInfoPtr pScrn)
+     render_state->sf_state_bo = NULL;
+     drm_intel_bo_unreference(render_state->sf_mask_state_bo);
+     render_state->sf_mask_state_bo = NULL;
+-    drm_intel_bo_unreference(render_state->cc_state_bo);
+-    render_state->cc_state_bo = NULL;
++
+     for (i = 0; i < WM_KERNEL_COUNT; i++) {
+ 	drm_intel_bo_unreference(render_state->wm_kernel_bo[i]);
+ 	render_state->wm_kernel_bo[i] = NULL;
+     }
++
++    for (i = 0; i < SAMPLER_STATE_FILTER_COUNT; i++)
++	for (j = 0; j < SAMPLER_STATE_EXTEND_COUNT; j++)
++	    for (k = 0; k < SAMPLER_STATE_FILTER_COUNT; k++)
++		for (l = 0; l < SAMPLER_STATE_EXTEND_COUNT; l++)
++		    for (m = 0; m < WM_KERNEL_COUNT; m++) {
++			drm_intel_bo_unreference(render_state->wm_state_bo[m][i][j][k][l]);
++			render_state->wm_state_bo[m][i][j][k][l] = NULL;
++		    }
++
++    drm_intel_bo_unreference(render_state->cc_state_bo);
++    render_state->cc_state_bo = NULL;
+     drm_intel_bo_unreference(render_state->sip_kernel_bo);
+     render_state->sip_kernel_bo = NULL;
+ }
+--
+cgit v0.8.2

Added: vt-switch-leak-2.patch
===================================================================
--- vt-switch-leak-2.patch	                        (rev 0)
+++ vt-switch-leak-2.patch	2009-03-07 16:14:07 UTC (rev 29267)
@@ -0,0 +1,24 @@
+From 1cc9b1423c5df591c615ef9588b6eefd81448f80 Mon Sep 17 00:00:00 2001
+From: Lukáš Hejtmánek <xhejtman at ics.muni.cz>
+Date: Fri, 06 Mar 2009 19:44:03 +0000
+Subject: Fix another VT switch leak
+
+The batch_bo buffer object is reallocated on enter VT, so we need to
+unref it on leave vt.
+
+Signed-off-by: Lukas Hejtmanek <xhejtman at ics.muni.cz>
+---
+diff --git a/src/i830_batchbuffer.c b/src/i830_batchbuffer.c
+index 671e8c8..33da43e 100644
+--- a/src/i830_batchbuffer.c
++++ b/src/i830_batchbuffer.c
+@@ -159,6 +159,7 @@ intel_batch_teardown(ScrnInfoPtr pScrn)
+ 
+     if (pI830->batch_ptr != NULL) {
+ 	dri_bo_unmap(pI830->batch_bo);
++	dri_bo_unreference(pI830->batch_bo);
+ 	pI830->batch_ptr = NULL;
+     }
+ }
+--
+cgit v0.8.2




More information about the arch-commits mailing list