diff -u xserver-xorg-video-intel-2.99.910/debian/changelog xserver-xorg-video-intel-2.99.910/debian/changelog --- xserver-xorg-video-intel-2.99.910/debian/changelog +++ xserver-xorg-video-intel-2.99.910/debian/changelog @@ -1,3 +1,10 @@ +xserver-xorg-video-intel (2:2.99.910-0ubuntu1.6) trusty-proposed; urgency=medium + + * sna-mark-the-chv-vsync-method-as-unknown.diff: Fix video playback + on CHV. (LP: #1445221) + + -- Timo Aaltonen Fri, 17 Apr 2015 08:00:47 +0300 + xserver-xorg-video-intel (2:2.99.910-0ubuntu1.5) trusty-proposed; urgency=medium * bdw-annotate-more-64bit-pointer-locations.diff diff -u xserver-xorg-video-intel-2.99.910/debian/patches/series xserver-xorg-video-intel-2.99.910/debian/patches/series --- xserver-xorg-video-intel-2.99.910/debian/patches/series +++ xserver-xorg-video-intel-2.99.910/debian/patches/series @@ -30,0 +31 @@ +sna-mark-the-chv-vsync-method-as-unknown.diff only in patch2: unchanged: --- xserver-xorg-video-intel-2.99.910.orig/debian/patches/sna-mark-the-chv-vsync-method-as-unknown.diff +++ xserver-xorg-video-intel-2.99.910/debian/patches/sna-mark-the-chv-vsync-method-as-unknown.diff @@ -0,0 +1,79 @@ +commit 2afeef0c3ffeae768198fc08c9f365ccd28b7f5d +Author: Chris Wilson +Date: Thu May 15 11:28:48 2014 +0100 + + sna: Mark the CHV vsync method as unknown + + Similar to the story with Baytrail, vsync is a lost art. + + Signed-off-by: Chris Wilson + +--- a/src/sna/sna_display.c ++++ b/src/sna/sna_display.c +@@ -4209,52 +4209,6 @@ static bool sna_emit_wait_for_scanline_h + return true; + } + +-static bool sna_emit_wait_for_scanline_vlv(struct sna *sna, +- xf86CrtcPtr crtc, +- int pipe, int y1, int y2, +- bool full_height) +-{ +- uint32_t display_base = 0x180000; +- uint32_t event; +- uint32_t *b; +- +- return false; /* synchronisation? I've heard of that */ +- +- if (!sna->kgem.has_secure_batches) +- return false; +- +- assert(y1 >= 0); +- assert(y2 > y1); +- assert(sna->kgem.mode); +- +- /* Always program one less than the desired value */ +- if (--y1 < 0) +- y1 = crtc->bounds.y2; +- y2--; +- +- b = kgem_get_batch(&sna->kgem); +- sna->kgem.nbatch += 4; +- +- if (pipe == 0) { +- if (full_height) +- event = MI_WAIT_FOR_PIPEA_SVBLANK; +- else +- event = MI_WAIT_FOR_PIPEA_SCAN_LINE_WINDOW; +- } else { +- if (full_height) +- event = MI_WAIT_FOR_PIPEB_SVBLANK; +- else +- event = MI_WAIT_FOR_PIPEB_SCAN_LINE_WINDOW; +- } +- b[0] = MI_LOAD_REGISTER_IMM | 1; +- b[1] = display_base + 0x70004 + 0x1000 * pipe; +- b[2] = (1 << 31) | (y1 << 16) | y2; +- b[3] = MI_WAIT_FOR_EVENT | event; +- +- sna->kgem.batch_flags |= I915_EXEC_SECURE; +- return true; +-} +- + static bool sna_emit_wait_for_scanline_ivb(struct sna *sna, + xf86CrtcPtr crtc, + int pipe, int y1, int y2, +@@ -4472,10 +4426,12 @@ sna_wait_for_scanline(struct sna *sna, + + if (sna->kgem.gen >= 0110) + ret = false; ++ else if (sna->kgem.gen == 0101) ++ ret = false; /* chv, vsync method unknown */ + else if (sna->kgem.gen >= 075) + ret = sna_emit_wait_for_scanline_hsw(sna, crtc, pipe, y1, y2, full_height); + else if (sna->kgem.gen == 071) +- ret = sna_emit_wait_for_scanline_vlv(sna, crtc, pipe, y1, y2, full_height); ++ ret = false; /* vlv, vsync method unknown */ + else if (sna->kgem.gen >= 070) + ret = sna_emit_wait_for_scanline_ivb(sna, crtc, pipe, y1, y2, full_height); + else if (sna->kgem.gen >= 060)