Rebased ref, commits from common ancestor: commit 7180b5be2159bd0ef7c8ef6ae7991f2a38263158 Author: Timo Aaltonen <tjaal...@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 <tjaal...@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 <mar...@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 <ch...@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" <jstpie...@mecheye.net> +Signed-off-by: Chris Wilson <ch...@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 <tjaal...@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 <tjaal...@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 <ch...@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 <ch...@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 <tjaal...@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 <tjaal...@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 <ch...@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 <ch...@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 <ch...@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 <ch...@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 -- 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/e1yy5dt-00063j...@moszumanska.debian.org