debian/changelog                                     |    2 
 debian/patches/fix-sna-external-slave-rotation.patch |   69 +++++++++++++++++++
 debian/patches/series                                |    1 
 3 files changed, 72 insertions(+)

New commits:
commit 39d471fc14d92696f6eb9cfe414010fa36cb90ae
Author: Maarten Lankhorst <maarten.lankho...@ubuntu.com>
Date:   Tue Jan 13 14:32:52 2015 +0100

    Fix rotating external display with optimus results in corruption.
    
    fix-sna-external-slave-rotation.patch (LP: #1410238)

diff --git a/debian/changelog b/debian/changelog
index 62cab64..a9b61ff 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -8,6 +8,8 @@ xserver-xorg-video-intel (2:2.99.910-0ubuntu1.4) UNRELEASED; 
urgency=medium
 
   [ Maarten Lankhorst ]
   * Fix regression with external displays on sna. (LP: #1405325)
+  * Fix rotating external display with optimus results in corruption.
+    - fix-sna-external-slave-rotation.patch (LP: #1410238)
 
  -- Timo Aaltonen <tjaal...@debian.org>  Fri, 12 Dec 2014 11:06:26 +0200
 
diff --git a/debian/patches/fix-sna-external-slave-rotation.patch 
b/debian/patches/fix-sna-external-slave-rotation.patch
new file mode 100644
index 0000000..80b79f3
--- /dev/null
+++ b/debian/patches/fix-sna-external-slave-rotation.patch
@@ -0,0 +1,69 @@
+commit 1cffbd9a8e96642bdbabf4e40829a5f1473b5bf9
+Author: Chris Wilson <ch...@chris-wilson.co.uk>
+Date:   Tue Jan 13 10:50:36 2015 +0000
+
+    sna: Combine slave CRTC offsets with rotation
+    
+    When applying both a slave offset and an output rotation, order is
+    important. To get the order right, we need to combine the two into a
+    single transformation.
+    
+    Reported-by: Maarten Lankhorst <maarten.lankho...@canonical.com>
+    Signed-off-by: Chris Wilson <ch...@chris-wilson.co.uk>
+
+diff --git a/src/sna/sna_display.c b/src/sna/sna_display.c
+index 569c585..0657c47 100644
+--- a/src/sna/sna_display.c
++++ b/src/sna/sna_display.c
+@@ -6696,6 +6696,7 @@ sna_crtc_redisplay__fallback(xf86CrtcPtr crtc, RegionPtr 
region, struct kgem_bo
+       ScreenPtr screen = sna->scrn->pScreen;
+       DrawablePtr draw = crtc_source(crtc, &sx, &sy);
+       PictFormatPtr format;
++      PictTransform T;
+       PicturePtr src, dst;
+       PixmapPtr pixmap;
+       int depth, error;
+@@ -6735,9 +6736,14 @@ sna_crtc_redisplay__fallback(xf86CrtcPtr crtc, 
RegionPtr region, struct kgem_bo
+       if (!src)
+               goto free_pixmap;
+ 
+-      error = SetPictureTransform(src, &crtc->crtc_to_framebuffer);
+-      if (error)
+-              goto free_src;
++      pixman_transform_init_translate(&T, sx << 16, sy << 16);
++      pixman_transform_multiply(&T, &T, &crtc->crtc_to_framebuffer);
++      if (!sna_transform_is_integer_translation(&T, &sx, &sy)) {
++              error = SetPictureTransform(src, &T);
++              if (error)
++                      goto free_src;
++              sx = sy = 0;
++      }
+ 
+       if (crtc->filter && crtc->transform_in_use)
+               SetPicturePictFilter(src, crtc->filter,
+@@ -6789,6 +6795,7 @@ sna_crtc_redisplay__composite(xf86CrtcPtr crtc, 
RegionPtr region, struct kgem_bo
+       DrawablePtr draw = crtc_source(crtc, &sx, &sy);
+       struct sna_composite_op tmp;
+       PictFormatPtr format;
++      PictTransform T;
+       PicturePtr src, dst;
+       PixmapPtr pixmap;
+       const BoxRec *b;
+@@ -6829,9 +6836,14 @@ sna_crtc_redisplay__composite(xf86CrtcPtr crtc, 
RegionPtr region, struct kgem_bo
+       if (!src)
+               goto free_pixmap;
+ 
+-      error = SetPictureTransform(src, &crtc->crtc_to_framebuffer);
+-      if (error)
+-              goto free_src;
++      pixman_transform_init_translate(&T, sx << 16, sy << 16);
++      pixman_transform_multiply(&T, &T, &crtc->crtc_to_framebuffer);
++      if (!sna_transform_is_integer_translation(&T, &sx, &sy)) {
++              error = SetPictureTransform(src, &T);
++              if (error)
++                      goto free_src;
++              sx = sy = 0;
++      }
+ 
+       if (crtc->filter && crtc->transform_in_use)
+               SetPicturePictFilter(src, crtc->filter,
diff --git a/debian/patches/series b/debian/patches/series
index e232f4e..6552b77 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -25,3 +25,4 @@ 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
+fix-sna-external-slave-rotation.patch


-- 
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/e1yb2qi-00057o...@moszumanska.debian.org

Reply via email to