[arch-commits] Commit in xf86-video-intel/repos (7 files)

Jan de Groot jgc at archlinux.org
Sun May 10 12:52:56 EDT 2009


    Date: Sunday, May 10, 2009 @ 12:52:56
  Author: jgc
Revision: 38877

Merged revisions 36890,38876 via svnmerge from 
svn+ssh://svn.archlinux.org/srv/svn-packages/xf86-video-intel/trunk

........
  r36890 | eric | 2009-04-28 07:47:16 +0000 (Tue, 28 Apr 2009) | 2 lines
  
  upgpkg: xf86-video-intel 2.7.0-2
      License rebuild
........
  r38876 | jgc | 2009-05-10 16:52:31 +0000 (Sun, 10 May 2009) | 2 lines
  
  upgpkg: xf86-video-intel 2.7.0-3
      Update to latest commit in 2.7 branch
........

Added:
  xf86-video-intel/repos/extra-x86_64/2.7-branch.patch
    (from rev 38876, xf86-video-intel/trunk/2.7-branch.patch)
Modified:
  xf86-video-intel/repos/extra-x86_64/	(properties)
  xf86-video-intel/repos/extra-x86_64/PKGBUILD
Deleted:
  xf86-video-intel/repos/extra-x86_64/2.6.3-0002-Fix-Xv-crash-with-overlay-video.patch
  xf86-video-intel/repos/extra-x86_64/disable-reuse.patch
  xf86-video-intel/repos/extra-x86_64/vt-switch-leak-1.patch
  xf86-video-intel/repos/extra-x86_64/vt-switch-leak-2.patch

--------------------------------------------------+
 2.6.3-0002-Fix-Xv-crash-with-overlay-video.patch |   27 -
 2.7-branch.patch                                 |  436 +++++++++++++++++++++
 PKGBUILD                                         |   28 -
 disable-reuse.patch                              |   11 
 vt-switch-leak-1.patch                           |   49 --
 vt-switch-leak-2.patch                           |   24 -
 6 files changed, 448 insertions(+), 127 deletions(-)


Property changes on: xf86-video-intel/repos/extra-x86_64
___________________________________________________________________
Modified: svnmerge-integrated
   - /xf86-video-intel/trunk:1-36885
   + /xf86-video-intel/trunk:1-38876

Deleted: extra-x86_64/2.6.3-0002-Fix-Xv-crash-with-overlay-video.patch
===================================================================
--- extra-x86_64/2.6.3-0002-Fix-Xv-crash-with-overlay-video.patch	2009-05-10 16:52:31 UTC (rev 38876)
+++ extra-x86_64/2.6.3-0002-Fix-Xv-crash-with-overlay-video.patch	2009-05-10 16:52:56 UTC (rev 38877)
@@ -1,27 +0,0 @@
-From 2484b1ed2162c5b96173fd1b07ad3421d0dec5c2 Mon Sep 17 00:00:00 2001
-From: Kalev Lember <kalev at smartlink.ee>
-Date: Fri, 13 Mar 2009 21:32:08 +0200
-Subject: [PATCH 2/2] Fix Xv crash with overlay video.
-
-Bug #20585.
-(cherry picked from commit 2026c57cf0a352d9e6f9d208cfb7d4d550614477)
----
- src/i830_video.c |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/src/i830_video.c b/src/i830_video.c
-index c9a0181..0698107 100644
---- a/src/i830_video.c
-+++ b/src/i830_video.c
-@@ -1404,7 +1404,7 @@ I830CopyPlanarData(ScrnInfoPtr pScrn, I830PortPrivPtr pPriv,
- 	dst_base = pPriv->buf->virtual;
-     } else {
- 	drm_intel_gem_bo_start_gtt_access(pPriv->buf, TRUE);
--	dst_base = pI830->FbBase + pPriv->buf->offset;
-+	dst_base = pI830->FbBase;
-     }
- 
-     if (pPriv->currentBuf == 0)
--- 
-1.6.2
-

Copied: xf86-video-intel/repos/extra-x86_64/2.7-branch.patch (from rev 38876, xf86-video-intel/trunk/2.7-branch.patch)
===================================================================
--- extra-x86_64/2.7-branch.patch	                        (rev 0)
+++ extra-x86_64/2.7-branch.patch	2009-05-10 16:52:56 UTC (rev 38877)
@@ -0,0 +1,436 @@
+From 296a986e5258e2fd13ec494071b7063bd639cd68 Mon Sep 17 00:00:00 2001
+From: Zhenyu Wang <zhenyu.z.wang at intel.com>
+Date: Mon, 23 Mar 2009 11:19:58 +0000
+Subject: KMS: hook up output properties for randr
+
+This gets output properties from kernel, then hook them up
+for randr. So we can control output properties through randr
+like in UMS.
+
+Signed-off-by: Zhenyu Wang <zhenyu.z.wang at intel.com>
+---
+diff --git a/src/drmmode_display.c b/src/drmmode_display.c
+index a276ff7..7b97a64 100644
+--- a/src/drmmode_display.c
++++ b/src/drmmode_display.c
+@@ -35,6 +35,7 @@
+ #include "i830.h"
+ #include "intel_bufmgr.h"
+ #include "xf86drmMode.h"
++#include "X11/Xatom.h"
+ 
+ typedef struct {
+     int fd;
+@@ -52,11 +53,20 @@ typedef struct {
+ } drmmode_crtc_private_rec, *drmmode_crtc_private_ptr;
+ 
+ typedef struct {
++    drmModePropertyPtr mode_prop;
++    uint64_t value;
++    int num_atoms; /* if range prop, num_atoms == 1; if enum prop, num_atoms == num_enums + 1 */
++    Atom *atoms;
++} drmmode_prop_rec, *drmmode_prop_ptr;
++
++typedef struct {
+     drmmode_ptr drmmode;
+     int output_id;
+     drmModeConnectorPtr mode_output;
+     drmModeEncoderPtr mode_encoder;
+     drmModePropertyBlobPtr edid_blob;
++    int num_props;
++    drmmode_prop_ptr props;
+ } drmmode_output_private_rec, *drmmode_output_private_ptr;
+ 
+ static void
+@@ -508,9 +518,15 @@ static void
+ drmmode_output_destroy(xf86OutputPtr output)
+ {
+ 	drmmode_output_private_ptr drmmode_output = output->driver_private;
++	int i;
+ 
+ 	if (drmmode_output->edid_blob)
+ 		drmModeFreePropertyBlob(drmmode_output->edid_blob);
++	for (i = 0; i < drmmode_output->num_props; i++) {
++	    drmModeFreeProperty(drmmode_output->props[i].mode_prop);
++	    xfree(drmmode_output->props[i].atoms);
++	}
++	xfree(drmmode_output->props);
+ 	drmModeFreeConnector(drmmode_output->mode_output);
+ 	xfree(drmmode_output);
+ 	output->driver_private = NULL;
+@@ -542,7 +558,162 @@ drmmode_output_dpms(xf86OutputPtr output, int mode)
+ 	}
+ }
+ 
++static Bool
++drmmode_property_ignore(drmModePropertyPtr prop)
++{
++    if (!prop)
++	return TRUE;
++    /* ignore blob prop */
++    if (prop->flags & DRM_MODE_PROP_BLOB)
++	return TRUE;
++    /* ignore standard property */
++    if (!strcmp(prop->name, "EDID") ||
++	    !strcmp(prop->name, "DPMS"))
++	return TRUE;
++
++    return FALSE;
++}
++
++static void
++drmmode_output_create_resources(xf86OutputPtr output)
++{
++    drmmode_output_private_ptr drmmode_output = output->driver_private;
++    drmModeConnectorPtr mode_output = drmmode_output->mode_output;
++    drmmode_ptr drmmode = drmmode_output->drmmode;
++    drmModePropertyPtr drmmode_prop;
++    int i, j, err;
++
++    drmmode_output->props = xcalloc(mode_output->count_props, sizeof(drmmode_prop_rec));
++    if (!drmmode_output->props)
++	return;
++
++    drmmode_output->num_props = 0;
++    for (i = 0, j = 0; i < mode_output->count_props; i++) {
++	drmmode_prop = drmModeGetProperty(drmmode->fd, mode_output->props[i]);
++	if (drmmode_property_ignore(drmmode_prop)) {
++	    drmModeFreeProperty(drmmode_prop);
++	    continue;
++	}
++	drmmode_output->props[j].mode_prop = drmmode_prop;
++	drmmode_output->props[j].value = mode_output->prop_values[i];
++	drmmode_output->num_props++;
++	j++;
++    }
++
++    for (i = 0; i < drmmode_output->num_props; i++) {
++	drmmode_prop_ptr p = &drmmode_output->props[i];
++	drmmode_prop = p->mode_prop;
++
++	if (drmmode_prop->flags & DRM_MODE_PROP_RANGE) {
++	    INT32 range[2];
++
++	    p->num_atoms = 1;
++	    p->atoms = xcalloc(p->num_atoms, sizeof(Atom));
++	    if (!p->atoms)
++		continue;
++	    p->atoms[0] = MakeAtom(drmmode_prop->name, strlen(drmmode_prop->name), TRUE);
++	    range[0] = drmmode_prop->values[0];
++	    range[1] = drmmode_prop->values[1];
++	    err = RRConfigureOutputProperty(output->randr_output, p->atoms[0],
++		    FALSE, TRUE,
++		    drmmode_prop->flags & DRM_MODE_PROP_IMMUTABLE ? TRUE : FALSE,
++		    2, range);
++	    if (err != 0) {
++		xf86DrvMsg(output->scrn->scrnIndex, X_ERROR,
++			"RRConfigureOutputProperty error, %d\n", err);
++	    }
++	    err = RRChangeOutputProperty(output->randr_output, p->atoms[0],
++		    XA_INTEGER, 32, PropModeReplace, 1, &p->value, FALSE, TRUE);
++	    if (err != 0) {
++		xf86DrvMsg(output->scrn->scrnIndex, X_ERROR,
++			"RRChangeOutputProperty error, %d\n", err);
++	    }
++	} else if (drmmode_prop->flags & DRM_MODE_PROP_ENUM) {
++	    p->num_atoms = drmmode_prop->count_enums + 1;
++	    p->atoms = xcalloc(p->num_atoms, sizeof(Atom));
++	    if (!p->atoms)
++		continue;
++	    p->atoms[0] = MakeAtom(drmmode_prop->name, strlen(drmmode_prop->name), TRUE);
++	    for (j = 1; j <= drmmode_prop->count_enums; j++) {
++		struct drm_mode_property_enum *e = &drmmode_prop->enums[j-1];
++		p->atoms[j] = MakeAtom(e->name, strlen(e->name), TRUE);
++	    }
++	    err = RRConfigureOutputProperty(output->randr_output, p->atoms[0],
++		    FALSE, FALSE,
++		    drmmode_prop->flags & DRM_MODE_PROP_IMMUTABLE ? TRUE : FALSE,
++		    p->num_atoms - 1, (INT32 *)&p->atoms[1]);
++	    if (err != 0) {
++		xf86DrvMsg(output->scrn->scrnIndex, X_ERROR,
++			"RRConfigureOutputProperty error, %d\n", err);
++	    }
++	    for (j = 0; j < drmmode_prop->count_enums; j++)
++		if (drmmode_prop->enums[j].value == p->value)
++		    break;
++	    /* there's always a matching value */
++	    err = RRChangeOutputProperty(output->randr_output, p->atoms[0],
++		    XA_ATOM, 32, PropModeReplace, 1, &p->atoms[j+1], FALSE, TRUE);
++	    if (err != 0) {
++		xf86DrvMsg(output->scrn->scrnIndex, X_ERROR,
++			"RRChangeOutputProperty error, %d\n", err);
++	    }
++	}
++    }
++}
++
++static Bool
++drmmode_output_set_property(xf86OutputPtr output, Atom property,
++		RRPropertyValuePtr value)
++{
++    drmmode_output_private_ptr drmmode_output = output->driver_private;
++    drmmode_ptr drmmode = drmmode_output->drmmode;
++    int i;
++
++    for (i = 0; i < drmmode_output->num_props; i++) {
++	drmmode_prop_ptr p = &drmmode_output->props[i];
++
++	if (p->atoms[0] != property)
++	    continue;
++
++	if (p->mode_prop->flags & DRM_MODE_PROP_RANGE) {
++	    uint32_t val;
++
++	    if (value->type != XA_INTEGER || value->format != 32 ||
++		    value->size != 1)
++		return FALSE;
++	    val = *(uint32_t *)value->data;
++
++	    drmModeConnectorSetProperty(drmmode->fd, drmmode_output->output_id,
++		    p->mode_prop->prop_id, (uint64_t)val);
++	    return TRUE;
++	} else if (p->mode_prop->flags & DRM_MODE_PROP_ENUM) {
++	    Atom	atom;
++	    const char	*name;
++	    int		j;
++
++	    if (value->type != XA_ATOM || value->format != 32 || value->size != 1)
++		return FALSE;
++	    memcpy(&atom, value->data, 4);
++	    name = NameForAtom(atom);
++
++	    /* search for matching name string, then set its value down */
++	    for (j = 0; j < p->mode_prop->count_enums; j++) {
++		if (!strcmp(p->mode_prop->enums[j].name, name)) {
++		    drmModeConnectorSetProperty(drmmode->fd, drmmode_output->output_id,
++			    p->mode_prop->prop_id, p->mode_prop->enums[j].value);
++		    return TRUE;
++		}
++	    }
++	}
++    }
++    /* no property found? */
++    return FALSE;
++}
++
+ static const xf86OutputFuncsRec drmmode_output_funcs = {
++	.create_resources = drmmode_output_create_resources,
++#ifdef RANDR_12_INTERFACE
++	.set_property = drmmode_output_set_property,
++#endif
+ 	.dpms = drmmode_output_dpms,
+ #if 0
+ 
+--
+cgit v0.8.2
+From 115fc9a7d79da07301b96d9fc5c513d33734d273 Mon Sep 17 00:00:00 2001
+From: Keith Packard <keithp at keithp.com>
+Date: Fri, 01 May 2009 18:44:13 +0000
+Subject: intel_batch_start_atomic: fix size passed to intel_batch_require_space (*4)
+
+intel_batch_start_atomic takes an argument in 32-bit units, and so it must
+multiply that by 4 before passing it to intel_batch_require_space, which
+takes an argument in bytes.
+
+We should figure out what units we want to use and use the same everywhere...
+
+Signed-off-by: Keith Packard <keithp at keithp.com>
+(cherry picked from commit 1142353b487c155a31011923fbd08ec67e60f505)
+---
+diff --git a/src/i830_batchbuffer.h b/src/i830_batchbuffer.h
+index a72786e..ec87084 100644
+--- a/src/i830_batchbuffer.h
++++ b/src/i830_batchbuffer.h
+@@ -56,7 +56,7 @@ intel_batch_start_atomic(ScrnInfoPtr pScrn, unsigned int sz)
+     I830Ptr pI830 = I830PTR(pScrn);
+ 
+     assert(!pI830->in_batch_atomic);
+-    intel_batch_require_space(pScrn, pI830, sz);
++    intel_batch_require_space(pScrn, pI830, sz * 4);
+ 
+     pI830->in_batch_atomic = TRUE;
+     pI830->batch_atomic_limit = pI830->batch_used + sz * 4;
+--
+cgit v0.8.2
+From a066cfb0be6e6b20a27eb4ba17f503f13e65e082 Mon Sep 17 00:00:00 2001
+From: Carl Worth <cworth at cworth.org>
+Date: Wed, 06 May 2009 16:17:46 +0000
+Subject: Hold reference to video binding table until all rects are painted.
+
+The optimization of unreferencing the binding table when the relocation is
+posted causes the object to be dereferenced for each box in the clip list,
+causing general chaos in the buffer manager. It's easier to just hold a
+reference to the object until all of the boxes are painted and then drop it.
+
+Signed-off-by: Keith Packard <keithp at keithp.com>
+(cherry picked from commit 11a853bd8e5d907fe7f5bd907453bcdac9032861)
+
+Conflicts:
+
+	src/i965_video.c
+---
+diff --git a/src/i965_video.c b/src/i965_video.c
+index f6020d4..c0a69fd 100644
+--- a/src/i965_video.c
++++ b/src/i965_video.c
+@@ -795,7 +795,6 @@ i965_emit_video_setup(ScrnInfoPtr pScrn, drm_intel_bo *bind_bo, int n_src_surf)
+     OUT_BATCH(0); /* sf */
+     /* Only the PS uses the binding table */
+     OUT_RELOC(bind_bo, I915_GEM_DOMAIN_INSTRUCTION, 0, 0);
+-    drm_intel_bo_unreference(bind_bo);
+ 
+     /* Blend constant color (magenta is fun) */
+     OUT_BATCH(BRW_3DSTATE_CONSTANT_COLOR | 3);
+@@ -1161,6 +1160,10 @@ I965DisplayVideoTextured(ScrnInfoPtr pScrn, I830PortPrivPtr pPriv, int id,
+     }
+ 
+     i830MarkSync(pScrn);
++
++    /* release reference once we're finished */
++    drm_intel_bo_unreference(bind_bo);
++
+ #if WATCH_STATS
+     i830_dump_error_state(pScrn);
+ #endif
+--
+cgit v0.8.2
+From efda7c776b95f8634cd6a2fed88d526de80176bc Mon Sep 17 00:00:00 2001
+From: Carl Worth <cworth at cworth.org>
+Date: Wed, 06 May 2009 16:37:34 +0000
+Subject: Split i915 textured video commands to fit into batch buffers.
+
+i915 textured video commands are quite long, but must be contained in the
+same batch buffer as the 3D setup commands. When the number of clip rects
+for the video becomes too large for the associated commands to fit in the
+same batch buffer, this change breaks the sequence into pieces, ensuring
+that each batch contains the necessary setup sequence.
+
+Signed-off-by: Keith Packard <keithp at keithp.com>
+(cherry picked from commit 8255cca2c9092f7ecb798944aa8f03fa3efcfa6c)
+
+Conflicts:
+
+	src/i915_video.c
+---
+diff --git a/src/i915_video.c b/src/i915_video.c
+index 93e0c86..afa1055 100644
+--- a/src/i915_video.c
++++ b/src/i915_video.c
+@@ -50,7 +50,8 @@ I915DisplayVideoTextured(ScrnInfoPtr pScrn, I830PortPrivPtr pPriv, int id,
+    I830Ptr pI830 = I830PTR(pScrn);
+    uint32_t format, ms3, s5;
+    BoxPtr pbox = REGION_RECTS(dstRegion);
+-   int nbox = REGION_NUM_RECTS(dstRegion);
++   int nbox_total = REGION_NUM_RECTS(dstRegion);
++   int nbox_this_time;
+    int dxo, dyo, pix_xoff, pix_yoff;
+    Bool planar;
+ 
+@@ -73,7 +74,17 @@ I915DisplayVideoTextured(ScrnInfoPtr pScrn, I830PortPrivPtr pPriv, int id,
+       return;
+    }
+ 
+-   intel_batch_start_atomic(pScrn, 200 + 20 * nbox);
++#define BYTES_FOR_BOXES(n)	((200 + (n) * 20) * 4)
++#define BOXES_IN_BYTES(s)	((((s)/4) - 200) / 20)
++#define BATCH_BYTES(p)		((p)->batch_bo->size - 16)
++
++   while (nbox_total) {
++	nbox_this_time = nbox_total;
++	if (BYTES_FOR_BOXES(nbox_this_time) > BATCH_BYTES(pI830))
++		nbox_this_time = BOXES_IN_BYTES(BATCH_BYTES(pI830));
++	nbox_total -= nbox_this_time;
++
++   intel_batch_start_atomic(pScrn, 200 + 20 * nbox_this_time);
+ 
+    IntelEmitInvarientState(pScrn);
+    pI830->last_3d = LAST_3D_VIDEO;
+@@ -366,7 +377,7 @@ I915DisplayVideoTextured(ScrnInfoPtr pScrn, I830PortPrivPtr pPriv, int id,
+    dxo = dstRegion->extents.x1;
+    dyo = dstRegion->extents.y1;
+ 
+-   while (nbox--)
++   while (nbox_this_time--)
+    {
+       int box_x1 = pbox->x1;
+       int box_y1 = pbox->y1;
+@@ -415,6 +426,7 @@ I915DisplayVideoTextured(ScrnInfoPtr pScrn, I830PortPrivPtr pPriv, int id,
+    }
+ 
+    intel_batch_end_atomic(pScrn);
++   }
+ 
+    i830MarkSync(pScrn);
+ }
+--
+cgit v0.8.2
+From 77153d690a3673fdee7bef8e567816b754c43081 Mon Sep 17 00:00:00 2001
+From: Albert Damen <albrt at gmx.net>
+Date: Sun, 05 Apr 2009 14:36:35 +0000
+Subject: Fix crash with XV with large virtual display
+
+If a virtual display with width > 2048 is used, the first time
+an XV buffer is needed will result in a BadAlloc error message,
+but the next time X would crash.
+
+Signed-off-by: Eric Anholt <eric at anholt.net>
+(cherry picked from commit d7ca870e1ce251d42e3689a8e1e7d080ab1325fb)
+---
+diff --git a/src/i830_video.c b/src/i830_video.c
+index 4ed3047..a62d7a1 100644
+--- a/src/i830_video.c
++++ b/src/i830_video.c
+@@ -2392,6 +2392,7 @@ I830PutImage(ScrnInfoPtr pScrn,
+                 return BadAlloc;
+             if (!pPriv->textured && drm_intel_bo_pin(pPriv->buf, 4096) != 0) {
+                 drm_intel_bo_unreference(pPriv->buf);
++                pPriv->buf = NULL;
+                 xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
+                            "Failed to pin xv buffer\n");
+                 return BadAlloc;
+--
+cgit v0.8.2
+From ca63a5d4afd8482d280d8d64c58021e568931e27 Mon Sep 17 00:00:00 2001
+From: Keith Packard <keithp at keithp.com>
+Date: Fri, 01 May 2009 18:50:17 +0000
+Subject: 3D_STATE_VERTEX_BUFFERS takes four 32-bit values, not three.
+
+The spec says this command takes an extra (mbz) 32-bit value, so let's
+provide it with one.
+
+Signed-off-by: Keith Packard <keithp at keithp.com>
+(cherry picked from commit ed492131c13715b73c14d328d0668120acb58b40)
+---
+diff --git a/src/i965_video.c b/src/i965_video.c
+index c0a69fd..7b52de7 100644
+--- a/src/i965_video.c
++++ b/src/i965_video.c
+@@ -1130,15 +1130,16 @@ I965DisplayVideoTextured(ScrnInfoPtr pScrn, I830PortPrivPtr pPriv, int id,
+ 
+ 	i965_emit_video_setup(pScrn, bind_bo, n_src_surf);
+ 
+-	BEGIN_BATCH(10);
++	BEGIN_BATCH(12);
+ 	/* Set up the pointer to our vertex buffer */
+-	OUT_BATCH(BRW_3DSTATE_VERTEX_BUFFERS | 2);
++	OUT_BATCH(BRW_3DSTATE_VERTEX_BUFFERS | 3);
+ 	/* four 32-bit floats per vertex */
+ 	OUT_BATCH((0 << VB0_BUFFER_INDEX_SHIFT) |
+ 		  VB0_VERTEXDATA |
+ 		  ((4 * 4) << VB0_BUFFER_PITCH_SHIFT));
+ 	OUT_RELOC(vb_bo, I915_GEM_DOMAIN_VERTEX, 0, 0);
+ 	OUT_BATCH(3); /* four corners to our rectangle */
++	OUT_BATCH(0); /* reserved */
+ 
+ 	OUT_BATCH(BRW_3DPRIMITIVE |
+ 		  BRW_3DPRIMITIVE_VERTEX_SEQUENTIAL |
+@@ -1150,6 +1151,7 @@ I965DisplayVideoTextured(ScrnInfoPtr pScrn, I830PortPrivPtr pPriv, int id,
+ 	OUT_BATCH(1); /* single instance */
+ 	OUT_BATCH(0); /* start instance location */
+ 	OUT_BATCH(0); /* index buffer offset, ignored */
++	OUT_BATCH(MI_NOOP);
+ 	ADVANCE_BATCH();
+ 
+ 	intel_batch_end_atomic(pScrn);
+--
+cgit v0.8.2

Modified: extra-x86_64/PKGBUILD
===================================================================
--- extra-x86_64/PKGBUILD	2009-05-10 16:52:31 UTC (rev 38876)
+++ extra-x86_64/PKGBUILD	2009-05-10 16:52:56 UTC (rev 38877)
@@ -2,30 +2,26 @@
 # Maintainer: Alexander Baldeck <alexander at archlinux.org>
 # Maintainer: Jan de Groot <jgc at archlinux.org>
 pkgname=xf86-video-intel
-pkgver=2.6.3
-pkgrel=4
+pkgver=2.7.0
+pkgrel=3
 pkgdesc="X.org Intel i810/i830/i915/945G/G965+ video drivers"
 arch=(i686 x86_64)
 url="http://xorg.freedesktop.org/"
 license=('custom')
-depends=('intel-dri>=7.4' 'libpciaccess>=0.10.5' 'libdrm>=2.4.6' 'libxvmc')
-makedepends=('pkgconfig' 'xorg-server>=1.6.0' 'xf86driproto>=2.0.4' 'glproto>=1.4.9' 'mesa>=7.4' 'xineramaproto')
-conflicts=('xorg-server<1.6.0' 'xf86-video-i810')
-options=('!libtool' 'force')
+depends=('intel-dri>=7.4.1' 'libpciaccess>=0.10.6' 'libdrm>=2.4.9' 'libxvmc')
+makedepends=('pkgconfig' 'xorg-server>=1.6.1' 'xf86driproto>=2.0.4' 'glproto>=1.4.9' 'mesa>=7.4.1' 'xineramaproto')
+conflicts=('xorg-server<1.6.0' 'xf86-video-i810' 'xf86-video-intel-legacy')
+options=('!libtool')
 groups=('xorg-video-drivers')
-source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2
-	vt-switch-leak-1.patch
-	vt-switch-leak-2.patch
-	2.6.3-0002-Fix-Xv-crash-with-overlay-video.patch LICENSE)
-md5sums=('440c014bbd3072b5d379fe1bdb861918' 'e468cfc5aabfe0ff0fcda7eb3243c343'\
-         '2db78fef97610bd50b124baeea3027d7' '1bcedcd65e9bc3c87a6d26d7c97d1692'\
-         'b924480931774dec14515e270db4924d')
+source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2 LICENSE
+	2.7-branch.patch)
+md5sums=('5832172ac69b9a066a202e1578a5d3c8'
+	 'b924480931774dec14515e270db4924d'
+	 '8c941e35cb56426900cade66b3c0f055')
 
 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}/2.6.3-0002-Fix-Xv-crash-with-overlay-video.patch" || return 1
+  patch -Np1 -i "${srcdir}/2.7-branch.patch" || return 1
   ./configure --prefix=/usr --enable-dri || return 1
   make || return 1
   make DESTDIR="${pkgdir}" install || return 1

Deleted: extra-x86_64/disable-reuse.patch
===================================================================
--- extra-x86_64/disable-reuse.patch	2009-05-10 16:52:31 UTC (rev 38876)
+++ extra-x86_64/disable-reuse.patch	2009-05-10 16:52:56 UTC (rev 38877)
@@ -1,11 +0,0 @@
-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,

Deleted: extra-x86_64/vt-switch-leak-1.patch
===================================================================
--- extra-x86_64/vt-switch-leak-1.patch	2009-05-10 16:52:31 UTC (rev 38876)
+++ extra-x86_64/vt-switch-leak-1.patch	2009-05-10 16:52:56 UTC (rev 38877)
@@ -1,49 +0,0 @@
-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

Deleted: extra-x86_64/vt-switch-leak-2.patch
===================================================================
--- extra-x86_64/vt-switch-leak-2.patch	2009-05-10 16:52:31 UTC (rev 38876)
+++ extra-x86_64/vt-switch-leak-2.patch	2009-05-10 16:52:56 UTC (rev 38877)
@@ -1,24 +0,0 @@
-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