xserver-xorg-video-intel: Changes to 'ubuntu-utopic'
debian/changelog | 4 +
debian/patches/fix-sna-external-slave-rotation.patch | 69 +++++++++++++++++++
debian/patches/series | 1
3 files changed, 74 insertions(+)
New commits:
commit c827f7f67632de3958fd22a517197b80acc5dd3f
Author: Maarten Lankhorst <maarten.lankhorst@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)
Conflicts:
debian/patches/series
diff --git a/debian/changelog b/debian/changelog
index f82989f..d16c845 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,11 +1,15 @@
xserver-xorg-video-intel (2:2.99.914-1~exp1ubuntu4.2) UNRELEASED; urgency=medium
+ [ Timo Aaltonen ]
* Added patches:
- disable-dri3.diff: Disable DRI3. (LP: #1401784)
- sna-fix-gen8-blt.diff,
sna-add-more-checks-and-asserts-for-blt.diff,
sna-tweak-alignment-constraints-on-gen8.diff:
Fix GEN8 BLT with 4bit address. (LP: #1401788)
+ [ Maarten Lankhorst ]
+ * Fix rotating external display with optimus results in corruption.
+ - fix-sna-external-slave-rotation.patch (LP: #1410238)
-- Timo Aaltonen <tjaalton@debian.org> Fri, 12 Dec 2014 10:53:54 +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 <chris@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.lankhorst@canonical.com>
+ Signed-off-by: Chris Wilson <chris@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 02ff016..30cfcba 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -10,3 +10,4 @@ disable-dri3.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
Reply to: