debian/changelog | 17 - debian/patches/series | 2 debian/patches/sna-add-more-checks-and-asserts-for-blt.diff | 200 ++++++++++++ debian/patches/sna-tweak-alignment-constraints-on-gen8.diff | 34 ++ 4 files changed, 245 insertions(+), 8 deletions(-)
New commits: commit 35e5a5a4818b581a7f739b5c0c0d5347ee3cb872 Author: Timo Aaltonen <tjaal...@debian.org> Date: Tue Jan 13 14:25:23 2015 +0200 fix changelog diff --git a/debian/changelog b/debian/changelog index 4de6d74..62cab64 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,16 +1,14 @@ -xserver-xorg-video-intel (2:2.99.910-0ubuntu1.5) trusty-proposed; urgency=medium - - * Fix regression with external displays on sna. (LP: #1405325) - - -- Maarten Lankhorst <maarten.lankho...@ubuntu.com> Tue, 13 Jan 2015 11:20:44 +0100 - xserver-xorg-video-intel (2:2.99.910-0ubuntu1.4) UNRELEASED; urgency=medium + [ Timo Aaltonen ] * sna-fix-gen8-blt.diff sna-tweak-alignment-constraints-on-gen8.diff sna-add-more-checks-and-asserts-for-blt.diff: - Fix GEN8 BLT with 4bit address. (LP: #1401788) + [ Maarten Lankhorst ] + * Fix regression with external displays on sna. (LP: #1405325) + -- Timo Aaltonen <tjaal...@debian.org> Fri, 12 Dec 2014 11:06:26 +0200 xserver-xorg-video-intel (2:2.99.910-0ubuntu1.3) trusty-proposed; urgency=medium @@ -32,6 +30,9 @@ xserver-xorg-video-intel (2:2.99.910-0ubuntu1.2) trusty-proposed; urgency=medium [ Timo Aaltonen ] * fix-no-backlight.diff: Don't let backlight switch off when cycling through display modes. (LP: #1373776) + + -- Maarten Lankhorst <maarten.lankho...@ubuntu.com> Mon, 20 Oct 2014 09:54:57 +0200 + xserver-xorg-video-intel (2:2.99.910-0ubuntu1.1) trusty; urgency=medium * Backport fixes from upstream driver for fglrx and broadwell. (LP: #1359105) commit 1cabef339563e0b4daee50580a1b75596844a62a Author: Timo Aaltonen <tjaal...@debian.org> Date: Tue Jan 13 14:20:28 2015 +0200 not really released, so mark as such diff --git a/debian/changelog b/debian/changelog index ef7fe94..4de6d74 100644 --- a/debian/changelog +++ b/debian/changelog @@ -4,7 +4,7 @@ xserver-xorg-video-intel (2:2.99.910-0ubuntu1.5) trusty-proposed; urgency=medium -- Maarten Lankhorst <maarten.lankho...@ubuntu.com> Tue, 13 Jan 2015 11:20:44 +0100 -xserver-xorg-video-intel (2:2.99.910-0ubuntu1.4) trusty-proposed; urgency=medium +xserver-xorg-video-intel (2:2.99.910-0ubuntu1.4) UNRELEASED; urgency=medium * sna-fix-gen8-blt.diff sna-tweak-alignment-constraints-on-gen8.diff commit 46077a767ff807f793bde32de15f0ad589d1a067 Author: Timo Aaltonen <tjaal...@debian.org> Date: Tue Jan 13 12:31:00 2015 +0200 add two more patches diff --git a/debian/changelog b/debian/changelog index 83ee4ef..ef7fe94 100644 --- a/debian/changelog +++ b/debian/changelog @@ -6,7 +6,10 @@ xserver-xorg-video-intel (2:2.99.910-0ubuntu1.5) trusty-proposed; urgency=medium xserver-xorg-video-intel (2:2.99.910-0ubuntu1.4) trusty-proposed; urgency=medium - * sna-fix-gen8-blt.diff: Fix GEN8 BLT with 4bit address. (LP: #1401788) + * sna-fix-gen8-blt.diff + sna-tweak-alignment-constraints-on-gen8.diff + sna-add-more-checks-and-asserts-for-blt.diff: + - Fix GEN8 BLT with 4bit address. (LP: #1401788) -- Timo Aaltonen <tjaal...@debian.org> Fri, 12 Dec 2014 11:06:26 +0200 @@ -29,9 +32,6 @@ xserver-xorg-video-intel (2:2.99.910-0ubuntu1.2) trusty-proposed; urgency=medium [ Timo Aaltonen ] * fix-no-backlight.diff: Don't let backlight switch off when cycling through display modes. (LP: #1373776) - - -- Maarten Lankhorst <maarten.lankho...@ubuntu.com> Mon, 20 Oct 2014 09:54:57 +0200 - xserver-xorg-video-intel (2:2.99.910-0ubuntu1.1) trusty; urgency=medium * Backport fixes from upstream driver for fglrx and broadwell. (LP: #1359105) diff --git a/debian/patches/series b/debian/patches/series index 98e9055..e232f4e 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -23,3 +23,5 @@ fix-no-backlight.diff 10-handle-rotated-slaves.diff sna-use-vmask-in-3dstate-ps.diff sna-fix-gen8-blt.diff +sna-tweak-alignment-constraints-on-gen8.diff +sna-add-more-checks-and-asserts-for-blt.diff diff --git a/debian/patches/sna-add-more-checks-and-asserts-for-blt.diff b/debian/patches/sna-add-more-checks-and-asserts-for-blt.diff new file mode 100644 index 0000000..c9e9068 --- /dev/null +++ b/debian/patches/sna-add-more-checks-and-asserts-for-blt.diff @@ -0,0 +1,200 @@ +commit 8dee52997891108eec8e4df12dd02f3a060d9cb8 +Author: Chris Wilson <ch...@chris-wilson.co.uk> +Date: Wed Nov 19 13:38:20 2014 +0000 + + sna: Add more checks and asserts for BLT capable bo + + Before we use the BLT for core acceleration, double check that we can. + This should catch the case where we attempt to operate on SHM pixmaps + which do not meet the restrictions. + + Signed-off-by: Chris Wilson <ch...@chris-wilson.co.uk> + +--- a/src/sna/sna_accel.c ++++ b/src/sna/sna_accel.c +@@ -4642,6 +4642,9 @@ sna_put_xybitmap_blt(DrawablePtr drawabl + } + } + ++ if (!kgem_bo_can_blt(&sna->kgem, bo)) ++ return false; ++ + assert_pixmap_contains_box(pixmap, RegionExtents(region)); + if (damage) + sna_damage_add(damage, region); +@@ -4654,6 +4657,7 @@ sna_put_xybitmap_blt(DrawablePtr drawabl + y += dy + drawable->y; + + kgem_set_mode(&sna->kgem, KGEM_BLT, bo); ++ assert(kgem_bo_can_blt(&sna->kgem, bo)); + + /* Region is pre-clipped and translated into pixmap space */ + box = RegionRects(region); +@@ -4802,6 +4806,9 @@ sna_put_xypixmap_blt(DrawablePtr drawabl + } + } + ++ if (!kgem_bo_can_blt(&sna->kgem, bo)) ++ return false; ++ + assert_pixmap_contains_box(pixmap, RegionExtents(region)); + if (damage) + sna_damage_add(damage, region); +@@ -4814,6 +4821,7 @@ sna_put_xypixmap_blt(DrawablePtr drawabl + y += dy + drawable->y; + + kgem_set_mode(&sna->kgem, KGEM_BLT, bo); ++ assert(kgem_bo_can_blt(&sna->kgem, bo)); + + skip = h * BitmapBytePad(w + left); + for (i = 1 << (gc->depth-1); i; i >>= 1, bits += skip) { +@@ -7570,6 +7578,7 @@ sna_copy_bitmap_blt(DrawablePtr _bitmap, + br13 |= copy_ROP[gc->alu] << 16; + + kgem_set_mode(&sna->kgem, KGEM_BLT, arg->bo); ++ assert(kgem_bo_can_blt(&sna->kgem, arg->bo)); + do { + int bx1 = (box->x1 + sx) & ~7; + int bx2 = (box->x2 + sx + 7) & ~7; +@@ -7789,6 +7798,7 @@ sna_copy_plane_blt(DrawablePtr source, D + br13 |= copy_ROP[gc->alu] << 16; + + kgem_set_mode(&sna->kgem, KGEM_BLT, arg->bo); ++ assert(kgem_bo_can_blt(&sna->kgem, arg->bo)); + do { + int bx1 = (box->x1 + sx) & ~7; + int bx2 = (box->x2 + sx + 7) & ~7; +@@ -8074,6 +8084,10 @@ sna_copy_plane(DrawablePtr src, Drawable + goto fallback; + } + } ++ ++ if (!kgem_bo_can_blt(&sna->kgem, arg.bo)) ++ return false; ++ + RegionUninit(®ion); + return sna_do_copy(src, dst, gc, + src_x, src_y, +@@ -11472,9 +11486,14 @@ sna_poly_fill_rect_tiled_8x8_blt(Drawabl + if (tile_bo->tiling) + return false; + ++ if (!kgem_bo_can_blt(&sna->kgem, bo) || ++ !kgem_bo_can_blt(&sna->kgem, tile_bo)) ++ return false; ++ + assert(tile_bo->pitch == 8 * drawable->bitsPerPixel >> 3); + + kgem_set_mode(&sna->kgem, KGEM_BLT, bo); ++ assert(kgem_bo_can_blt(&sna->kgem, bo)); + if (!kgem_check_batch(&sna->kgem, 10+2*3) || + !kgem_check_reloc(&sna->kgem, 2) || + !kgem_check_many_bo_fenced(&sna->kgem, bo, tile_bo, NULL)) { +@@ -12266,6 +12285,7 @@ sna_poly_fill_rect_stippled_8x8_blt(Draw + } + + kgem_set_mode(&sna->kgem, KGEM_BLT, bo); ++ assert(kgem_bo_can_blt(&sna->kgem, bo)); + if (!kgem_check_batch(&sna->kgem, 10 + 2*3) || + !kgem_check_bo_fenced(&sna->kgem, bo) || + !kgem_check_reloc(&sna->kgem, 1)) { +@@ -12642,6 +12662,7 @@ sna_poly_fill_rect_stippled_1_blt(Drawab + + get_drawable_deltas(drawable, pixmap, &dx, &dy); + kgem_set_mode(&sna->kgem, KGEM_BLT, bo); ++ assert(kgem_bo_can_blt(&sna->kgem, bo)); + + br00 = 3 << 20; + br13 = bo->pitch; +@@ -13542,6 +13563,7 @@ sna_poly_fill_rect_stippled_n_blt__imm(D + + get_drawable_deltas(drawable, pixmap, &dx, &dy); + kgem_set_mode(&sna->kgem, KGEM_BLT, bo); ++ assert(kgem_bo_can_blt(&sna->kgem, bo)); + + br00 = XY_MONO_SRC_COPY_IMM | 3 << 20; + br13 = bo->pitch; +@@ -13686,6 +13708,7 @@ sna_poly_fill_rect_stippled_n_blt(Drawab + + get_drawable_deltas(drawable, pixmap, &dx, &dy); + kgem_set_mode(&sna->kgem, KGEM_BLT, bo); ++ assert(kgem_bo_can_blt(&sna->kgem, bo)); + + br00 = XY_MONO_SRC_COPY | 3 << 20; + br13 = bo->pitch; +@@ -13813,10 +13836,9 @@ sna_poly_fill_rect_stippled_blt(Drawable + { + + PixmapPtr stipple = gc->stipple; ++ PixmapPtr pixmap = get_drawable_pixmap(drawable); + + if (bo->tiling == I915_TILING_Y) { +- PixmapPtr pixmap = get_drawable_pixmap(drawable); +- + DBG(("%s: converting bo from Y-tiling\n", __FUNCTION__)); + /* This is cheating, but only the gpu_bo can be tiled */ + assert(bo == __sna_pixmap_get_bo(pixmap)); +@@ -13828,6 +13850,9 @@ sna_poly_fill_rect_stippled_blt(Drawable + } + } + ++ if (!kgem_bo_can_blt(&to_sna_from_pixmap(pixmap)->kgem, bo)) ++ return false; ++ + if (!sna_drawable_move_to_cpu(&stipple->drawable, MOVE_READ)) + return false; + +@@ -14368,6 +14393,9 @@ sna_glyph_blt(DrawablePtr drawable, GCPt + } + } + ++ if (!kgem_bo_can_blt(&sna->kgem, bo)) ++ return false; ++ + if (get_drawable_deltas(drawable, pixmap, &dx, &dy)) + RegionTranslate(clip, dx, dy); + _x += drawable->x + dx; +@@ -14386,6 +14414,7 @@ sna_glyph_blt(DrawablePtr drawable, GCPt + } + + kgem_set_mode(&sna->kgem, KGEM_BLT, bo); ++ assert(kgem_bo_can_blt(&sna->kgem, bo)); + if (!kgem_check_batch(&sna->kgem, 20) || + !kgem_check_bo_fenced(&sna->kgem, bo) || + !kgem_check_reloc(&sna->kgem, 1)) { +@@ -15084,6 +15113,9 @@ sna_reversed_glyph_blt(DrawablePtr drawa + } + } + ++ if (!kgem_bo_can_blt(&sna->kgem, bo)) ++ return false; ++ + if (get_drawable_deltas(drawable, pixmap, &dx, &dy)) + RegionTranslate(clip, dx, dy); + _x += drawable->x + dx; +@@ -15102,6 +15134,7 @@ sna_reversed_glyph_blt(DrawablePtr drawa + } + + kgem_set_mode(&sna->kgem, KGEM_BLT, bo); ++ assert(kgem_bo_can_blt(&sna->kgem, bo)); + if (!kgem_check_batch(&sna->kgem, 20) || + !kgem_check_bo_fenced(&sna->kgem, bo) || + !kgem_check_reloc(&sna->kgem, 1)) { +@@ -15542,6 +15575,9 @@ sna_push_pixels_solid_blt(GCPtr gc, + } + } + ++ if (!kgem_bo_can_blt(&sna->kgem, bo)) ++ return false; ++ + if (get_drawable_deltas(drawable, pixmap, &dx, &dy)) + RegionTranslate(region, dx, dy); + +@@ -15555,6 +15591,7 @@ sna_push_pixels_solid_blt(GCPtr gc, + region->extents.x2, region->extents.y2)); + + kgem_set_mode(&sna->kgem, KGEM_BLT, bo); ++ assert(kgem_bo_can_blt(&sna->kgem, bo)); + + /* Region is pre-clipped and translated into pixmap space */ + box = RegionRects(region); diff --git a/debian/patches/sna-tweak-alignment-constraints-on-gen8.diff b/debian/patches/sna-tweak-alignment-constraints-on-gen8.diff new file mode 100644 index 0000000..c1b8893 --- /dev/null +++ b/debian/patches/sna-tweak-alignment-constraints-on-gen8.diff @@ -0,0 +1,34 @@ +commit a90cc3b3889fafbd91c11c42d068a9d6474e218b +Author: Chris Wilson <ch...@chris-wilson.co.uk> +Date: Tue Nov 18 08:37:25 2014 +0000 + + sna: Tweak alignment constraints on gen8 to allow BLT + + The previous commits prevent us from using the BLT if the destination + address is misaligned. Honour that restriction when creating buffers as + well, so that they are always usuable by the BLT. + + Signed-off-by: Chris Wilson <ch...@chris-wilson.co.uk> + +diff --git a/src/sna/kgem.c b/src/sna/kgem.c +index fe225d2..72ffb04 100644 +--- a/src/sna/kgem.c ++++ b/src/sna/kgem.c +@@ -1797,6 +1797,8 @@ inline static uint32_t kgem_pitch_alignment(struct kgem *kgem, unsigned flags) + return 256; + if (flags & CREATE_SCANOUT) + return 64; ++ if (kgem->gen >= 0100) ++ return 32; + return 8; + } + +@@ -7234,7 +7236,7 @@ struct kgem_bo *kgem_create_buffer_2d(struct kgem *kgem, + assert(width > 0 && height > 0); + assert(ret != NULL); + stride = ALIGN(width, 2) * bpp >> 3; +- stride = ALIGN(stride, 4); ++ stride = ALIGN(stride, kgem->gen >= 0100 ? 32 : 4); + + DBG(("%s: %dx%d, %d bpp, stride=%d\n", + __FUNCTION__, width, height, bpp, stride)); -- To UNSUBSCRIBE, email to debian-x-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: https://lists.debian.org/e1yb0xk-0000tt...@moszumanska.debian.org