xserver-xorg-video-intel: Changes to 'ubuntu-utopic'
Rebased ref, commits from common ancestor:
commit 7180b5be2159bd0ef7c8ef6ae7991f2a38263158
Author: Timo Aaltonen <tjaalton@debian.org>
Date: Fri May 29 00:45:29 2015 +0300
Import changes from 2:2.99.914-1~exp1ubuntu4.4
diff --git a/debian/changelog b/debian/changelog
index 028286c..426edc8 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,10 +1,17 @@
-xserver-xorg-video-intel (2:2.99.914-1~exp1ubuntu4.4) UNRELEASED; urgency=medium
+xserver-xorg-video-intel (2:2.99.914-1~exp1ubuntu4.5) UNRELEASED; urgency=medium
* sna-gen8-clear-instancing-enabled-bit-between-batches.diff: Fix
corruptions and missing letters on 2nd head. (LP: #1432194)
-- Timo Aaltonen <tjaalton@debian.org> Mon, 11 May 2015 13:41:20 +0300
+xserver-xorg-video-intel (2:2.99.914-1~exp1ubuntu4.4) utopic; urgency=medium
+
+ * fix-sna-trapezoids.patch: Fix client-side shadows for GTK+ 3.14
+ (LP: #1378188).
+
+ -- Marius Gedminas <marius@gedmin.as> Tue, 05 May 2015 11:25:15 +0100
+
xserver-xorg-video-intel (2:2.99.914-1~exp1ubuntu4.3) utopic; urgency=medium
* bdw-annotate-more-64bit-pointer-locations.diff
diff --git a/debian/patches/fix-sna-trapezoids.patch b/debian/patches/fix-sna-trapezoids.patch
new file mode 100644
index 0000000..6252e64
--- /dev/null
+++ b/debian/patches/fix-sna-trapezoids.patch
@@ -0,0 +1,122 @@
+From 48a33fc379b17eed195875222ad773c911d9dff1 Mon Sep 17 00:00:00 2001
+From: Chris Wilson <chris@chris-wilson.co.uk>
+Date: Tue, 2 Sep 2014 19:08:36 +0100
+Subject: sna/trapezoids: Use the corrected trapezoid origin for aligned boxes
+
+The rule for the origin of the CompositeTrapezoids routine is the
+upper-left corner of the first trapezoid. Care must be taken in case the
+trapezoid edge is upside down to consider the upper vertex.
+
+Reported-by: "Jasper St. Pierre" <jstpierre@mecheye.net>
+Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+
+diff --git a/src/sna/sna_trapezoids_boxes.c b/src/sna/sna_trapezoids_boxes.c
+index 2f7028f..a2045dc 100644
+--- a/src/sna/sna_trapezoids_boxes.c
++++ b/src/sna/sna_trapezoids_boxes.c
+@@ -120,13 +120,16 @@ composite_aligned_boxes(struct sna *sna,
+ BoxRec stack_boxes[64], *boxes;
+ pixman_region16_t region, clip;
+ struct sna_composite_op tmp;
++ int16_t dst_x, dst_y;
+ bool ret = true;
+ int dx, dy, n, num_boxes;
+
+ if (NO_ALIGNED_BOXES)
+ return false;
+
+- DBG(("%s\n", __FUNCTION__));
++ DBG(("%s: pixmap=%ld, nboxes=%d, dx=(%d, %d)\n", __FUNCTION__,
++ get_drawable_pixmap(dst->pDrawable)->drawable.serialNumber,
++ ntrap, dst->pDrawable->x, dst->pDrawable->y));
+
+ boxes = stack_boxes;
+ if (ntrap > (int)ARRAY_SIZE(stack_boxes)) {
+@@ -168,19 +171,20 @@ composite_aligned_boxes(struct sna *sna,
+ if (num_boxes == 0)
+ goto free_boxes;
+
+- DBG(("%s: extents (%d, %d), (%d, %d) offset of (%d, %d)\n",
++ trapezoid_origin(&traps[0].left, &dst_x, &dst_y);
++
++ DBG(("%s: extents (%d, %d), (%d, %d) offset of (%d, %d), origin (%d, %d)\n",
+ __FUNCTION__,
+ region.extents.x1, region.extents.y1,
+ region.extents.x2, region.extents.y2,
+ region.extents.x1 - boxes[0].x1,
+- region.extents.y1 - boxes[0].y1));
+-
+- src_x += region.extents.x1 - boxes[0].x1;
+- src_y += region.extents.y1 - boxes[0].y1;
++ region.extents.y1 - boxes[0].y1,
++ dst_x, dst_y));
+
+ if (!sna_compute_composite_region(&clip,
+ src, NULL, dst,
+- src_x, src_y,
++ src_x + region.extents.x1 - dst_x - dx,
++ src_y + region.extents.y1 - dst_y - dy,
+ 0, 0,
+ region.extents.x1 - dx, region.extents.y1 - dy,
+ region.extents.x2 - region.extents.x1,
+@@ -193,14 +197,24 @@ composite_aligned_boxes(struct sna *sna,
+ if (op == PictOpClear && sna->clear)
+ src = sna->clear;
+
++ DBG(("%s: clipped extents (%d, %d), (%d, %d); now offset by (%d, %d), orgin (%d, %d)\n",
++ __FUNCTION__,
++ clip.extents.x1, clip.extents.y1,
++ clip.extents.x2, clip.extents.y2,
++ clip.extents.x1 - boxes[0].x1,
++ clip.extents.y1 - boxes[0].y1,
++ dst_x, dst_y));
++
+ if (force_fallback ||
+ !sna->render.composite(sna, op, src, NULL, dst,
+- src_x, src_y,
++ src_x + clip.extents.x1 - dst_x,
++ src_y + clip.extents.y1 - dst_y,
+ 0, 0,
+ clip.extents.x1, clip.extents.y1,
+ clip.extents.x2 - clip.extents.x1,
+ clip.extents.y2 - clip.extents.y1,
+- COMPOSITE_PARTIAL, memset(&tmp, 0, sizeof(tmp)))) {
++ (clip.data || num_boxes > 1) ? COMPOSITE_PARTIAL : 0,
++ memset(&tmp, 0, sizeof(tmp)))) {
+ unsigned int flags;
+ const pixman_box16_t *b;
+ int i, count;
+@@ -232,6 +246,8 @@ composite_aligned_boxes(struct sna *sna,
+ }
+
+ DBG(("%s: fbComposite()\n", __FUNCTION__));
++ src_x -= dst_x - dx;
++ src_y -= dst_y - dy;
+ if (maskFormat) {
+ pixman_region_init_rects(®ion, boxes, num_boxes);
+ RegionIntersect(®ion, ®ion, &clip);
+@@ -241,8 +257,8 @@ composite_aligned_boxes(struct sna *sna,
+ count = region_num_rects(®ion);
+ for (i = 0; i < count; i++) {
+ fbComposite(op, src, NULL, dst,
+- src_x + b[i].x1 - boxes[0].x1,
+- src_y + b[i].y1 - boxes[0].y1,
++ src_x + b[i].x1,
++ src_y + b[i].y1,
+ 0, 0,
+ b[i].x1, b[i].y1,
+ b[i].x2 - b[i].x1, b[i].y2 - b[i].y1);
+@@ -259,8 +275,8 @@ composite_aligned_boxes(struct sna *sna,
+ if (sigtrap_get() == 0) {
+ for (i = 0; i < count; i++) {
+ fbComposite(op, src, NULL, dst,
+- src_x + b[i].x1 - boxes[0].x1,
+- src_y + b[i].y1 - boxes[0].y1,
++ src_x + b[i].x1,
++ src_y + b[i].y1,
+ 0, 0,
+ b[i].x1, b[i].y1,
+ b[i].x2 - b[i].x1, b[i].y2 - b[i].y1);
+--
+cgit v0.10.2
+
diff --git a/debian/patches/series b/debian/patches/series
index 1ad719d..83950b0 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -13,4 +13,5 @@ sna-add-more-checks-and-asserts-for-blt.diff
fix-sna-external-slave-rotation.patch
bdw-annotate-more-64bit-pointer-locations.diff
bdw-clamp-urb-allocations-for-gt3.diff
+fix-sna-trapezoids.patch
sna-gen8-clear-instancing-enabled-bit-between-batches.diff
commit 798d77bc9212dcfb95f48762f00e2c89f2608eb5
Author: Timo Aaltonen <tjaalton@debian.org>
Date: Mon May 11 13:51:47 2015 +0300
sna-gen8-clear-instancing-enabled-bit-between-batches.diff: Fix corruptions and missing letters on 2nd head. (LP: #1432194)
diff --git a/debian/changelog b/debian/changelog
index 73774b5..028286c 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,10 @@
+xserver-xorg-video-intel (2:2.99.914-1~exp1ubuntu4.4) UNRELEASED; urgency=medium
+
+ * sna-gen8-clear-instancing-enabled-bit-between-batches.diff: Fix
+ corruptions and missing letters on 2nd head. (LP: #1432194)
+
+ -- Timo Aaltonen <tjaalton@debian.org> Mon, 11 May 2015 13:41:20 +0300
+
xserver-xorg-video-intel (2:2.99.914-1~exp1ubuntu4.3) utopic; urgency=medium
* bdw-annotate-more-64bit-pointer-locations.diff
diff --git a/debian/patches/series b/debian/patches/series
index 1aa20d9..1ad719d 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -13,3 +13,4 @@ sna-add-more-checks-and-asserts-for-blt.diff
fix-sna-external-slave-rotation.patch
bdw-annotate-more-64bit-pointer-locations.diff
bdw-clamp-urb-allocations-for-gt3.diff
+sna-gen8-clear-instancing-enabled-bit-between-batches.diff
diff --git a/debian/patches/sna-gen8-clear-instancing-enabled-bit-between-batches.diff b/debian/patches/sna-gen8-clear-instancing-enabled-bit-between-batches.diff
new file mode 100644
index 0000000..26f8f1f
--- /dev/null
+++ b/debian/patches/sna-gen8-clear-instancing-enabled-bit-between-batches.diff
@@ -0,0 +1,55 @@
+commit 0532a3313ad9c76a6e1d28e8a1c2ea495583fead
+Author: Chris Wilson <chris@chris-wilson.co.uk>
+Date: Wed Nov 5 20:11:54 2014 +0000
+
+ sna/gen8: Clear instancing enabled bit between batches
+
+ gen8 sets the instancing bit relative to the vertex element, but we were
+ clearing it for the vertex buffer. As the maximum number of vertex
+ elements is fixed, just clear them all when emitting our header. Note
+ that VF_SGVS is not sufficient by itself to disable all side-effects of
+ instancing.
+
+ Thanks to Kenneth Graunke for pointing out the change from vertex buffer
+ to vertex element of the instancing enable bit.
+
+ Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=84958
+ Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+
+diff --git a/src/sna/gen8_render.c b/src/sna/gen8_render.c
+index d375753..6deb6b5 100644
+--- a/src/sna/gen8_render.c
++++ b/src/sna/gen8_render.c
+@@ -788,6 +788,8 @@ gen8_emit_cc_invariant(struct sna *sna)
+ static void
+ gen8_emit_vf_invariant(struct sna *sna)
+ {
++ int n;
++
+ #if 1
+ OUT_BATCH(GEN8_3DSTATE_VF | (2 - 2));
+ OUT_BATCH(0);
+@@ -800,6 +802,12 @@ gen8_emit_vf_invariant(struct sna *sna)
+ OUT_BATCH(RECTLIST);
+
+ OUT_BATCH(GEN8_3DSTATE_VF_STATISTICS | 0);
++
++ for (n = 1; n <= 3; n++) {
++ OUT_BATCH(GEN8_3DSTATE_VF_INSTANCING | (3 - 2));
++ OUT_BATCH(n);
++ OUT_BATCH(0);
++ }
+ }
+
+ static void
+@@ -1417,10 +1425,6 @@ static void gen8_emit_vertex_buffer(struct sna *sna,
+ OUT_BATCH64(0);
+ OUT_BATCH(~0); /* buffer size: disabled */
+
+- OUT_BATCH(GEN8_3DSTATE_VF_INSTANCING | (3 - 2));
+- OUT_BATCH(id);
+- OUT_BATCH(0);
+-
+ sna->render.vb_id |= 1 << id;
+ }
+
commit 795cab7efc7c669ee6953e051e14f04f7a6ffba5
Author: Timo Aaltonen <tjaalton@debian.org>
Date: Fri Apr 17 07:59:16 2015 +0300
Fix BDW GT3. (#1444436)
diff --git a/debian/changelog b/debian/changelog
index 680ee24..73774b5 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,11 @@
+xserver-xorg-video-intel (2:2.99.914-1~exp1ubuntu4.3) utopic; urgency=medium
+
+ * bdw-annotate-more-64bit-pointer-locations.diff
+ bdw-clamp-urb-allocations-for-gt3.diff:
+ Fix BDW GT3. (#1444436)
+
+ -- Timo Aaltonen <tjaalton@debian.org> Wed, 22 Apr 2015 19:57:12 +0300
+
xserver-xorg-video-intel (2:2.99.914-1~exp1ubuntu4.2) utopic-proposed; urgency=medium
[ Timo Aaltonen ]
diff --git a/debian/patches/bdw-annotate-more-64bit-pointer-locations.diff b/debian/patches/bdw-annotate-more-64bit-pointer-locations.diff
new file mode 100644
index 0000000..d42090d
--- /dev/null
+++ b/debian/patches/bdw-annotate-more-64bit-pointer-locations.diff
@@ -0,0 +1,132 @@
+commit de54a93217cc550c44ee138f0511ede6925d84e0
+Author: Chris Wilson <chris@chris-wilson.co.uk>
+Date: Wed Oct 22 19:30:21 2014 +0100
+
+ sna/gen8: Annotate more 64bit pointer locations
+
+ Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+
+--- a/src/sna/gen8_render.c
++++ b/src/sna/gen8_render.c
+@@ -523,7 +523,7 @@ gen8_emit_vs_invariant(struct sna *sna)
+ OUT_BATCH(GEN8_3DSTATE_VS | (9 - 2));
+ OUT_BATCH64(0); /* no VS kernel */
+ OUT_BATCH(0);
+- OUT_BATCH64(0);
++ OUT_BATCH64(0); /* scratch */
+ OUT_BATCH(0);
+ OUT_BATCH(1 << 1); /* pass-through */
+ OUT_BATCH(1 << 16 | 1 << 21); /* urb write to SBE */
+@@ -549,12 +549,10 @@ static void
+ gen8_emit_hs_invariant(struct sna *sna)
+ {
+ OUT_BATCH(GEN8_3DSTATE_HS | (9 - 2));
+- OUT_BATCH(0); /* no HS kernel */
+- OUT_BATCH(0);
+- OUT_BATCH(0);
+- OUT_BATCH(0);
+ OUT_BATCH(0);
+ OUT_BATCH(0);
++ OUT_BATCH64(0); /* no HS kernel */
++ OUT_BATCH64(0); /* scratch */
+ OUT_BATCH(0);
+ OUT_BATCH(0); /* pass-through */
+
+@@ -590,11 +588,9 @@ static void
+ gen8_emit_ds_invariant(struct sna *sna)
+ {
+ OUT_BATCH(GEN8_3DSTATE_DS | (9 - 2));
++ OUT_BATCH64(0); /* no kernel */
+ OUT_BATCH(0);
+- OUT_BATCH(0);
+- OUT_BATCH(0);
+- OUT_BATCH(0);
+- OUT_BATCH(0);
++ OUT_BATCH64(0); /* scratch */
+ OUT_BATCH(0);
+ OUT_BATCH(0);
+ OUT_BATCH(0);
+@@ -622,15 +618,13 @@ static void
+ gen8_emit_gs_invariant(struct sna *sna)
+ {
+ OUT_BATCH(GEN8_3DSTATE_GS | (10 - 2));
+- OUT_BATCH(0); /* no GS kernel */
+- OUT_BATCH(0);
+- OUT_BATCH(0);
+- OUT_BATCH(0);
++ OUT_BATCH64(0); /* no GS kernel */
+ OUT_BATCH(0);
++ OUT_BATCH64(0); /* scratch */
+ OUT_BATCH(0);
++ OUT_BATCH(0); /* pass-through */
+ OUT_BATCH(0);
+ OUT_BATCH(0);
+- OUT_BATCH(0); /* pass-through */
+
+ #if SIM
+ OUT_BATCH(GEN8_3DSTATE_CONSTANT_GS | (11 - 2));
+@@ -744,13 +738,15 @@ gen8_emit_wm_invariant(struct sna *sna)
+ OUT_BATCH(WM_PERSPECTIVE_PIXEL_BARYCENTRIC);
+
+ #if SIM
+- OUT_BATCH(GEN8_3DSTATE_WM_HZ_OP | (5 - 2));
++ OUT_BATCH(GEN8_3DSTATE_WM_CHROMAKEY | (2 - 2));
+ OUT_BATCH(0);
++#endif
++
++#if 0
++ OUT_BATCH(GEN8_3DSTATE_WM_HZ_OP | (5 - 2));
+ OUT_BATCH(0);
+ OUT_BATCH(0);
+ OUT_BATCH(0);
+-
+- OUT_BATCH(GEN8_3DSTATE_WM_CHROMAKEY | (2 - 2));
+ OUT_BATCH(0);
+ #endif
+
+@@ -891,6 +887,7 @@ gen8_emit_cc(struct sna *sna, uint32_t b
+ } else
+ OUT_BATCH(PS_BLEND_HAS_WRITEABLE_RT);
+
++ assert(is_aligned(render->cc_blend + blend * GEN8_BLEND_STATE_PADDED_SIZE, 64));
+ OUT_BATCH(GEN8_3DSTATE_BLEND_STATE_POINTERS | (2 - 2));
+ OUT_BATCH((render->cc_blend + blend * GEN8_BLEND_STATE_PADDED_SIZE) | 1);
+
+@@ -953,6 +950,9 @@ gen8_emit_wm(struct sna *sna, int kernel
+ wm_kernels[kernel].name,
+ wm_kernels[kernel].num_surfaces,
+ kernels[0], kernels[1], kernels[2]));
++ assert(is_aligned(kernels[0], 64));
++ assert(is_aligned(kernels[1], 64));
++ assert(is_aligned(kernels[2], 64));
+
+ OUT_BATCH(GEN8_3DSTATE_PS | (12 - 2));
+ OUT_BATCH64(kernels[0] ?: kernels[1] ?: kernels[2]);
+@@ -1242,8 +1242,8 @@ static bool gen8_magic_ca_pass(struct sn
+ true, true,
+ op->is_affine));
+
+- OUT_BATCH(GEN8_3DPRIMITIVE | (7- 2));
+- OUT_BATCH(RECTLIST); /* ignored, see VF_TOPOLOGY */
++ OUT_BATCH(GEN8_3DPRIMITIVE | (7 - 2));
++ OUT_BATCH(0); /* ignored, see VF_TOPOLOGY */
+ OUT_BATCH(sna->render.vertex_index - sna->render.vertex_start);
+ OUT_BATCH(sna->render.vertex_start);
+ OUT_BATCH(1); /* single instance */
+@@ -1435,7 +1435,7 @@ static void gen8_emit_primitive(struct s
+ }
+
+ OUT_BATCH(GEN8_3DPRIMITIVE | (7 - 2));
+- OUT_BATCH(RECTLIST); /* ignored, see VF_TOPOLOGY */
++ OUT_BATCH(0); /* ignored, see VF_TOPOLOGY */
+ sna->render.vertex_offset = sna->kgem.nbatch;
+ OUT_BATCH(0); /* vertex count, to be filled in later */
+ OUT_BATCH(sna->render.vertex_index);
+@@ -1776,6 +1776,7 @@ gen8_create_blend_state(struct sna_stati
+ assert(((ptr - base) & 63) == 0);
+ COMPILE_TIME_ASSERT(sizeof(blend->common) == 4);
+ COMPILE_TIME_ASSERT(sizeof(blend->rt) == 8);
++ COMPILE_TIME_ASSERT((char *)&blend->rt - (char *)blend == 4);
+
+ blend->rt.post_blend_clamp = 1;
+ blend->rt.pre_blend_clamp = 1;
diff --git a/debian/patches/bdw-clamp-urb-allocations-for-gt3.diff b/debian/patches/bdw-clamp-urb-allocations-for-gt3.diff
new file mode 100644
index 0000000..6e176e1
--- /dev/null
+++ b/debian/patches/bdw-clamp-urb-allocations-for-gt3.diff
@@ -0,0 +1,41 @@
+commit 7a9bdadd71730adc5266bc6758982abec5917b93
+Author: Chris Wilson <chris@chris-wilson.co.uk>
+Date: Wed Oct 22 19:31:10 2014 +0100
+
+ sna/gen8: Clamp URB allocations for GT3
+
+ GT3 requires some reserved space in the URB allocation and so we must
+ reduce the amount we allocate to our vertices.
+
+ Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=81583
+ Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+
+--- a/src/sna/gen8_render.c
++++ b/src/sna/gen8_render.c
+@@ -466,21 +466,21 @@ gen8_emit_urb(struct sna *sna)
+ {
+ /* num of VS entries must be divisible by 8 if size < 9 */
+ OUT_BATCH(GEN8_3DSTATE_URB_VS | (2 - 2));
+- OUT_BATCH(1024 << URB_ENTRY_NUMBER_SHIFT |
++ OUT_BATCH(960 << URB_ENTRY_NUMBER_SHIFT |
+ (2 - 1) << URB_ENTRY_SIZE_SHIFT |
+- 0 << URB_STARTING_ADDRESS_SHIFT);
++ 4 << URB_STARTING_ADDRESS_SHIFT);
+
+ OUT_BATCH(GEN8_3DSTATE_URB_HS | (2 - 2));
+ OUT_BATCH(0 << URB_ENTRY_SIZE_SHIFT |
+- 0 << URB_STARTING_ADDRESS_SHIFT);
++ 4 << URB_STARTING_ADDRESS_SHIFT);
+
+ OUT_BATCH(GEN8_3DSTATE_URB_DS | (2 - 2));
+ OUT_BATCH(0 << URB_ENTRY_SIZE_SHIFT |
+- 0 << URB_STARTING_ADDRESS_SHIFT);
++ 4 << URB_STARTING_ADDRESS_SHIFT);
+
+ OUT_BATCH(GEN8_3DSTATE_URB_GS | (2 - 2));
+ OUT_BATCH(0 << URB_ENTRY_SIZE_SHIFT |
+- 0 << URB_STARTING_ADDRESS_SHIFT);
++ 4 << URB_STARTING_ADDRESS_SHIFT);
+ }
+
+ static void
diff --git a/debian/patches/series b/debian/patches/series
index 30cfcba..1aa20d9 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -11,3 +11,5 @@ sna-fix-gen8-blt.diff
sna-tweak-alignment-constraints-on-gen8.diff
sna-add-more-checks-and-asserts-for-blt.diff
fix-sna-external-slave-rotation.patch
+bdw-annotate-more-64bit-pointer-locations.diff
+bdw-clamp-urb-allocations-for-gt3.diff
Reply to: