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

xserver-xorg-video-intel: Changes to 'debian-unstable'



 ChangeLog                               |  161 ++++++++++++++++++++++++++++++
 NEWS                                    |   47 ++++++++
 README                                  |   14 --
 RELEASING                               |   43 +++++---
 configure.ac                            |    2 
 debian/changelog                        |    5 
 debian/xserver-xorg-video-intel.install |    1 
 src/drmmode_display.c                   |  171 ++++++++++++++++++++++++++++++++
 src/i830_batchbuffer.h                  |    2 
 src/i830_video.c                        |    1 
 src/i915_video.c                        |   18 ++-
 src/i965_video.c                        |   11 +-
 12 files changed, 444 insertions(+), 32 deletions(-)

New commits:
commit be5e8111a0b6b5ff3d643bea6f8728637ae4d070
Author: Brice Goglin <bgoglin@debian.org>
Date:   Wed May 13 07:14:54 2009 +0200

    Prepare changelog for upload

diff --git a/debian/changelog b/debian/changelog
index f62895e..23732c8 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,4 +1,4 @@
-xserver-xorg-video-intel (2:2.7.1-1) UNRELEASED; urgency=low
+xserver-xorg-video-intel (2:2.7.1-1) unstable; urgency=low
 
   [ Brice Goglin ]
   * New upstream release.
@@ -10,7 +10,7 @@ xserver-xorg-video-intel (2:2.7.1-1) UNRELEASED; urgency=low
     choose a driver during autoconfiguration.
     + Disable patch system and remove quilt from build-deps.
 
- -- Brice Goglin <bgoglin@debian.org>  Wed, 13 May 2009 07:12:20 +0200
+ -- Brice Goglin <bgoglin@debian.org>  Wed, 13 May 2009 07:14:50 +0200
 
 xserver-xorg-video-intel (2:2.7.0-1) unstable; urgency=low
 

commit 601ff5a50657d354ba3ca0d91a50949a95307ad8
Author: Brice Goglin <bgoglin@debian.org>
Date:   Wed May 13 07:23:25 2009 +0200

    Don't try to install the now missing pci ids file

diff --git a/debian/xserver-xorg-video-intel.install b/debian/xserver-xorg-video-intel.install
index ddb0f1b..c4ac13e 100644
--- a/debian/xserver-xorg-video-intel.install
+++ b/debian/xserver-xorg-video-intel.install
@@ -1,4 +1,3 @@
 usr/lib/xorg/modules/drivers/*.so
 usr/lib/libI810XvMC.so*
 usr/lib/libIntelXvMC.so*
-usr/share/xserver-xorg/pci/*

commit 923798326ce3e622e5618340a4a620910c89f6c0
Author: Brice Goglin <bgoglin@debian.org>
Date:   Wed May 13 07:12:45 2009 +0200

    New upstream release

diff --git a/ChangeLog b/ChangeLog
index 1e56b05..ca6fd26 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,164 @@
+commit ba7d739416796d4045952209a0a0090a78d3978d
+Author: Carl Worth <cworth@cworth.org>
+Date:   Tue May 12 17:14:11 2009 -0700
+
+    Update version to 2.7.1
+    
+    In preparation for the 2.7.1 maintenance release.
+
+commit b0ad6ad6698643bfabc6a570c145d457ca70e0f5
+Author: Carl Worth <cworth@cworth.org>
+Date:   Tue May 12 17:13:26 2009 -0700
+
+    NEWS: Update release notes for 2.7.1
+    
+    Just changing the wording to turn 2.7.0.901 into 2.7.1.
+
+commit ae5b6d8135c7170821db37de0245b0e6b7a87e59
+Author: Carl Worth <cworth@cworth.org>
+Date:   Tue May 12 11:45:03 2009 -0700
+
+    RELEASING: Better instructions for where to send announcements
+    
+    The xorg-announce list doesn't need to hear about development
+    snapshots and release candidates. The intel-gfx list is good for
+    that.
+
+commit 2d7ddfe8d52e6d1dfc3d1a3de00940816d2e09ff
+Author: Carl Worth <cworth@cworth.org>
+Date:   Fri May 8 17:14:22 2009 -0700
+
+    Increment version number to 2.7.0.901
+    
+    Which means this is the first release candidate in preparation for 2.7.1.
+
+commit 9c7213fa7273742d91cd31a6052306043d9da784
+Author: Carl Worth <cworth@cworth.org>
+Date:   Fri May 8 17:13:44 2009 -0700
+
+    NEWS: Add items for 2.7.0.901 release candidate
+    
+    There are some nice bug fixes here.
+
+commit ca63a5d4afd8482d280d8d64c58021e568931e27
+Author: Keith Packard <keithp@keithp.com>
+Date:   Fri May 1 11:50:17 2009 -0700
+
+    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@keithp.com>
+    (cherry picked from commit ed492131c13715b73c14d328d0668120acb58b40)
+
+commit 77153d690a3673fdee7bef8e567816b754c43081
+Author: Albert Damen <albrt@gmx.net>
+Date:   Sun Apr 5 16:36:35 2009 +0200
+
+    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@anholt.net>
+    (cherry picked from commit d7ca870e1ce251d42e3689a8e1e7d080ab1325fb)
+
+commit efda7c776b95f8634cd6a2fed88d526de80176bc
+Author: Carl Worth <cworth@cworth.org>
+Date:   Wed May 6 09:37:34 2009 -0700
+
+    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@keithp.com>
+    (cherry picked from commit 8255cca2c9092f7ecb798944aa8f03fa3efcfa6c)
+    
+    Conflicts:
+    
+    	src/i915_video.c
+
+commit a066cfb0be6e6b20a27eb4ba17f503f13e65e082
+Author: Carl Worth <cworth@cworth.org>
+Date:   Wed May 6 09:17:46 2009 -0700
+
+    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@keithp.com>
+    (cherry picked from commit 11a853bd8e5d907fe7f5bd907453bcdac9032861)
+    
+    Conflicts:
+    
+    	src/i965_video.c
+
+commit 115fc9a7d79da07301b96d9fc5c513d33734d273
+Author: Keith Packard <keithp@keithp.com>
+Date:   Fri May 1 11:44:13 2009 -0700
+
+    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@keithp.com>
+    (cherry picked from commit 1142353b487c155a31011923fbd08ec67e60f505)
+
+commit 296a986e5258e2fd13ec494071b7063bd639cd68
+Author: Zhenyu Wang <zhenyu.z.wang@intel.com>
+Date:   Mon Mar 23 19:19:58 2009 +0800
+
+    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@intel.com>
+
+commit 300eddb8773344bf073f8f30a9c0a2c4bcdf983f
+Author: Carl Worth <cworth@cworth.org>
+Date:   Wed Apr 15 18:18:14 2009 -0700
+
+    README: Fix typos in chipset list, and point to how_to_report_bug web page
+    
+    Thanks to Gordon Jin for these suggestions.
+    (cherry picked from commit 73c3be1aa033e8c5c7ee777eb2fd43c19668fa86)
+
+commit e1d336e9885fc4bb219dfc347570bb2ec637ff7d
+Author: Carl Worth <cworth@cworth.org>
+Date:   Wed Apr 15 16:44:11 2009 -0700
+
+    RELEASING: Update instructions to reflect some minor process improvements
+    
+    We've added a NEWS file now, so that needs to be updated for each release.
+    
+    We're also now using tag names of just <version> rather than
+    xf86-video-intel-<version>.
+    (cherry picked from commit 3fd5a1ecd1d5140ae07ccc279298bcadd515e97f)
+
+commit 976ef05ad18d7d798649a0a198c4d88488677f87
+Author: Carl Worth <cworth@cworth.org>
+Date:   Wed Apr 15 16:33:12 2009 -0700
+
+    NEWS: Add note about broken PAT code in some kernels
+    
+    Hoping to cut off some false bug reports here.
+    (cherry picked from commit e1cace16a6130dcdd93965d2329a349d49200fa6)
+
 commit cff6cf9adc4235af5cc73a47bb272c81635fc8b2
 Author: Carl Worth <cworth@cworth.org>
 Date:   Wed Apr 15 16:20:16 2009 -0700
diff --git a/debian/changelog b/debian/changelog
index 34f0ad0..f62895e 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,6 +1,7 @@
-xserver-xorg-video-intel (2:2.7.0-2) UNRELEASED; urgency=low
+xserver-xorg-video-intel (2:2.7.1-1) UNRELEASED; urgency=low
 
   [ Brice Goglin ]
+  * New upstream release.
   * Install the upstream NEWS file, closes: #524334, #524336.
   * Move the -dbg package to section debug.
 
@@ -9,7 +10,7 @@ xserver-xorg-video-intel (2:2.7.0-2) UNRELEASED; urgency=low
     choose a driver during autoconfiguration.
     + Disable patch system and remove quilt from build-deps.
 
- -- David Nusinow <dnusinow@debian.org>  Mon, 04 May 2009 22:07:53 -0400
+ -- Brice Goglin <bgoglin@debian.org>  Wed, 13 May 2009 07:12:20 +0200
 
 xserver-xorg-video-intel (2:2.7.0-1) unstable; urgency=low
 

commit ba7d739416796d4045952209a0a0090a78d3978d
Author: Carl Worth <cworth@cworth.org>
Date:   Tue May 12 17:14:11 2009 -0700

    Update version to 2.7.1
    
    In preparation for the 2.7.1 maintenance release.

diff --git a/configure.ac b/configure.ac
index 061c537..c70d7a6 100644
--- a/configure.ac
+++ b/configure.ac
@@ -22,7 +22,7 @@
 
 AC_PREREQ(2.57)
 AC_INIT([xf86-video-intel],
-        2.7.0.901,
+        2.7.1,
         [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],
         xf86-video-intel)
 

commit b0ad6ad6698643bfabc6a570c145d457ca70e0f5
Author: Carl Worth <cworth@cworth.org>
Date:   Tue May 12 17:13:26 2009 -0700

    NEWS: Update release notes for 2.7.1
    
    Just changing the wording to turn 2.7.0.901 into 2.7.1.

diff --git a/NEWS b/NEWS
index 580c6b2..0dc3aa9 100644
--- a/NEWS
+++ b/NEWS
@@ -1,10 +1,9 @@
-Release 2.7.0.901 (2009-05-08)
-------------------------------
-This is (release candidate for) a maintenance release on the 2.7
-branch. Compared to 2.7.0 it consists only of a few carefully
-hand-picked fixes for bugs. We encourage willing testers to give this
-release candidate a try and report back any problems. If no major
-problems are identified, this same code will become 2.7.1.
+Release 2.7.1 (2009-05-12)
+--------------------------
+This is a maintenance release on the 2.7 branch. Compared to 2.7.0 it
+consists only of a few carefully hand-picked fixes for bugs,
+(including GPU crashers). We encourage all users of 2.7.0 to upgrade
+to 2.7.1.
 
 Bug fixes since 2.7.0:
 

commit ae5b6d8135c7170821db37de0245b0e6b7a87e59
Author: Carl Worth <cworth@cworth.org>
Date:   Tue May 12 11:45:03 2009 -0700

    RELEASING: Better instructions for where to send announcements
    
    The xorg-announce list doesn't need to hear about development
    snapshots and release candidates. The intel-gfx list is good for
    that.

diff --git a/RELEASING b/RELEASING
index 9376110..2196c8f 100644
--- a/RELEASING
+++ b/RELEASING
@@ -33,8 +33,19 @@ The process for releasing a new tarball is as follows:
 
 	$ <path_to>/util/modular/release.sh driver <last_ver> <ver>
 
-7. Edit the generated release message as needed and send it out
+7. Edit and send the generated release message.
 
 	At the very least, add the release notes from the NEWS file.
 
+	The message is generated as xf86-video-inte-<version>.announce
+
+	For snapshots and release candidates, mail to:
+
+		intel-gfx@lists.freedesktop.org
+
+	For major releases also send to:
+
+		xorg@lists.freedesktop.org
+		xorg-announce@lists.freedesktop.org
+
 8. Throw a release party, you're done! :)

commit 2d7ddfe8d52e6d1dfc3d1a3de00940816d2e09ff
Author: Carl Worth <cworth@cworth.org>
Date:   Fri May 8 17:14:22 2009 -0700

    Increment version number to 2.7.0.901
    
    Which means this is the first release candidate in preparation for 2.7.1.

diff --git a/configure.ac b/configure.ac
index 41ae79c..061c537 100644
--- a/configure.ac
+++ b/configure.ac
@@ -22,7 +22,7 @@
 
 AC_PREREQ(2.57)
 AC_INIT([xf86-video-intel],
-        2.7.0,
+        2.7.0.901,
         [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],
         xf86-video-intel)
 

commit 9c7213fa7273742d91cd31a6052306043d9da784
Author: Carl Worth <cworth@cworth.org>
Date:   Fri May 8 17:13:44 2009 -0700

    NEWS: Add items for 2.7.0.901 release candidate
    
    There are some nice bug fixes here.

diff --git a/NEWS b/NEWS
index 0d0cd8a..580c6b2 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,41 @@
+Release 2.7.0.901 (2009-05-08)
+------------------------------
+This is (release candidate for) a maintenance release on the 2.7
+branch. Compared to 2.7.0 it consists only of a few carefully
+hand-picked fixes for bugs. We encourage willing testers to give this
+release candidate a try and report back any problems. If no major
+problems are identified, this same code will become 2.7.1.
+
+Bug fixes since 2.7.0:
+
+    * KMS: Hook up output properties for RANDR, (this allows output
+      properties to be controlled in the KMS case just as in the UMS
+      case). [Zhenyu Wang <zhenyu.z.wang@intel.com>]
+
+    * Fix multiplication error when computing required batch space.
+      This could fix any number of cases where the driver did
+      inexplicable things (due to having computed the wrong
+      size). [Keith Packard <keithp@keithp.com>]
+
+    * Hold reference to video binding table until all rects are
+      painted. This prevent general chaos in the buffer
+      manager. [Keith Packard <keithp@keithp.com>]
+
+    * Split i915 textured video commands to fit into batch
+      buffers. Video and 3D setup commands share the same batch
+      buffer, so without this fix, various problems could occur when
+      video and 3D clients were both heavily active at the same
+      time. [Keith Packard <keithp@keithp.com>]
+
+    * Fix crash with XV with large virtual display (> 2049). [Albert
+      Damen <albrt@gmx.net>]
+
+    * Provide missing value to 3D_STATE_VERTEX_BUFFERS command. We
+      don't know that this was causing any problem, but the change
+      does bring the driver into conformance with what the
+      specification says the hardware requires here. [Keith Packard
+      <keithp@keithp.com>]
+
 Release 2.7.0 (2009-04-15)
 --------------------------
 Compared to the 2.6 series, 2.7.0 has a large number of bug fixes, but

commit ca63a5d4afd8482d280d8d64c58021e568931e27
Author: Keith Packard <keithp@keithp.com>
Date:   Fri May 1 11:50:17 2009 -0700

    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@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);

commit 77153d690a3673fdee7bef8e567816b754c43081
Author: Albert Damen <albrt@gmx.net>
Date:   Sun Apr 5 16:36:35 2009 +0200

    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@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;

commit efda7c776b95f8634cd6a2fed88d526de80176bc
Author: Carl Worth <cworth@cworth.org>
Date:   Wed May 6 09:37:34 2009 -0700

    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@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);
 }

commit a066cfb0be6e6b20a27eb4ba17f503f13e65e082
Author: Carl Worth <cworth@cworth.org>
Date:   Wed May 6 09:17:46 2009 -0700

    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@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

commit 115fc9a7d79da07301b96d9fc5c513d33734d273
Author: Keith Packard <keithp@keithp.com>
Date:   Fri May 1 11:44:13 2009 -0700

    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@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;

commit 296a986e5258e2fd13ec494071b7063bd639cd68
Author: Zhenyu Wang <zhenyu.z.wang@intel.com>
Date:   Mon Mar 23 19:19:58 2009 +0800

    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@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
 

commit 300eddb8773344bf073f8f30a9c0a2c4bcdf983f
Author: Carl Worth <cworth@cworth.org>
Date:   Wed Apr 15 18:18:14 2009 -0700

    README: Fix typos in chipset list, and point to how_to_report_bug web page
    
    Thanks to Gordon Jin for these suggestions.
    (cherry picked from commit 73c3be1aa033e8c5c7ee777eb2fd43c19668fa86)

diff --git a/README b/README
index 8ac6e1f..96db084 100644
--- a/README
+++ b/README
@@ -9,11 +9,10 @@ the X Window System as implemented by X.org. It supports a variety of
 Intel graphics chipsets including:
 
 	i810/i810e/i810-dc100,i815,
-	i830M,845G,852GM,855GM,865M,
+	i830M,845G,852GM,855GM,865G,
 	915G/GM,945G/GM/GME,946GZ
-	G/GM/GME965,
-	G/Q33,G/Q35,G41,G/Q43
-	G/GM/Q45
+	G/GM/GME/Q965,
+	G/Q33,G/Q35,G41,G/Q43,G/GM/Q45
 
 Where to get more information about the driver
 ----------------------------------------------
@@ -39,12 +38,9 @@ xf86-video-intel:
 
 	http://lists.freedesktop.org/mailman/listinfo/intel-gfx
 
-To report bugs encountered with the driver:
+To report bugs encountered with the driver, see:
 
-	http://bugs.freedesktop.org
-
-	Product:	xorg
-	Component:	Driver/intel
+	http://intellinuxgraphics.org/how_to_report_bug.html
 
 To see bugs that are targeted to be fixed in the next release:
 

commit e1d336e9885fc4bb219dfc347570bb2ec637ff7d
Author: Carl Worth <cworth@cworth.org>
Date:   Wed Apr 15 16:44:11 2009 -0700

    RELEASING: Update instructions to reflect some minor process improvements
    
    We've added a NEWS file now, so that needs to be updated for each release.
    
    We're also now using tag names of just <version> rather than
    xf86-video-intel-<version>.
    (cherry picked from commit 3fd5a1ecd1d5140ae07ccc279298bcadd515e97f)

diff --git a/RELEASING b/RELEASING
index c4006c3..9376110 100644
--- a/RELEASING
+++ b/RELEASING
@@ -1,32 +1,40 @@
 The process for releasing a new tarball is as follows:
 
-1. make sure you have the latest build requirements installed:
+1. Make sure you have the latest build requirements installed:
 
 	git://git.freedesktop.org/git/util/macros
 	git://git.freedesktop.org/git/util/modular
 
-2. update your module version (usually found in configure.ac)
+2. Add relevant release notes to the NEWS files
+
+	Skim the git log since the last release, and add notes in a
+	similar style to previous releases.
+
+	For major releases list added features and known limitations.
+
+	For minor releases indicate which bugs were fixed and which
+	are still present.
+
+
+3. Update your module version (usually found in configure.ac)
 
 	$ vi configure.ac # bump version
         $ git push origin # make sure you're on the release branch
 
-3. verify your module builds
+4. Verify your module builds
 
 	$ make distcheck
 
-4. tag the release
-
-	$ git tag -m "Intel <ver> release" xf86-video-intel-<ver>
+5. Tag the release
 
-5. run the release script (this should push the tag)
+	$ git tag -m "Intel <ver> release" <ver>
 
-	$ <path_to>/util/modular/release.sh driver xf86-video-intel-<last_ver> xf86-video-intel-<ver>
+6. Run the release script (this should push the tag)
 
-6. edit the generated release message as needed and send it out
+	$ <path_to>/util/modular/release.sh driver <last_ver> <ver>
 
-	for major releases list added features and known limitations
+7. Edit the generated release message as needed and send it out
 
-	for minor releases indicate which bugs were fixed and which
-	are still present
+	At the very least, add the release notes from the NEWS file.
 
-7. throw a release party, you're done! :)
+8. Throw a release party, you're done! :)

commit 976ef05ad18d7d798649a0a198c4d88488677f87
Author: Carl Worth <cworth@cworth.org>
Date:   Wed Apr 15 16:33:12 2009 -0700

    NEWS: Add note about broken PAT code in some kernels
    
    Hoping to cut off some false bug reports here.
    (cherry picked from commit e1cace16a6130dcdd93965d2329a349d49200fa6)

diff --git a/NEWS b/NEWS
index c059c98..0d0cd8a 100644
--- a/NEWS
+++ b/NEWS
@@ -19,6 +19,16 @@ this release, which should give the best performance and
 robustness. When KMS is available, UXA is the default acceleration
 used by the driver, (EXA is the default otherwise).
 
+Known issue:
+
+	Some Linux kernel versions (such as 2.6.29) are known to have
+	broken PAT code that causes recent versions of this driver to
+	fail, (which can manifest as the X server simply not
+	starting). This can be verified by adding the "nopat" option
+	to the kernel command-line and seeing the failure go away. We
+	hope that newer kernels in the 2.6.29.x as well as 2.6.30 and
+	above will have working PAT code.
+
 Some of the most notable bugs fixed in 2.7.0 include:
 


Reply to: