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: