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

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



 ChangeLog                  |  483 +++++
 NEWS                       |   23 
 configure.ac               |    6 
 debian/changelog           |    2 
 src/intel.h                |    3 
 src/intel_dri.c            |   54 
 src/intel_module.c         |    6 
 src/sna/Makefile.am        |    1 
 src/sna/brw/brw_wm.c       |    4 
 src/sna/g4x_render.c       | 3695 +++++++++++++++++++++++++++++++++++++++++++++
 src/sna/gen2_render.c      |   10 
 src/sna/gen3_render.c      |    4 
 src/sna/gen4_render.c      |   69 
 src/sna/gen5_render.c      |   15 
 src/sna/gen6_render.c      |   13 
 src/sna/gen7_render.c      |   13 
 src/sna/kgem.c             |   10 
 src/sna/kgem.h             |   32 
 src/sna/sna.h              |    4 
 src/sna/sna_accel.c        |   43 
 src/sna/sna_blt.c          |   40 
 src/sna/sna_composite.c    |    1 
 src/sna/sna_display.c      |   11 
 src/sna/sna_dri.c          |  199 +-
 src/sna/sna_glyphs.c       |    3 
 src/sna/sna_io.c           |   44 
 src/sna/sna_render.c       |  169 +-
 src/sna/sna_render.h       |    4 
 src/sna/sna_video_sprite.c |   14 
 uxa/uxa-render.c           |    2 
 30 files changed, 4725 insertions(+), 252 deletions(-)

New commits:
commit c79db61fb4026f69ec0710ea75e5195c4abb5552
Author: Timo Aaltonen <tjaalton@ubuntu.com>
Date:   Thu Nov 29 12:17:34 2012 +0200

    update the changelogs

diff --git a/ChangeLog b/ChangeLog
index a3b9168..ae97de6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,486 @@
+commit 7a904ce839933d57176e013cdad147533c33ca2f
+Author: Chris Wilson <chris@chris-wilson.co.uk>
+Date:   Mon Nov 26 08:48:31 2012 +0000
+
+    2.20.14 release
+    
+    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+
+commit 1367e3f9ef5f606c8927cbde441a2ea41fa6d025
+Author: Chris Wilson <chris@chris-wilson.co.uk>
+Date:   Sun Nov 25 00:24:45 2012 +0000
+
+    sna: Exploit the alpha-fixup of the BLT for texture format conversions
+    
+    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+
+commit 6d6399f97cf7cb91dcf89e9a5cd1243f761e4314
+Author: Chris Wilson <chris@chris-wilson.co.uk>
+Date:   Sun Nov 25 00:05:44 2012 +0000
+
+    sna: Transform a simple repeat pattern into range of the BLT
+    
+    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+
+commit 39f1e228b74e98d3d87157cf093fc56ca31e6b13
+Author: Chris Wilson <chris@chris-wilson.co.uk>
+Date:   Sat Nov 24 20:16:29 2012 +0000
+
+    sna: Make GPU idle more consistent during wakeup
+    
+    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+
+commit 40b6121746c55153de444ccb753df80706ff3a69
+Author: Chris Wilson <chris@chris-wilson.co.uk>
+Date:   Fri Nov 23 18:21:41 2012 +0000
+
+    sna/g4x: Refine the w/a for the broken sf shader
+    
+    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+
+commit e0b906b09697b5fe7a5be2fdc52abd9b1c73f96d
+Author: Chris Wilson <chris@chris-wilson.co.uk>
+Date:   Fri Nov 23 18:01:25 2012 +0000
+
+    sna/g4x: Use the render pipeline more often for composite operations
+    
+    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+
+commit 54d8968da5ae39bfbcad511322926931bce2bda3
+Author: Chris Wilson <chris@chris-wilson.co.uk>
+Date:   Fri Nov 23 17:47:49 2012 +0000
+
+    sna/gen4: Revert changes to 965g[m]
+    
+    The changes tested on g45/gm45 prove to be highly unstable on 965gm,
+    suggesting a radical difference in the nature of the bugs between the
+    two generations. In theory, g4x has additional features that could be
+    exploited over and above gen4 which may prove interesting in the future.
+    
+    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+
+commit d560296561f68c3ac841345c0f4ce2c8e7381156
+Author: Chris Wilson <chris@chris-wilson.co.uk>
+Date:   Fri Nov 23 16:35:06 2012 +0000
+
+    sna/gen4: Don't force a flush for the dirty target if the we do not read back
+    
+    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+
+commit 4023b2044757a9a67d564be0c8adf4885973a6e3
+Author: Chris Wilson <chris@chris-wilson.co.uk>
+Date:   Fri Nov 23 15:42:18 2012 +0000
+
+    sna/gen4: Force composite(WHITE, glyph) for building the glyphstring mask
+    
+    For reasons that are not apparent, if we don't composite with
+    source/mask for the glyph strings, there appears to be some cache
+    corruption. About as bizarre as the rest of gen4 idiosynacracies.
+    
+    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+
+commit f74b62755c6e41097c23cc506984859e556a3415
+Author: Chris Wilson <chris@chris-wilson.co.uk>
+Date:   Fri Nov 23 14:59:42 2012 +0000
+
+    sna/gen4: Set composite op before testing for a BLT compatible op
+    
+    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+
+commit 4c922eb52cadb867a0a15929e5a214c84a5992f3
+Author: Chris Wilson <chris@chris-wilson.co.uk>
+Date:   Fri Nov 23 14:19:59 2012 +0000
+
+    sna/gen4: Pass the mask channel explicitly rather than through a dummy mask
+    
+    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+
+commit 2e68efa8ec66b4c89e9816bfa15067b398da5e3e
+Author: Chris Wilson <chris@chris-wilson.co.uk>
+Date:   Fri Nov 23 14:04:51 2012 +0000
+
+    sna/gen4: Reduce the flush before performing the CA pass
+    
+    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+
+commit 43aff6708fe97aa2fae0e30f98fc7cd9d7311b75
+Author: Chris Wilson <chris@chris-wilson.co.uk>
+Date:   Fri Nov 23 13:37:44 2012 +0000
+
+    sna/gen4: Update render fill routines to use the dummy mask
+    
+    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+
+commit 352910712266202ef017066891ec383fd037fc4a
+Author: Chris Wilson <chris@chris-wilson.co.uk>
+Date:   Fri Nov 23 13:29:01 2012 +0000
+
+    sna/gen4: Move the flush from inside the spans to emit_state()
+    
+    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+
+commit 217f3e835b99002669999f818afa0d5c3a1cc852
+Author: Chris Wilson <chris@chris-wilson.co.uk>
+Date:   Fri Nov 23 12:32:14 2012 +0000
+
+    sna/gen4: Backport the more efficient composite box emitters
+    
+    Now that we aren't flushing after every single rectangle, we can strive
+    for a little efficiency.
+    
+    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+
+commit d3145e3f8146e7d864d32aec49c44c04d619e56a
+Author: Chris Wilson <chris@chris-wilson.co.uk>
+Date:   Fri Nov 23 12:28:21 2012 +0000
+
+    sna/gen4: Use a dummy white mask to avoid the flush w/a when compositing
+    
+    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+
+commit 65d530b59b957cc5f303ae819baad8075a555ac0
+Author: Chris Wilson <chris@chris-wilson.co.uk>
+Date:   Thu Nov 22 08:18:38 2012 +0000
+
+    Revert "uxa: Refactor early-exit paths of uxa_try_driver_composite()."
+    
+    This reverts commit fa5c573455cf63090dbb6d167d4e5f1cb23daf72 as it
+    causes a SIGSEGV.
+    
+    Reported-by: lu hua <huax.lu@intel.com>
+    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=57389
+
+commit d3a49f36395d737698616fe8ba9da7b74cd2d89a
+Author: Chris Wilson <chris@chris-wilson.co.uk>
+Date:   Wed Nov 21 18:41:00 2012 +0000
+
+    sna/gen3+: Clear the render.vbo when replacing it for vertex upload
+    
+    As we may trigger a flush and a retire when searching for a vertex
+    buffer for the new vertices, we need to be careful to decouple the
+    destroyed vbo in order to avoid a use-after-free when inspecting the
+    state.
+    
+    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+
+commit 1c57a52a1f46e8401429955d8c96fd5095c9012a
+Author: Chris Wilson <chris@chris-wilson.co.uk>
+Date:   Wed Nov 21 18:17:31 2012 +0000
+
+    sna: Assert that we do not replace a GPU bo with a proxy
+    
+    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+
+commit 8da12a00ee653510e1f1a6fecb28dbb36faa8400
+Author: Chris Wilson <chris@chris-wilson.co.uk>
+Date:   Wed Nov 21 17:28:46 2012 +0000
+
+    sna: Skip uploading unintialiased pixmap data
+    
+    References: https://bugs.freedesktop.org/show_bug.cgi?id=47597
+    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+
+commit 0696ea4bd601ed823dbded03eaef6f316df2a5e8
+Author: Chris Wilson <chris@chris-wilson.co.uk>
+Date:   Wed Nov 21 17:25:33 2012 +0000
+
+    sna: Add the missing assertion for !proxy
+    
+    References: https://bugs.freedesktop.org/show_bug.cgi?id=47597
+    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+
+commit ee72375ecd4f6d6e756bc361fa512b6675309540
+Author: Chris Wilson <chris@chris-wilson.co.uk>
+Date:   Wed Nov 21 17:08:53 2012 +0000
+
+    sna: Do not migrate uninitialised pixmaps
+    
+    Reported-by: Jiri Slaby <jirislaby@gmail.com>
+    References: https://bugs.freedesktop.org/show_bug.cgi?id=47597
+    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+
+commit 44dad490140d85a4c0dcb916030c36a838670c01
+Author: Chris Wilson <chris@chris-wilson.co.uk>
+Date:   Wed Nov 21 16:22:35 2012 +0000
+
+    sna: Do not dispose of a shadow pixmap
+    
+    Fixes regression from 2249e9edc37811c07e2807d6b4def05585b44c22
+    
+    Reported-by: Jiri Slaby <jirislaby@gmail.com>
+    References: https://bugs.freedesktop.org/show_bug.cgi?id=47597
+    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+
+commit 9c627a05247690891062a2c0c1c8f7bbc0273104
+Author: Chris Wilson <chris@chris-wilson.co.uk>
+Date:   Wed Nov 21 16:03:02 2012 +0000
+
+    sna: Remove the kgem_bo_is_mappable refcnt assertion from freed paths
+    
+    A few callers of kgem_bo_is_mappable operate on freed bo, and so need to
+    avoid the assert(bo->refcnt).
+    
+    References: https://bugs.freedesktop.org/show_bug.cgi?id=47597
+    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+
+commit c0c48c7a5aca4d24936efbeaefc7674ada2ef87f
+Author: Chris Wilson <chris@chris-wilson.co.uk>
+Date:   Wed Nov 21 14:46:45 2012 +0000
+
+    sna: Add a few refcnt assertions
+    
+    References: https://bugs.freedesktop.org/show_bug.cgi?id=47597
+    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+
+commit 0884777c33d20dbc329b98ad0db5ffb0df93ac8c
+Author: Chris Wilson <chris@chris-wilson.co.uk>
+Date:   Wed Nov 21 14:31:44 2012 +0000
+
+    sna: Fix bogus assertion from 03fb9ded43
+    
+    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+
+commit 2249e9edc37811c07e2807d6b4def05585b44c22
+Author: Chris Wilson <chris@chris-wilson.co.uk>
+Date:   Wed Nov 21 13:05:36 2012 +0000
+
+    sna: Dispose of local copy for render sources
+    
+    If we transfer the pixmap to the GPU to use as a render source, presume
+    that we will not need to then touch the local copy (at least for a
+    while) and so return that memory to the system.
+    
+    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+
+commit 736bb0f7058bf05ef48cdfe6a30d880de817aff9
+Author: Chris Wilson <chris@chris-wilson.co.uk>
+Date:   Wed Nov 21 12:16:46 2012 +0000
+
+    sna: Tighten a couple of assertions for damage with use_bo
+    
+    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+
+commit 03fb9ded43f9bf8b73f99d5b3a8dc592fe22b523
+Author: Chris Wilson <chris@chris-wilson.co.uk>
+Date:   Tue Nov 20 21:13:07 2012 +0000
+
+    sna: Assert that we do not create a proxy with existent GPU damage
+    
+    References: http://bugs.freedesktop.org/show_bug.cgi?id=47597
+    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+
+commit 9ab1d1f94e502e5fde87e7c171f3502f8a55f22b
+Author: Chris Wilson <chris@chris-wilson.co.uk>
+Date:   Tue Nov 20 18:42:58 2012 +0000
+
+    sna/dri: Queue a vblank-continuation after flip-completion
+    
+    If a vblank request was delayed due to a pending flip, we need to make
+    sure that we then queue it after that flip or else progress ceases.
+    
+    Reported-by: Jiri Slaby <jirislaby@gmail.com>
+    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=56423
+    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=57156
+    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+
+commit 7a7a76b359f73a4c4bcda0d88004f4dd5e94a186
+Author: Chris Wilson <chris@chris-wilson.co.uk>
+Date:   Tue Nov 20 16:05:32 2012 +0000
+
+    sna/dri: Avoid a NULL dereference inside a DBG
+    
+    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+
+commit fa5c573455cf63090dbb6d167d4e5f1cb23daf72
+Author: Eric Anholt <eric@anholt.net>
+Date:   Sat Nov 17 13:11:13 2012 -0800
+
+    uxa: Refactor early-exit paths of uxa_try_driver_composite().
+    
+    Saves 200b of code at -O2.
+
+commit edefb64d2b1c95b0b678cb222273ab64b2e6db2a
+Author: Eric Anholt <eric@anholt.net>
+Date:   Sat Nov 17 13:11:12 2012 -0800
+
+    uxa: Work around uninitialized-value warning.
+    
+    The compiler isn't noticing that localDst only diverges from pDst when
+    the _copy variables have also been set.
+
+commit 18b2e2a82724407196001ca853bd83150c66c5bd
+Author: Eric Anholt <eric@anholt.net>
+Date:   Sat Nov 17 13:11:10 2012 -0800
+
+    uxa: Add printf attribute to intel_debug_fallback().
+    
+    Shuts up a bunch of warnings with xorg's shared warning flags, and
+    should give us more informative warnings in our code.
+
+commit 2d1e267e662505ca0dd318765464a24739dc5bd8
+Author: Eric Anholt <eric@anholt.net>
+Date:   Sat Nov 17 13:11:09 2012 -0800
+
+    uxa/dri: Factor out the repeated swap fallback code.
+
+commit cd2f373da7a14e004c999f9f0efaf88c785d3d3f
+Author: Eric Anholt <eric@anholt.net>
+Date:   Sat Nov 17 13:11:08 2012 -0800
+
+    configure.ac: Fix bad syntax for test calls
+
+commit b8c01d9bd7ce5656706ebebd16e5a8c5ca0ba487
+Author: Chris Wilson <chris@chris-wilson.co.uk>
+Date:   Mon Nov 19 15:20:10 2012 +0000
+
+    sna/dri: Add an assert that the cached DRI2 buffer is pinned for DRI
+    
+    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+
+commit 84b1a02fa9fde02366e0384044526982e70d0e8d
+Author: Chris Wilson <chris@chris-wilson.co.uk>
+Date:   Mon Nov 19 13:41:28 2012 +0000
+
+    sna/dri: Avoid setting off-delay after a failed flip (use-after-free)
+    
+    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+
+commit b4dd1103a55406bcd65f137c668701074a5c41b6
+Author: Chris Wilson <chris@chris-wilson.co.uk>
+Date:   Sun Nov 18 12:21:49 2012 +0000
+
+    sna/gen6+: Tweak prefer-blt to offset latency when in rc6
+    
+    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+
+commit 0cb8544dc16d4c1e9ae7f1ee74ee26c7501a9ed7
+Author: Chris Wilson <chris@chris-wilson.co.uk>
+Date:   Sun Nov 18 12:13:46 2012 +0000
+
+    Remove useless indirection of intel_chipsets
+    
+    Once upon a time this was used to hide a compiler warning about a
+    pointer mismatch, now the compiler still warns about the cast, making
+    the indirect moot.
+    
+    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+
+commit 8509e474f57533fc6afcf213165f4c8633631fb5
+Author: Chris Wilson <chris@chris-wilson.co.uk>
+Date:   Fri Nov 16 23:02:44 2012 +0000
+
+    sna/dri: Clear the last-used-cpu flag when performing CopyRegion
+    
+    Keeps the internal bookkeeping intact after the small bypass.
+    
+    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+
+commit 866ed4a26cbbb29ef3845b0aa56383c4d951c65a
+Author: Chris Wilson <chris@chris-wilson.co.uk>
+Date:   Thu Nov 15 15:13:14 2012 +0000
+
+    sna/dri: Add a couple of more asserts to track injection of a rogue bo
+    
+    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+
+commit d2897cb0136ffec83365c7530ed544b562cac478
+Author: Chris Wilson <chris@chris-wilson.co.uk>
+Date:   Tue Nov 13 12:43:44 2012 +0000
+
+    sna/gen4,5: Fix the opacity shader to use the right vertex attribute
+    
+    Reported-by: Edward Sheldrake <ejsheldrake@gmail.com>
+    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=57054
+    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+
+commit 440eaa049756e5266f3bd80e2751f1fd0d5f9890
+Author: Chris Wilson <chris@chris-wilson.co.uk>
+Date:   Tue Nov 13 12:42:58 2012 +0000
+
+    sna/gen4: Tidy emission of opacity vertex attribute
+    
+    Just make it more consistent between the various emitters
+    
+    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+
+commit b6d2bb961517623d46aa6944307cb998ee125459
+Author: Chris Wilson <chris@chris-wilson.co.uk>
+Date:   Tue Nov 13 10:05:56 2012 +0000
+
+    sna/gen4: Do not prefer inplace non-rectilinear spans
+    
+    As gen4 requires the per-rectangle vertex flush, emitting spans on the
+    GPU is inefficient and so we prefer to composite the mask instead.
+    
+    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+
+commit ae293609c7400cd3c753ed3762772264c4741df5
+Author: Chris Wilson <chris@chris-wilson.co.uk>
+Date:   Tue Nov 13 10:21:29 2012 +0000
+
+    sna/gen4: Always initialise redirect
+    
+    Do not assume the caller cleared the composite-op structure for us.
+    
+    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+
+commit 2954f15e2bcb590a90c2cb6077c0843ee25a4413
+Author: Chris Wilson <chris@chris-wilson.co.uk>
+Date:   Tue Nov 13 09:46:19 2012 +0000
+
+    sna: Specialise the decision for inplace xor uploads
+    
+    Fixes a regression from
+    
+    commit 0be1d964713ca407f029278a8256d02d925dc9da
+    Author: Chris Wilson <chris@chris-wilson.co.uk>
+    Date:   Tue Sep 11 21:48:24 2012 +0100
+    
+        sna: Use inplace X tiling for LLC uploads
+    
+    which introduced the ability to swizzle into CPU maps, but also
+    convinced the xorg path to the same - which for large images blows up.
+    
+    Reported-by: Michael Laß <bevan@bi-co.net>
+    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=57031
+    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+
+commit 66eb0adffa63ef8ece7621ba90dc96af91549612
+Author: Chris Wilson <chris@chris-wilson.co.uk>
+Date:   Mon Nov 12 14:45:56 2012 +0000
+
+    sna/dri: Apply the can_blit() check for CopyRegion
+    
+    CopyRegion() also needs to check for stale bo in case the pixmap
+    dimensions have changed size and so may cause out-of-bounds read/writes.
+    
+    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+
+commit b27ecf3059bc066ef59f2a71c1d8d8f0ffec7191
+Author: Chris Wilson <chris@chris-wilson.co.uk>
+Date:   Mon Nov 12 14:06:06 2012 +0000
+
+    sna/dri: Prevent scheduling a swap on stale buffers
+    
+    If the screen has been reconfigured and the DRI client tries to swap the
+    old buffers (having not processed the invalidate event and retrieved the
+    current names), quietly drop the request. If we try to obey the request,
+    we will end up attaching a back buffer that is the wrong size to the
+    scanout...
+    
+    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+
+commit 34aa1e3b2702a55799a5655a3ba10bce4cc2065a
+Author: Chris Wilson <chris@chris-wilson.co.uk>
+Date:   Mon Nov 12 11:22:53 2012 +0000
+
+    sna: Compile against ancient libdrm
+    
+    We need to trim the sprite video overlays if the prototypes are not
+    known.
+    
+    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+
 commit 8f1afde57dca27e6542b0b8e7c87750f3d6367bf
 Author: Chris Wilson <chris@chris-wilson.co.uk>
 Date:   Sun Nov 11 16:16:20 2012 +0000
diff --git a/debian/changelog b/debian/changelog
index 5b61fbd..dac9143 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,4 +1,4 @@
-xserver-xorg-video-intel (2:2.20.13-1) UNRELEASED; urgency=low
+xserver-xorg-video-intel (2:2.20.14-1) UNRELEASED; urgency=low
 
   [ Timo Aaltonen ]
   * New upstream bugfix release.

commit 7a904ce839933d57176e013cdad147533c33ca2f
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Mon Nov 26 08:48:31 2012 +0000

    2.20.14 release
    
    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>

diff --git a/NEWS b/NEWS
index 3d29cfe..8e48fbb 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,26 @@
+Release 2.20.14 (2012-11-26)
+============================
+The highlight of this release is gen4, from 965g to gm45. Quite an old
+bug surfaced in the shader assembly, sparking a chance to review a few
+design choices within that backend and experiment on fresh ways to
+workaround the remaining issues.
+
+ * Avoid using inplace XOR'ed uploads for very large buffers
+   https://bugs.freedesktop.org/show_bug.cgi?id=57031
+
+ * Fix the gen4/5 opacity shader
+   https://bugs.freedesktop.org/show_bug.cgi?id=57054
+
+ * Queue a pending vblank request after flip completion
+   https://bugs.freedesktop.org/show_bug.cgi?id=56423
+
+ * Avoid migrating an uninitialised pixmap for use as a render source
+   https://bugs.freedesktop.org/show_bug.cgi?id=47597
+
+ * Improve handing of texture fallbacks for 830/845.
+   https://bugs.freedesktop.org/show_bug.cgi?id=57392
+
+
 Release 2.20.13 (2012-11-11)
 ============================
 Nothing but bug fixes. Many thanks to everyone who took the time to
diff --git a/configure.ac b/configure.ac
index 92c77f5..9004ce5 100644
--- a/configure.ac
+++ b/configure.ac
@@ -23,7 +23,7 @@
 # Initialize Autoconf
 AC_PREREQ([2.60])
 AC_INIT([xf86-video-intel],
-        [2.20.13],
+        [2.20.14],
         [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],
         [xf86-video-intel])
 AC_CONFIG_SRCDIR([Makefile.am])

commit 1367e3f9ef5f606c8927cbde441a2ea41fa6d025
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Sun Nov 25 00:24:45 2012 +0000

    sna: Exploit the alpha-fixup of the BLT for texture format conversions
    
    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>

diff --git a/src/sna/g4x_render.c b/src/sna/g4x_render.c
index 9de8340..f92a33a 100644
--- a/src/sna/g4x_render.c
+++ b/src/sna/g4x_render.c
@@ -1927,7 +1927,8 @@ g4x_composite_picture(struct sna *sna,
 	channel->card_format = g4x_get_card_format(picture->format);
 	if (channel->card_format == -1)
 		return sna_render_picture_convert(sna, picture, channel, pixmap,
-						  x, y, w, h, dst_x, dst_y);
+						  x, y, w, h, dst_x, dst_y,
+						  false);
 
 	if (too_large(pixmap->drawable.width, pixmap->drawable.height))
 		return sna_render_picture_extract(sna, picture, channel,
diff --git a/src/sna/gen2_render.c b/src/sna/gen2_render.c
index 9663dff..31074af 100644
--- a/src/sna/gen2_render.c
+++ b/src/sna/gen2_render.c
@@ -1304,7 +1304,8 @@ static bool
 gen2_check_card_format(struct sna *sna,
 		       PicturePtr picture,
 		       struct sna_composite_channel *channel,
-		       int x, int y, int w, int h)
+		       int x, int y, int w, int h,
+		       bool *fixup_alpha)
 {
 	uint32_t format = picture->format;
 	unsigned int i;
@@ -1324,10 +1325,12 @@ gen2_check_card_format(struct sna *sna,
 				return true;
 			}
 
+			*fixup_alpha = true;
 			return false;
 		}
 	}
 
+	*fixup_alpha = false;
 	return false;
 }
 
@@ -1343,6 +1346,7 @@ gen2_composite_picture(struct sna *sna,
 	PixmapPtr pixmap;
 	uint32_t color;
 	int16_t dx, dy;
+	bool fixup_alpha;
 
 	DBG(("%s: (%d, %d)x(%d, %d), dst=(%d, %d)\n",
 	     __FUNCTION__, x, y, w, h, dst_x, dst_y));
@@ -1417,9 +1421,9 @@ gen2_composite_picture(struct sna *sna,
 	} else
 		channel->transform = picture->transform;
 
-	if (!gen2_check_card_format(sna, picture, channel, x,  y, w ,h))
+	if (!gen2_check_card_format(sna, picture, channel, x,  y, w ,h, &fixup_alpha))
 		return sna_render_picture_convert(sna, picture, channel, pixmap,
-						  x, y, w, h, dst_x, dst_y);
+						  x, y, w, h, dst_x, dst_y, fixup_alpha);
 
 	channel->pict_format = picture->format;
 	if (too_large(pixmap->drawable.width, pixmap->drawable.height))
diff --git a/src/sna/gen3_render.c b/src/sna/gen3_render.c
index f0f0a48..9dcdfcd 100644
--- a/src/sna/gen3_render.c
+++ b/src/sna/gen3_render.c
@@ -2402,7 +2402,8 @@ gen3_composite_picture(struct sna *sna,
 	if (!gen3_composite_channel_set_format(channel, picture->format) &&
 	    !gen3_composite_channel_set_xformat(picture, channel, x, y, w, h))
 		return sna_render_picture_convert(sna, picture, channel, pixmap,
-						  x, y, w, h, dst_x, dst_y);
+						  x, y, w, h, dst_x, dst_y,
+						  false);
 
 	if (too_large(pixmap->drawable.width, pixmap->drawable.height)) {
 		DBG(("%s: pixmap too large (%dx%d), extracting (%d, %d)x(%d,%d)\n",
diff --git a/src/sna/gen4_render.c b/src/sna/gen4_render.c
index 057192d..5134bb9 100644
--- a/src/sna/gen4_render.c
+++ b/src/sna/gen4_render.c
@@ -1918,7 +1918,8 @@ gen4_composite_picture(struct sna *sna,
 	channel->card_format = gen4_get_card_format(picture->format);
 	if (channel->card_format == -1)
 		return sna_render_picture_convert(sna, picture, channel, pixmap,
-						  x, y, w, h, dst_x, dst_y);
+						  x, y, w, h, dst_x, dst_y,
+						  false);
 
 	if (too_large(pixmap->drawable.width, pixmap->drawable.height))
 		return sna_render_picture_extract(sna, picture, channel,
diff --git a/src/sna/gen5_render.c b/src/sna/gen5_render.c
index b49b25e..31f6f21 100644
--- a/src/sna/gen5_render.c
+++ b/src/sna/gen5_render.c
@@ -1936,7 +1936,8 @@ gen5_composite_picture(struct sna *sna,
 	channel->card_format = gen5_get_card_format(picture->format);
 	if (channel->card_format == -1)
 		return sna_render_picture_convert(sna, picture, channel, pixmap,
-						  x, y, w, h, dst_x, dst_y);
+						  x, y, w, h, dst_x, dst_y,
+						  false);
 
 	if (too_large(pixmap->drawable.width, pixmap->drawable.height))
 		return sna_render_picture_extract(sna, picture, channel,
diff --git a/src/sna/gen6_render.c b/src/sna/gen6_render.c
index fbe0951..6cc1a7d 100644
--- a/src/sna/gen6_render.c
+++ b/src/sna/gen6_render.c
@@ -2274,7 +2274,8 @@ gen6_composite_picture(struct sna *sna,
 	channel->card_format = gen6_get_card_format(picture->format);
 	if (channel->card_format == (unsigned)-1)
 		return sna_render_picture_convert(sna, picture, channel, pixmap,
-						  x, y, w, h, dst_x, dst_y);
+						  x, y, w, h, dst_x, dst_y,
+						  false);
 
 	if (too_large(pixmap->drawable.width, pixmap->drawable.height)) {
 		DBG(("%s: extracting from pixmap %dx%d\n", __FUNCTION__,
diff --git a/src/sna/gen7_render.c b/src/sna/gen7_render.c
index 3bec5df..a106a18 100644
--- a/src/sna/gen7_render.c
+++ b/src/sna/gen7_render.c
@@ -2386,7 +2386,8 @@ gen7_composite_picture(struct sna *sna,
 	channel->card_format = gen7_get_card_format(picture->format);
 	if (channel->card_format == (unsigned)-1)
 		return sna_render_picture_convert(sna, picture, channel, pixmap,
-						  x, y, w, h, dst_x, dst_y);
+						  x, y, w, h, dst_x, dst_y,
+						  false);
 
 	if (too_large(pixmap->drawable.width, pixmap->drawable.height)) {
 		DBG(("%s: extracting from pixmap %dx%d\n", __FUNCTION__,
diff --git a/src/sna/sna_render.c b/src/sna/sna_render.c
index c534f61..0a2856e 100644
--- a/src/sna/sna_render.c
+++ b/src/sna/sna_render.c
@@ -1637,11 +1637,10 @@ sna_render_picture_convert(struct sna *sna,
 			   PixmapPtr pixmap,
 			   int16_t x, int16_t y,
 			   int16_t w, int16_t h,
-			   int16_t dst_x, int16_t dst_y)
+			   int16_t dst_x, int16_t dst_y,
+			   bool fixup_alpha)
 {
-	pixman_image_t *src, *dst;
 	BoxRec box;
-	void *ptr;
 
 #if NO_CONVERT
 	return -1;
@@ -1691,52 +1690,113 @@ sna_render_picture_convert(struct sna *sna,
 		return 0;
 	}
 
-	if (!sna_pixmap_move_to_cpu(pixmap, MOVE_READ))
-		return 0;
+	if (fixup_alpha && is_gpu(&pixmap->drawable)) {
+		ScreenPtr screen = pixmap->drawable.pScreen;
+		PixmapPtr tmp;
+		PicturePtr src, dst;
+		int error;
 
-	src = pixman_image_create_bits(picture->format,
-				       pixmap->drawable.width,
-				       pixmap->drawable.height,
-				       pixmap->devPrivate.ptr,
-				       pixmap->devKind);
-	if (!src)
-		return 0;
+		assert(PICT_FORMAT_BPP(picture->format) == pixmap->drawable.bitsPerPixel);
+		channel->pict_format = PICT_FORMAT(PICT_FORMAT_BPP(picture->format),
+						   PICT_FORMAT_TYPE(picture->format),
+						   PICT_FORMAT_BPP(picture->format) - PIXMAN_FORMAT_DEPTH(picture->format),
+						   PICT_FORMAT_R(picture->format),
+						   PICT_FORMAT_G(picture->format),
+						   PICT_FORMAT_B(picture->format));
 
-	if (PICT_FORMAT_RGB(picture->format) == 0) {
-		channel->pict_format = PIXMAN_a8;
-		DBG(("%s: converting to a8 from %08x\n",
+		DBG(("%s: converting to %08x from %08x using composite alpha-fixup\n",
 		     __FUNCTION__, picture->format));
+
+		tmp = screen->CreatePixmap(screen, w, h, pixmap->drawable.bitsPerPixel, 0);
+		if (tmp == NULL)
+			return 0;
+
+		dst = CreatePicture(0, &tmp->drawable,
+				    PictureMatchFormat(screen,
+						       pixmap->drawable.bitsPerPixel,
+						       channel->pict_format),
+				    0, NULL, serverClient, &error);
+		if (dst == NULL) {
+			screen->DestroyPixmap(tmp);
+			return 0;
+		}
+
+		src = CreatePicture(0, &pixmap->drawable,
+				    PictureMatchFormat(screen,
+						       pixmap->drawable.depth,
+						       picture->format),
+				    0, NULL, serverClient, &error);
+		if (dst == NULL) {
+			FreePicture(dst, 0);
+			screen->DestroyPixmap(tmp);
+			return 0;
+		}
+
+		ValidatePicture(src);
+		ValidatePicture(dst);
+
+		sna_composite(PictOpSrc, src, NULL, dst,
+			      box.x1, box.y1,
+			      0, 0,
+			      0, 0,
+			      w, h);
+		FreePicture(dst, 0);
+		FreePicture(src, 0);
+
+		channel->bo = sna_pixmap_get_bo(tmp);
+		kgem_bo_reference(channel->bo);
+		screen->DestroyPixmap(tmp);
 	} else {
-		channel->pict_format = PIXMAN_a8r8g8b8;
-		DBG(("%s: converting to a8r8g8b8 from %08x\n",
-		     __FUNCTION__, picture->format));
-	}
+		pixman_image_t *src, *dst;
+		void *ptr;
 
-	channel->bo = kgem_create_buffer_2d(&sna->kgem,
-					    w, h, PIXMAN_FORMAT_BPP(channel->pict_format),
-					    KGEM_BUFFER_WRITE_INPLACE,
-					    &ptr);
-	if (!channel->bo) {
-		pixman_image_unref(src);
-		return 0;
-	}
+		if (!sna_pixmap_move_to_cpu(pixmap, MOVE_READ))
+			return 0;
 
-	dst = pixman_image_create_bits(channel->pict_format,
-				       w, h, ptr, channel->bo->pitch);
-	if (!dst) {
-		kgem_bo_destroy(&sna->kgem, channel->bo);
+		src = pixman_image_create_bits(picture->format,
+					       pixmap->drawable.width,
+					       pixmap->drawable.height,
+					       pixmap->devPrivate.ptr,
+					       pixmap->devKind);
+		if (!src)
+			return 0;
+
+		if (PICT_FORMAT_RGB(picture->format) == 0) {
+			channel->pict_format = PIXMAN_a8;
+			DBG(("%s: converting to a8 from %08x\n",
+			     __FUNCTION__, picture->format));
+		} else {
+			channel->pict_format = PIXMAN_a8r8g8b8;
+			DBG(("%s: converting to a8r8g8b8 from %08x\n",
+			     __FUNCTION__, picture->format));
+		}
+
+		channel->bo = kgem_create_buffer_2d(&sna->kgem,
+						    w, h, PIXMAN_FORMAT_BPP(channel->pict_format),
+						    KGEM_BUFFER_WRITE_INPLACE,
+						    &ptr);
+		if (!channel->bo) {
+			pixman_image_unref(src);
+			return 0;
+		}
+
+		dst = pixman_image_create_bits(channel->pict_format,
+					       w, h, ptr, channel->bo->pitch);
+		if (!dst) {
+			kgem_bo_destroy(&sna->kgem, channel->bo);
+			pixman_image_unref(src);
+			return 0;
+		}
+
+		pixman_image_composite(PictOpSrc, src, NULL, dst,
+				       box.x1, box.y1,
+				       0, 0,
+				       0, 0,
+				       w, h);
+		pixman_image_unref(dst);
 		pixman_image_unref(src);
-		return 0;
 	}
 
-	pixman_image_composite(PictOpSrc, src, NULL, dst,
-			       box.x1, box.y1,
-			       0, 0,
-			       0, 0,
-			       w, h);
-	pixman_image_unref(dst);
-	pixman_image_unref(src);
-
 	channel->width  = w;
 	channel->height = h;
 
@@ -1745,11 +1805,10 @@ sna_render_picture_convert(struct sna *sna,
 	channel->offset[0] = x - dst_x - box.x1;
 	channel->offset[1] = y - dst_y - box.y1;
 
-	DBG(("%s: offset=(%d, %d), size=(%d, %d) ptr[0]=%08x\n",
+	DBG(("%s: offset=(%d, %d), size=(%d, %d)\n",
 	     __FUNCTION__,
 	     channel->offset[0], channel->offset[1],
-	     channel->width, channel->height,
-	     *(uint32_t*)ptr));
+	     channel->width, channel->height));
 	return 1;
 }
 
diff --git a/src/sna/sna_render.h b/src/sna/sna_render.h
index 97b9222..e9ec2ba 100644
--- a/src/sna/sna_render.h
+++ b/src/sna/sna_render.h
@@ -691,7 +691,8 @@ sna_render_picture_convert(struct sna *sna,
 			   PixmapPtr pixmap,
 			   int16_t x, int16_t y,
 			   int16_t w, int16_t h,
-			   int16_t dst_x, int16_t dst_y);
+			   int16_t dst_x, int16_t dst_y,
+			   bool fixup_alpha);
 
 inline static void sna_render_composite_redirect_init(struct sna_composite_op *op)
 {

commit 6d6399f97cf7cb91dcf89e9a5cd1243f761e4314
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Sun Nov 25 00:05:44 2012 +0000

    sna: Transform a simple repeat pattern into range of the BLT
    
    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>

diff --git a/src/sna/sna_blt.c b/src/sna/sna_blt.c
index 9aa636c..ea11d00 100644
--- a/src/sna/sna_blt.c
+++ b/src/sna/sna_blt.c
@@ -1840,10 +1840,21 @@ clear:
 	if (x < 0 || y < 0 ||
 	    x + width > src->pDrawable->width ||
 	    y + height > src->pDrawable->height) {
-		DBG(("%s: source extends outside (%d, %d), (%d, %d) of valid drawable %dx%d\n",
+		DBG(("%s: source extends outside (%d, %d), (%d, %d) of valid drawable %dx%d, repeat=%d\n",
 		     __FUNCTION__,
-		     x, y, x+width, y+width, src->pDrawable->width, src->pDrawable->height));
-		return false;
+		     x, y, x+width, y+width, src->pDrawable->width, src->pDrawable->height, src->repeatType));
+		if (src->repeat && src->repeatType == RepeatNormal) {
+			x = x % src->pDrawable->width;
+			y = y % src->pDrawable->height;
+			if (x < 0)
+				x += src->pDrawable->width;
+			if (y < 0)
+				y += src->pDrawable->height;
+			if (x + width  > src->pDrawable->width ||
+			    y + height > src->pDrawable->height)
+				return false;
+		} else
+			return false;
 	}
 
 	src_pixmap = get_drawable_pixmap(src->pDrawable);
@@ -2000,6 +2011,10 @@ sna_blt_composite__convert(struct sna *sna,
 		return false;
 	}
 
+	tmp->u.blt.src_pixmap = NULL;
+	tmp->u.blt.sx = tmp->src.offset[0];
+	tmp->u.blt.sy = tmp->src.offset[1];
+
 	x += tmp->src.offset[0];
 	y += tmp->src.offset[1];
 	if (x < 0 || y < 0 ||
@@ -2008,7 +2023,21 @@ sna_blt_composite__convert(struct sna *sna,
 		DBG(("%s: source extends outside (%d, %d), (%d, %d) of valid drawable %dx%d\n",
 		     __FUNCTION__,
 		     x, y, x+width, y+width, tmp->src.width, tmp->src.height));
-		return false;
+		if (tmp->src.repeat == RepeatNormal) {
+			int xx = x % tmp->src.width;
+			int yy = y % tmp->src.height;
+			if (xx < 0)
+				xx += tmp->src.width;
+			if (yy < 0)
+				yy += tmp->src.height;
+			if (xx + width  > tmp->src.width ||
+			    yy + height > tmp->src.height)
+				return false;
+
+			tmp->u.blt.sx += xx - x;
+			tmp->u.blt.sy += yy - y;
+		} else
+			return false;
 	}


Reply to: