[arch-commits] Commit in xf86-video-intel/repos (7 files)
Jan de Groot
jgc at archlinux.org
Sun May 10 16:52:56 UTC 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