xf86-video-intel: 2 commits - configure.ac NEWS src/sna/sna_accel.c
Chris Wilson
ickle at kemper.freedesktop.org
Fri Feb 1 05:51:42 PST 2013
NEWS | 46 ++++++++++++++++++++++++++++++++++++++++++++++
configure.ac | 2 +-
src/sna/sna_accel.c | 26 +++++++++++++++++++++++++-
3 files changed, 72 insertions(+), 2 deletions(-)
New commits:
commit d3ff1cb9d7f788002337b1e6c4c81c58112b85b1
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date: Fri Feb 1 13:46:33 2013 +0000
2.21.0 release
diff --git a/NEWS b/NEWS
index 9fa9009..fff55ad 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,49 @@
+Release 2.21.0 (2013-02-01)
+===========================
+A few new features:
+
+ * Enable render acceleration for Haswell GT1/GT2.
+
+ * Enable multi-threaded rasterisation of trapezoids and fallback composition
+
+ * Utilile a new kernel interface (v3.9) for processing relocations
+
+along with a few older features from the 2.20.x series:
+
+ * PRIME support for hotplug GPUs and hybrid systems
+
+ * Support for IvyBridge GT1 machines, aka HD2500 graphics.
+
+ * Stable 830gm/845g support, at last!
+
+As usual we have a large number of bug fixes since the last release:
+
+ * Prevent a stray relocation being left after a buffer is removed from
+ a batch, leading to GPU hangs.
+
+ * Make the driver more robust against its own failures to submit batches
+ by falling back to software rendering.
+
+ * Fix emission of scanline waits for secondary pipes on gen6/7. Otherwise
+ you may encounter GPU hangs in MI_WAIT_FOR_EVENT.
+
+ * Fix a missing corner pixel when drawing rectangles with PolyLines
+ https://bugs.freedesktop.org/show_bug.cgi?id=55484
+
+ * Don't try to use Y-tiling colour buffers with mesa/i915c as mesa
+ doesn't support them and wil fallback to software rendering
+
+ * Ensure that any cached mmaps are invalidated for a SwapBuffers
+ https://bugs.freedesktop.org/show_bug.cgi?id=60042
+
+ * Correctly handle the composition of rotated displays too large for the
+ 3D pipeline
+ https://bugs.freedesktop.org/show_bug.cgi?id=60124
+
+ * Fix the computation of the planar video frame size
+ https://bugs.launchpad.net/ubuntu/+source/xserver-xorg-video-intel/+bug/1104180
+
+
Release 2.20.19 (2013-01-20)
============================
A quick release as the last broke USB DisplayLink slave outputs badly. The
diff --git a/configure.ac b/configure.ac
index 46affdc..5135ecc 100644
--- a/configure.ac
+++ b/configure.ac
@@ -23,7 +23,7 @@
# Initialize Autoconf
AC_PREREQ([2.60])
AC_INIT([xf86-video-intel],
- [2.20.19],
+ [2.21.0],
[https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],
[xf86-video-intel])
AC_CONFIG_SRCDIR([Makefile.am])
commit 008f8230a7c47f1249eb51e53b3abf158f2a42bf
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date: Fri Feb 1 01:54:52 2013 +0000
sna: Assert that if we have GPU damage we have a GPU bo
Scatter the asserts around the migration points to catch where this
invariant may be untrue.
Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
diff --git a/src/sna/sna_accel.c b/src/sna/sna_accel.c
index 9b1a385..bb2ecb5 100644
--- a/src/sna/sna_accel.c
+++ b/src/sna/sna_accel.c
@@ -323,6 +323,8 @@ static void assert_pixmap_damage(PixmapPtr p)
if (priv == NULL)
return;
+ assert(priv->gpu_damage == NULL || priv->gpu_bo);
+
if (priv->clear) {
assert(DAMAGE_IS_ALL(priv->gpu_damage));
assert(priv->cpu_damage == NULL);
@@ -1371,6 +1373,7 @@ sna_pixmap_create_mappable_gpu(PixmapPtr pixmap)
assert_pixmap_damage(pixmap);
+ assert(priv->gpu_damage == NULL);
assert(priv->gpu_bo == NULL);
priv->gpu_bo =
kgem_create_2d(&sna->kgem,
@@ -1496,6 +1499,8 @@ _sna_pixmap_move_to_cpu(PixmapPtr pixmap, unsigned int flags)
priv->gpu_bo ? priv->gpu_bo->handle : 0,
priv->gpu_damage, priv->cpu_damage, priv->clear));
+ assert(priv->gpu_damage == NULL || priv->gpu_bo);
+
if (USE_INPLACE && (flags & MOVE_READ) == 0) {
assert(flags & MOVE_WRITE);
DBG(("%s: no readbck, discarding gpu damage [%d], pending clear[%d]\n",
@@ -1690,6 +1695,7 @@ skip_inplace_map:
int n;
DBG(("%s: flushing GPU damage\n", __FUNCTION__));
+ assert(priv->gpu_bo);
n = sna_damage_get_boxes(priv->gpu_damage, &box);
if (n) {
@@ -1835,6 +1841,7 @@ static inline bool region_inplace(struct sna *sna,
if (DAMAGE_IS_ALL(priv->gpu_damage)) {
DBG(("%s: yes, already wholly damaged on the GPU\n", __FUNCTION__));
+ assert(priv->gpu_bo);
return true;
}
@@ -1880,6 +1887,8 @@ sna_drawable_move_region_to_cpu(DrawablePtr drawable,
return true;
}
+ assert(priv->gpu_damage == NULL || priv->gpu_bo);
+
if (sna_damage_is_all(&priv->cpu_damage,
pixmap->drawable.width,
pixmap->drawable.height)) {
@@ -2046,6 +2055,7 @@ sna_drawable_move_region_to_cpu(DrawablePtr drawable,
DBG(("%s: forced migration\n", __FUNCTION__));
assert(pixmap_contains_damage(pixmap, priv->gpu_damage));
+ assert(priv->gpu_bo);
ok = false;
if (use_cpu_bo_for_download(sna, priv, &priv->gpu_damage->extents)) {
@@ -2071,6 +2081,7 @@ sna_drawable_move_region_to_cpu(DrawablePtr drawable,
__FUNCTION__,
region->extents.x2 - region->extents.x1,
region->extents.y2 - region->extents.y1));
+ assert(priv->gpu_bo);
if (priv->cpu_damage == NULL) {
if ((flags & MOVE_WRITE) == 0 &&
@@ -2391,6 +2402,7 @@ sna_pixmap_move_area_to_gpu(PixmapPtr pixmap, const BoxRec *box, unsigned int fl
assert_pixmap_damage(pixmap);
assert_pixmap_contains_box(pixmap, box);
assert(!wedged(sna));
+ assert(priv->gpu_damage == NULL || priv->gpu_bo);
if (sna_damage_is_all(&priv->gpu_damage,
pixmap->drawable.width,
@@ -2414,6 +2426,8 @@ sna_pixmap_move_area_to_gpu(PixmapPtr pixmap, const BoxRec *box, unsigned int fl
if (priv->gpu_bo == NULL) {
unsigned create, tiling;
+ assert(priv->gpu_damage == NULL);
+
create = CREATE_INACTIVE;
if (pixmap->usage_hint == SNA_CREATE_FB)
create |= CREATE_EXACT | CREATE_SCANOUT;
@@ -2626,6 +2640,7 @@ sna_drawable_use_bo(DrawablePtr drawable, unsigned flags, const BoxRec *box,
if (DAMAGE_IS_ALL(priv->gpu_damage)) {
DBG(("%s: use GPU fast path (all-damaged)\n", __FUNCTION__));
assert(priv->cpu_damage == NULL);
+ assert(priv->gpu_bo);
goto use_gpu_bo;
}
@@ -2727,6 +2742,7 @@ create_gpu_bo:
region.extents.x2, region.extents.y2));
if (priv->gpu_damage) {
+ assert(priv->gpu_bo);
if (!priv->cpu_damage) {
if (sna_damage_contains_box__no_reduce(priv->gpu_damage,
®ion.extents)) {
@@ -3021,6 +3037,8 @@ sna_pixmap_move_to_gpu(PixmapPtr pixmap, unsigned flags)
pixmap->drawable.height);
}
+ assert(priv->gpu_damage == NULL || priv->gpu_bo);
+
if (sna_damage_is_all(&priv->gpu_damage,
pixmap->drawable.width,
pixmap->drawable.height)) {
@@ -3077,6 +3095,7 @@ sna_pixmap_move_to_gpu(PixmapPtr pixmap, unsigned flags)
}
if (priv->gpu_bo == NULL) {
DBG(("%s: not creating GPU bo\n", __FUNCTION__));
+ assert(priv->gpu_damage == NULL);
assert(list_is_empty(&priv->list));
return NULL;
}
@@ -3845,8 +3864,10 @@ move_to_gpu(PixmapPtr pixmap, struct sna_pixmap *priv,
int h = box->y2 - box->y1;
int count;
- if (DAMAGE_IS_ALL(priv->gpu_damage))
+ if (DAMAGE_IS_ALL(priv->gpu_damage)) {
+ assert(priv->gpu_bo);
return true;
+ }
if (priv->gpu_bo) {
if (alu != GXcopy)
@@ -3977,6 +3998,8 @@ sna_self_copy_boxes(DrawablePtr src, DrawablePtr dst, GCPtr gc,
goto fallback;
if (priv->gpu_damage) {
+ assert(priv->gpu_bo);
+
if (alu == GXcopy && priv->clear)
goto out;
@@ -4073,6 +4096,7 @@ source_prefer_gpu(struct sna *sna, struct sna_pixmap *priv)
if (priv->gpu_damage) {
DBG(("%s: source has gpu damage, force gpu\n", __FUNCTION__));
+ assert(priv->gpu_bo);
return PREFER_GPU | FORCE_GPU;
}
More information about the xorg-commit
mailing list