diff -u xserver-xorg-video-intel-2.20.19/debian/changelog xserver-xorg-video-intel-2.20.19/debian/changelog --- xserver-xorg-video-intel-2.20.19/debian/changelog +++ xserver-xorg-video-intel-2.20.19/debian/changelog @@ -1,9 +1,9 @@ -xserver-xorg-video-intel (2:2.20.19-0ubuntu3~matttbe0) raring; urgency=low +xserver-xorg-video-intel (2:2.20.19-0ubuntu3~matttbe1) raring; urgency=low - * revert_98b312e.patch: Revert rev 98b312e: sna/dri: Stop feeding - I915_TILING_Y to mesa i915c + * upstream-git-clipExtents.patch: + - Compensate clipExtents for drawable offset - -- Matthieu Baerts (matttbe) Thu, 24 Jan 2013 15:03:55 +0100 + -- Matthieu Baerts (matttbe) Thu, 24 Jan 2013 17:30:46 +0100 xserver-xorg-video-intel (2:2.20.19-0ubuntu2) raring; urgency=low reverted: --- xserver-xorg-video-intel-2.20.19/debian/patches/revert_98b312e.patch +++ xserver-xorg-video-intel-2.20.19.orig/debian/patches/revert_98b312e.patch @@ -1,14 +0,0 @@ -Index: xserver-xorg-video-intel-2.20.19/src/sna/sna_dri.c -=================================================================== ---- xserver-xorg-video-intel-2.20.19.orig/src/sna/sna_dri.c 2013-01-24 15:00:51.925438000 +0100 -+++ xserver-xorg-video-intel-2.20.19/src/sna/sna_dri.c 2013-01-24 15:01:17.621437097 +0100 -@@ -146,8 +146,7 @@ - static uint32_t other_tiling(struct sna *sna, DrawablePtr draw) - { - /* XXX Can mix color X / depth Y? */ -- return kgem_choose_tiling(&sna->kgem, -- sna->kgem.gen >=40 ? -I915_TILING_Y : -I915_TILING_X, -+ return kgem_choose_tiling(&sna->kgem, -I915_TILING_Y, - draw->width, - draw->height, - draw->bitsPerPixel); diff -u xserver-xorg-video-intel-2.20.19/debian/patches/upstream-snapshot-778dba90c.diff xserver-xorg-video-intel-2.20.19/debian/patches/upstream-snapshot-778dba90c.diff --- xserver-xorg-video-intel-2.20.19/debian/patches/upstream-snapshot-778dba90c.diff +++ xserver-xorg-video-intel-2.20.19/debian/patches/upstream-snapshot-778dba90c.diff @@ -1,8 +1,8 @@ -diff --git a/configure.ac b/configure.ac -index 317bc6d..cb1496b 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -291,24 +291,6 @@ if test "x$USERPTR" = xyes; then +Index: xserver-xorg-video-intel-2.20.19/configure.ac +=================================================================== +--- xserver-xorg-video-intel-2.20.19.orig/configure.ac 2013-01-24 17:24:46.847666384 +0100 ++++ xserver-xorg-video-intel-2.20.19/configure.ac 2013-01-24 17:24:46.835666385 +0100 +@@ -291,24 +291,6 @@ AC_DEFINE(USE_USERPTR,1,[Assume USERPTR support]) fi @@ -27,11 +27,11 @@ AC_ARG_ENABLE(async-swap, AS_HELP_STRING([--enable-async-swap], [Enable use of asynchronous swaps (experimental) [default=no]]), -diff --git a/src/sna/gen3_render.c b/src/sna/gen3_render.c -index 42e4cdd..01c0aee 100644 ---- a/src/sna/gen3_render.c -+++ b/src/sna/gen3_render.c -@@ -1569,11 +1569,11 @@ static void gen3_emit_composite_state(struct sna *sna, +Index: xserver-xorg-video-intel-2.20.19/src/sna/gen3_render.c +=================================================================== +--- xserver-xorg-video-intel-2.20.19.orig/src/sna/gen3_render.c 2013-01-24 17:24:46.847666384 +0100 ++++ xserver-xorg-video-intel-2.20.19/src/sna/gen3_render.c 2013-01-24 17:24:46.835666385 +0100 +@@ -1569,11 +1569,11 @@ gen3_composite_emit_shader(sna, op, op->op); } @@ -45,7 +45,7 @@ DBG(("%s(%d)\n", __FUNCTION__, sna->render.vertex_index - sna->render.vertex_start)); -@@ -1587,6 +1587,7 @@ static void gen3_magic_ca_pass(struct sna *sna, +@@ -1587,6 +1587,7 @@ OUT_BATCH(sna->render.vertex_start); sna->render_state.gen3.last_blend = 0; @@ -53,7 +53,7 @@ } static void gen3_vertex_flush(struct sna *sna) -@@ -1613,22 +1614,22 @@ static int gen3_vertex_finish(struct sna *sna) +@@ -1613,22 +1614,22 @@ DBG(("%s: used=%d/%d, vbo active? %d\n", __FUNCTION__, sna->render.vertex_used, sna->render.vertex_size, sna->render.vbo ? sna->render.vbo->handle : 0)); @@ -83,7 +83,7 @@ sna->render.vertex_used = 0; sna->render.vertex_index = 0; sna->render.vbo = NULL; -@@ -1664,14 +1665,13 @@ static void gen3_vertex_close(struct sna *sna) +@@ -1664,14 +1665,13 @@ unsigned int delta = 0; assert(sna->render.vertex_offset == 0); @@ -100,7 +100,7 @@ bo = sna->render.vbo; if (bo) { if (sna->render.vertex_size - sna->render.vertex_used < 64) { -@@ -1717,15 +1717,11 @@ static void gen3_vertex_close(struct sna *sna) +@@ -1717,15 +1717,11 @@ } } @@ -121,7 +121,7 @@ if (sna->render.vbo == NULL) { DBG(("%s: resetting vbo\n", __FUNCTION__)); -@@ -1789,8 +1785,16 @@ static int gen3_get_rectangles__flush(struct sna *sna, +@@ -1789,8 +1785,16 @@ if (!kgem_check_reloc_and_exec(&sna->kgem, 1)) return 0; @@ -140,7 +140,7 @@ return gen3_vertex_finish(sna); } -@@ -1836,6 +1840,8 @@ flush: +@@ -1836,6 +1840,8 @@ } _kgem_submit(&sna->kgem); gen3_emit_composite_state(sna, op); @@ -149,7 +149,7 @@ goto start; } -@@ -1972,6 +1978,9 @@ gen3_render_reset(struct sna *sna) +@@ -1972,6 +1978,9 @@ __FUNCTION__, sna->render.vbo->presumed_offset)); discard_vbo(sna); } @@ -159,7 +159,7 @@ } static void -@@ -4647,6 +4656,9 @@ gen3_render_fill_one(struct sna *sna, PixmapPtr dst, struct kgem_bo *bo, +@@ -4647,6 +4656,9 @@ static void gen3_render_flush(struct sna *sna) { gen3_vertex_close(sna); @@ -169,11 +169,11 @@ } static void -diff --git a/src/sna/gen4_render.c b/src/sna/gen4_render.c -index 6b3f864..d2f3fff 100644 ---- a/src/sna/gen4_render.c -+++ b/src/sna/gen4_render.c -@@ -207,13 +207,13 @@ gen4_choose_composite_kernel(int op, bool has_mask, bool is_ca, bool is_affine) +Index: xserver-xorg-video-intel-2.20.19/src/sna/gen4_render.c +=================================================================== +--- xserver-xorg-video-intel-2.20.19.orig/src/sna/gen4_render.c 2013-01-24 17:24:46.847666384 +0100 ++++ xserver-xorg-video-intel-2.20.19/src/sna/gen4_render.c 2013-01-24 17:24:46.835666385 +0100 +@@ -207,13 +207,13 @@ return base + !is_affine; } @@ -189,7 +189,7 @@ assert(sna->render.vertex_index > sna->render.vertex_start); -@@ -237,6 +237,7 @@ static void gen4_magic_ca_pass(struct sna *sna, +@@ -237,6 +237,7 @@ OUT_BATCH(0); /* index buffer offset, ignored */ state->last_primitive = sna->kgem.nbatch; @@ -197,7 +197,7 @@ } static uint32_t gen4_get_blend(int op, -@@ -613,6 +614,13 @@ static int gen4_get_rectangles__flush(struct sna *sna, +@@ -613,6 +614,13 @@ if (op->need_magic_ca_pass && sna->render.vbo) return 0; @@ -211,7 +211,7 @@ return gen4_vertex_finish(sna); } -@@ -2784,6 +2792,10 @@ static void gen4_render_reset(struct sna *sna) +@@ -2784,6 +2792,10 @@ DBG(("%s: discarding unmappable vbo\n", __FUNCTION__)); discard_vbo(sna); } @@ -222,11 +222,11 @@ } static void gen4_render_fini(struct sna *sna) -diff --git a/src/sna/gen4_vertex.c b/src/sna/gen4_vertex.c -index 9891453..4e40467 100644 ---- a/src/sna/gen4_vertex.c -+++ b/src/sna/gen4_vertex.c -@@ -55,16 +55,13 @@ int gen4_vertex_finish(struct sna *sna) +Index: xserver-xorg-video-intel-2.20.19/src/sna/gen4_vertex.c +=================================================================== +--- xserver-xorg-video-intel-2.20.19.orig/src/sna/gen4_vertex.c 2013-01-24 17:24:46.847666384 +0100 ++++ xserver-xorg-video-intel-2.20.19/src/sna/gen4_vertex.c 2013-01-24 17:24:46.835666385 +0100 +@@ -55,16 +55,13 @@ DBG(("%s: used=%d / %d\n", __FUNCTION__, sna->render.vertex_used, sna->render.vertex_size)); @@ -244,11 +244,11 @@ for (i = 0; i < sna->render.nvertex_reloc; i++) { DBG(("%s: reloc[%d] = %d\n", __FUNCTION__, i, sna->render.vertex_reloc[i])); -diff --git a/src/sna/gen5_render.c b/src/sna/gen5_render.c -index eec2f83..5995d1d 100644 ---- a/src/sna/gen5_render.c -+++ b/src/sna/gen5_render.c -@@ -199,13 +199,13 @@ gen5_choose_composite_kernel(int op, bool has_mask, bool is_ca, bool is_affine) +Index: xserver-xorg-video-intel-2.20.19/src/sna/gen5_render.c +=================================================================== +--- xserver-xorg-video-intel-2.20.19.orig/src/sna/gen5_render.c 2013-01-24 17:24:46.847666384 +0100 ++++ xserver-xorg-video-intel-2.20.19/src/sna/gen5_render.c 2013-01-24 17:24:46.839666385 +0100 +@@ -199,13 +199,13 @@ return base + !is_affine; } @@ -264,7 +264,7 @@ assert(sna->render.vertex_index > sna->render.vertex_start); -@@ -230,6 +230,7 @@ static void gen5_magic_ca_pass(struct sna *sna, +@@ -230,6 +230,7 @@ OUT_BATCH(0); /* index buffer offset, ignored */ state->last_primitive = sna->kgem.nbatch; @@ -272,7 +272,7 @@ } static uint32_t gen5_get_blend(int op, -@@ -599,8 +600,12 @@ static int gen5_get_rectangles__flush(struct sna *sna, +@@ -599,8 +600,12 @@ if (!kgem_check_reloc_and_exec(&sna->kgem, 2)) return 0; @@ -287,7 +287,7 @@ return gen4_vertex_finish(sna); } -@@ -2914,6 +2919,10 @@ static void gen5_render_reset(struct sna *sna) +@@ -2914,6 +2919,10 @@ DBG(("%s: discarding unmappable vbo\n", __FUNCTION__)); discard_vbo(sna); } @@ -298,11 +298,11 @@ } static void gen5_render_fini(struct sna *sna) -diff --git a/src/sna/gen6_render.c b/src/sna/gen6_render.c -index 7af59ae..35ff862 100644 ---- a/src/sna/gen6_render.c -+++ b/src/sna/gen6_render.c -@@ -886,13 +886,13 @@ gen6_emit_state(struct sna *sna, +Index: xserver-xorg-video-intel-2.20.19/src/sna/gen6_render.c +=================================================================== +--- xserver-xorg-video-intel-2.20.19.orig/src/sna/gen6_render.c 2013-01-24 17:24:46.847666384 +0100 ++++ xserver-xorg-video-intel-2.20.19/src/sna/gen6_render.c 2013-01-24 17:24:46.839666385 +0100 +@@ -886,13 +886,13 @@ sna->render_state.gen6.first_state_packet = false; } @@ -318,7 +318,7 @@ DBG(("%s: CA fixup (%d -> %d)\n", __FUNCTION__, sna->render.vertex_start, sna->render.vertex_index)); -@@ -918,6 +918,7 @@ static void gen6_magic_ca_pass(struct sna *sna, +@@ -918,6 +918,7 @@ OUT_BATCH(0); /* index buffer offset, ignored */ state->last_primitive = sna->kgem.nbatch; @@ -326,7 +326,7 @@ } typedef struct gen6_surface_state_padded { -@@ -1145,8 +1146,16 @@ static int gen6_get_rectangles__flush(struct sna *sna, +@@ -1145,8 +1146,16 @@ if (!kgem_check_reloc_and_exec(&sna->kgem, 2)) return 0; @@ -345,7 +345,7 @@ return gen4_vertex_finish(sna); } -@@ -3422,6 +3431,10 @@ static void gen6_render_reset(struct sna *sna) +@@ -3422,6 +3431,10 @@ sna->render_state.gen6.drawrect_offset = -1; sna->render_state.gen6.drawrect_limit = -1; sna->render_state.gen6.surface_table = -1; @@ -356,11 +356,11 @@ } static void gen6_render_fini(struct sna *sna) -diff --git a/src/sna/gen7_render.c b/src/sna/gen7_render.c -index 5880e7a..fa36ce6 100644 ---- a/src/sna/gen7_render.c -+++ b/src/sna/gen7_render.c -@@ -1034,13 +1034,13 @@ gen7_emit_state(struct sna *sna, +Index: xserver-xorg-video-intel-2.20.19/src/sna/gen7_render.c +=================================================================== +--- xserver-xorg-video-intel-2.20.19.orig/src/sna/gen7_render.c 2013-01-24 17:24:46.847666384 +0100 ++++ xserver-xorg-video-intel-2.20.19/src/sna/gen7_render.c 2013-01-24 17:24:46.839666385 +0100 +@@ -1034,13 +1034,13 @@ sna->render_state.gen7.emit_flush = GEN7_READS_DST(op->u.gen7.flags); } @@ -376,7 +376,7 @@ DBG(("%s: CA fixup (%d -> %d)\n", __FUNCTION__, sna->render.vertex_start, sna->render.vertex_index)); -@@ -1064,6 +1064,7 @@ static void gen7_magic_ca_pass(struct sna *sna, +@@ -1064,6 +1064,7 @@ OUT_BATCH(0); /* index buffer offset, ignored */ state->last_primitive = sna->kgem.nbatch; @@ -384,7 +384,7 @@ } static void null_create(struct sna_static_stream *stream) -@@ -1272,8 +1273,14 @@ static int gen7_get_rectangles__flush(struct sna *sna, +@@ -1272,8 +1273,14 @@ if (!kgem_check_reloc_and_exec(&sna->kgem, 2)) return 0; @@ -401,7 +401,7 @@ return gen4_vertex_finish(sna); } -@@ -2557,12 +2564,11 @@ static inline bool prefer_blt_copy(struct sna *sna, +@@ -2557,12 +2564,11 @@ struct kgem_bo *dst_bo, unsigned flags) { @@ -416,7 +416,7 @@ if (src_bo == dst_bo && can_switch_to_blt(sna, dst_bo, flags)) return true; -@@ -3503,6 +3509,10 @@ static void gen7_render_reset(struct sna *sna) +@@ -3503,6 +3509,10 @@ sna->render_state.gen7.drawrect_offset = -1; sna->render_state.gen7.drawrect_limit = -1; sna->render_state.gen7.surface_table = -1; @@ -427,11 +427,11 @@ } static void gen7_render_fini(struct sna *sna) -diff --git a/src/sna/kgem.c b/src/sna/kgem.c -index 49815e7..6fa8ce4 100644 ---- a/src/sna/kgem.c -+++ b/src/sna/kgem.c -@@ -81,16 +81,6 @@ search_snoop_cache(struct kgem *kgem, unsigned int num_pages, unsigned flags); +Index: xserver-xorg-video-intel-2.20.19/src/sna/kgem.c +=================================================================== +--- xserver-xorg-video-intel-2.20.19.orig/src/sna/kgem.c 2013-01-24 17:24:46.847666384 +0100 ++++ xserver-xorg-video-intel-2.20.19/src/sna/kgem.c 2013-01-24 17:24:46.839666385 +0100 +@@ -81,16 +81,6 @@ #define SHOW_BATCH 0 @@ -448,7 +448,7 @@ /* Worst case seems to be 965gm where we cannot write within a cacheline that * is being simultaneously being read by the GPU, or within the sampler * prefetch. In general, the chipsets seem to have a requirement that sampler -@@ -1560,9 +1550,7 @@ inline static void kgem_bo_remove_from_active(struct kgem *kgem, +@@ -1560,9 +1550,7 @@ static void kgem_bo_clear_scanout(struct kgem *kgem, struct kgem_bo *bo) { @@ -459,7 +459,7 @@ assert(bo->proxy == NULL); DBG(("%s: handle=%d, fb=%d (reusable=%d)\n", -@@ -1722,7 +1710,9 @@ static void __kgem_bo_destroy(struct kgem *kgem, struct kgem_bo *bo) +@@ -1722,7 +1710,9 @@ } if (bo->scanout) { @@ -470,7 +470,7 @@ list_add(&bo->list, &kgem->scanout); return; } -@@ -1776,6 +1766,7 @@ static void __kgem_bo_destroy(struct kgem *kgem, struct kgem_bo *bo) +@@ -1776,6 +1766,7 @@ DBG(("%s: handle=%d -> flushing\n", __FUNCTION__, bo->handle)); @@ -478,7 +478,7 @@ list_add(&bo->request, &kgem->flushing); if (bucket(bo) < NUM_CACHE_BUCKETS) cache = &kgem->active[bucket(bo)][bo->tiling]; -@@ -1876,8 +1867,8 @@ static bool kgem_retire__flushing(struct kgem *kgem) +@@ -1876,8 +1867,8 @@ if (!bo->refcnt) { if (bo->snoop) { kgem_bo_move_to_snoop(kgem, bo); @@ -489,7 +489,7 @@ kgem_bo_move_to_inactive(kgem, bo); retired = true; } else -@@ -1935,12 +1926,8 @@ static bool __kgem_retire_rq(struct kgem *kgem, struct kgem_request *rq) +@@ -1935,12 +1926,8 @@ continue; if (bo->snoop) { @@ -503,7 +503,7 @@ continue; } -@@ -2422,7 +2409,8 @@ void kgem_reset(struct kgem *kgem) +@@ -2422,7 +2409,8 @@ bo->rq = NULL; bo->domain = DOMAIN_NONE; @@ -513,7 +513,7 @@ DBG(("%s: discarding handle=%d\n", __FUNCTION__, bo->handle)); kgem_bo_free(kgem, bo); -@@ -2648,33 +2636,23 @@ void _kgem_submit(struct kgem *kgem) +@@ -2648,33 +2636,23 @@ DRM_IOCTL_I915_GEM_EXECBUFFER2, &execbuf); } @@ -552,7 +552,7 @@ ret = errno; ErrorF("batch[%d/%d]: %d %d %d, nreloc=%d, nexec=%d, nfence=%d, aperture=%d: errno=%d\n", kgem->mode, kgem->ring, batch_end, kgem->nbatch, kgem->surface, -@@ -2710,15 +2688,17 @@ void _kgem_submit(struct kgem *kgem) +@@ -2710,15 +2688,17 @@ (int)kgem->reloc[i].presumed_offset); } @@ -577,11 +577,11 @@ } kgem_commit(kgem); -diff --git a/src/sna/kgem.h b/src/sna/kgem.h -index d2b89f5..b345b49 100644 ---- a/src/sna/kgem.h -+++ b/src/sna/kgem.h -@@ -420,9 +420,9 @@ static inline bool kgem_check_batch_with_surfaces(struct kgem *kgem, +Index: xserver-xorg-video-intel-2.20.19/src/sna/kgem.h +=================================================================== +--- xserver-xorg-video-intel-2.20.19.orig/src/sna/kgem.h 2013-01-24 17:24:46.847666384 +0100 ++++ xserver-xorg-video-intel-2.20.19/src/sna/kgem.h 2013-01-24 17:24:46.839666385 +0100 +@@ -420,9 +420,9 @@ kgem_check_exec(kgem, num_surfaces); } @@ -593,7 +593,7 @@ unsigned mode = kgem->mode; _kgem_submit(kgem); _kgem_set_mode(kgem, mode); -@@ -431,11 +431,6 @@ static inline uint32_t *kgem_get_batch(struct kgem *kgem, int num_dwords) +@@ -431,11 +431,6 @@ return kgem->batch + kgem->nbatch; } @@ -605,11 +605,11 @@ bool kgem_check_bo(struct kgem *kgem, ...) __attribute__((sentinel(0))); bool kgem_check_bo_fenced(struct kgem *kgem, struct kgem_bo *bo); bool kgem_check_many_bo_fenced(struct kgem *kgem, ...) __attribute__((sentinel(0))); -diff --git a/src/sna/sna_accel.c b/src/sna/sna_accel.c -index ba9a3cb..e388d80 100644 ---- a/src/sna/sna_accel.c -+++ b/src/sna/sna_accel.c -@@ -7006,6 +7006,8 @@ sna_poly_line_blt(DrawablePtr drawable, +Index: xserver-xorg-video-intel-2.20.19/src/sna/sna_accel.c +=================================================================== +--- xserver-xorg-video-intel-2.20.19.orig/src/sna/sna_accel.c 2013-01-24 17:24:46.847666384 +0100 ++++ xserver-xorg-video-intel-2.20.19/src/sna/sna_accel.c 2013-01-24 17:24:46.843666384 +0100 +@@ -7006,6 +7006,8 @@ b->y1 = p.y; b->y2 = last.y; } @@ -618,7 +618,7 @@ DBG(("%s: blt (%d, %d), (%d, %d)\n", __FUNCTION__, b->x1, b->y1, b->x2, b->y2)); -@@ -7063,6 +7065,8 @@ sna_poly_line_blt(DrawablePtr drawable, +@@ -7063,6 +7065,8 @@ b->y1 = p.y; b->y2 = last.y; } @@ -627,7 +627,7 @@ DBG(("%s: blt (%d, %d), (%d, %d)\n", __FUNCTION__, b->x1, b->y1, b->x2, b->y2)); -@@ -7119,6 +7123,8 @@ sna_poly_line_blt(DrawablePtr drawable, +@@ -7119,6 +7123,8 @@ box.y1 = p.y; box.y2 = last.y; } @@ -636,11 +636,11 @@ DBG(("%s: blt (%d, %d), (%d, %d)\n", __FUNCTION__, box.x1, box.y1, box.x2, box.y2)); -diff --git a/src/sna/sna_display.c b/src/sna/sna_display.c -index 0a581da..307e763 100644 ---- a/src/sna/sna_display.c -+++ b/src/sna/sna_display.c -@@ -197,13 +197,15 @@ sna_output_backlight_set(xf86OutputPtr output, int level) +Index: xserver-xorg-video-intel-2.20.19/src/sna/sna_display.c +=================================================================== +--- xserver-xorg-video-intel-2.20.19.orig/src/sna/sna_display.c 2013-01-24 17:24:46.847666384 +0100 ++++ xserver-xorg-video-intel-2.20.19/src/sna/sna_display.c 2013-01-24 17:24:46.843666384 +0100 +@@ -197,13 +197,15 @@ char path[1024], val[BACKLIGHT_VALUE_LEN]; int fd, len, ret; @@ -660,7 +660,7 @@ len = snprintf(val, BACKLIGHT_VALUE_LEN, "%d\n", level); sprintf(path, "%s/%s/brightness", BACKLIGHT_CLASS, sna_output->backlight_iface); -@@ -2768,10 +2770,12 @@ sna_covering_crtc(ScrnInfoPtr scrn, +@@ -2768,10 +2770,12 @@ #define MI_LOAD_REGISTER_IMM (0x22<<23) static bool sna_emit_wait_for_scanline_gen7(struct sna *sna, @@ -673,7 +673,7 @@ if (!sna->kgem.has_secure_batches) return false; -@@ -2780,60 +2784,106 @@ static bool sna_emit_wait_for_scanline_gen7(struct sna *sna, +@@ -2780,60 +2784,106 @@ assert(y2 > y1); assert(sna->kgem.mode); @@ -791,7 +791,7 @@ int pipe, int y1, int y2, bool full_height) { -@@ -2852,18 +2902,20 @@ static bool sna_emit_wait_for_scanline_gen4(struct sna *sna, +@@ -2852,18 +2902,20 @@ event = MI_WAIT_FOR_PIPEB_SCAN_LINE_WINDOW; } @@ -814,7 +814,7 @@ int pipe, int y1, int y2, bool full_height) { -@@ -2877,16 +2929,14 @@ static bool sna_emit_wait_for_scanline_gen2(struct sna *sna, +@@ -2877,16 +2929,14 @@ if (full_height) y2 -= 2; @@ -835,7 +835,7 @@ return true; } -@@ -2934,13 +2984,13 @@ sna_wait_for_scanline(struct sna *sna, +@@ -2934,13 +2984,13 @@ if (sna->kgem.gen >= 0100) ret = false; else if (sna->kgem.gen >= 070) @@ -853,11 +853,11 @@ return ret; } -diff --git a/src/sna/sna_dri.c b/src/sna/sna_dri.c -index b48894e..9d249e3 100644 ---- a/src/sna/sna_dri.c -+++ b/src/sna/sna_dri.c -@@ -146,7 +146,8 @@ static uint32_t color_tiling(struct sna *sna, DrawablePtr draw) +Index: xserver-xorg-video-intel-2.20.19/src/sna/sna_dri.c +=================================================================== +--- xserver-xorg-video-intel-2.20.19.orig/src/sna/sna_dri.c 2013-01-24 17:24:46.847666384 +0100 ++++ xserver-xorg-video-intel-2.20.19/src/sna/sna_dri.c 2013-01-24 17:24:46.843666384 +0100 +@@ -146,7 +146,8 @@ static uint32_t other_tiling(struct sna *sna, DrawablePtr draw) { /* XXX Can mix color X / depth Y? */ @@ -867,7 +867,7 @@ draw->width, draw->height, draw->bitsPerPixel); -@@ -513,8 +514,11 @@ static void sna_dri_select_mode(struct sna *sna, struct kgem_bo *dst, struct kge +@@ -513,8 +514,11 @@ return; if (sync) { @@ -881,7 +881,7 @@ return; } -@@ -837,14 +841,23 @@ can_blit(struct sna * sna, +@@ -837,14 +841,23 @@ DRI2BufferPtr front, DRI2BufferPtr back) { @@ -909,7 +909,7 @@ } static void -@@ -2069,18 +2082,17 @@ sna_dri_schedule_swap(ClientPtr client, DrawablePtr draw, DRI2BufferPtr front, +@@ -2069,18 +2082,17 @@ (uint32_t)*target_msc, (uint32_t)current_msc, (uint32_t)divisor)); if (divisor == 0 && current_msc >= *target_msc - 1) { diff -u xserver-xorg-video-intel-2.20.19/debian/patches/series xserver-xorg-video-intel-2.20.19/debian/patches/series --- xserver-xorg-video-intel-2.20.19/debian/patches/series +++ xserver-xorg-video-intel-2.20.19/debian/patches/series @@ -3 +3 @@ -revert_98b312e.patch +upstream-git-clipExtents.patch only in patch2: unchanged: --- xserver-xorg-video-intel-2.20.19.orig/debian/patches/upstream-git-clipExtents.patch +++ xserver-xorg-video-intel-2.20.19/debian/patches/upstream-git-clipExtents.patch @@ -0,0 +1,51 @@ +From d60128c55e8f5f69476d42c20f2fd62ccc0f411e Mon Sep 17 00:00:00 2001 +From: Chris Wilson +Date: Thu, 24 Jan 2013 15:41:29 +0000 +Subject: sna/dri: Compensate clipExtents for drawable offset + +The clipExtents is in screen coordinates whereas we just want to confirm +that the maximum pixel to be copied lies with the DRI2 buffer, which is +relative to the drawable. + +Reported-by: Matthieu Baerts +Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=59806 +Signed-off-by: Chris Wilson +--- +Index: xserver-xorg-video-intel-2.20.19/src/sna/sna_dri.c +=================================================================== +--- xserver-xorg-video-intel-2.20.19.orig/src/sna/sna_dri.c 2013-01-24 17:27:10.939661325 +0100 ++++ xserver-xorg-video-intel-2.20.19/src/sna/sna_dri.c 2013-01-24 17:27:10.939661325 +0100 +@@ -842,20 +842,31 @@ + DRI2BufferPtr back) + { + RegionPtr clip; ++ int w, h; + uint32_t s; + + if (draw->type == DRAWABLE_PIXMAP) + return true; + + clip = &((WindowPtr)draw)->clipList; ++ w = clip->extents.x2 - draw->x; ++ h = clip->extents.y2 - draw->y; ++ if ((w|h) < 0) ++ return false; + + s = get_private(front)->size; +- if ((s>>16) < clip->extents.y2 || (s&0xffff) < clip->extents.x2) ++ if ((s>>16) < h || (s&0xffff) < w) { ++ DBG(("%s: reject front size (%dx%d) < (%dx%d)\n", __func__, ++ s&0xffff, s>>16, w, h)); + return false; ++ } + + s = get_private(back)->size; +- if ((s>>16) < clip->extents.y2 || (s&0xffff) < clip->extents.x2) ++ if ((s>>16) < h || (s&0xffff) < w) { ++ DBG(("%s:reject back size (%dx%d) < (%dx%d)\n", __func__, ++ s&0xffff, s>>16, w, h)); + return false; ++ } + + return true; + }