debian/changelog                                         |    7 +
 debian/patches/series                                    |    1 
 debian/patches/sna-make-sure-the-source-is-coherent.diff |   61 +++++++++++++++
 3 files changed, 69 insertions(+)

New commits:
commit dafde3c2fa205a90ab0a1509dcc835a54f645b45
Author: Timo Aaltonen <tjaal...@ubuntu.com>
Date:   Tue Jun 11 20:26:15 2013 +0300

    sna-make-sure-the-source-is-coherent.diff: Fix corruptions on firefox (LP: 
#1189850)

diff --git a/debian/changelog b/debian/changelog
index 47626dc..0397dcd 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,10 @@
+xserver-xorg-video-intel (2:2.21.9-0ubuntu2) saucy; urgency=low
+
+  * sna-make-sure-the-source-is-coherent.diff: Fix corruptions on firefox
+    (LP: #1189850)
+
+ -- Timo Aaltonen <tjaal...@ubuntu.com>  Tue, 11 Jun 2013 20:10:33 +0300
+
 xserver-xorg-video-intel (2:2.21.9-0ubuntu1) saucy; urgency=low
 
   * Merge from unreleased debian git, remaining changes:
diff --git a/debian/patches/series b/debian/patches/series
index 23ed8a4..1bb2a98 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1 +1,2 @@
 0002-Update-manpage-for-new-accelmethod-option.patch
+sna-make-sure-the-source-is-coherent.diff
diff --git a/debian/patches/sna-make-sure-the-source-is-coherent.diff 
b/debian/patches/sna-make-sure-the-source-is-coherent.diff
new file mode 100644
index 0000000..eebbab2
--- /dev/null
+++ b/debian/patches/sna-make-sure-the-source-is-coherent.diff
@@ -0,0 +1,61 @@
+commit 7d91051c50210560dbd93a9e36f30d9f74ce9133
+Author: Chris Wilson <ch...@chris-wilson.co.uk>
+Date:   Tue Jun 11 14:23:57 2013 +0100
+
+    sna: Make sure the source is coherent on the CPU before uploading
+    
+    Makes the presumption that for the upload path the region is stored on
+    the CPU explicit.
+    
+    References: https://bugs.freedesktop.org/show_bug.cgi?id=61628
+    Signed-off-by: Chris Wilson <ch...@chris-wilson.co.uk>
+
+diff --git a/src/sna/sna_accel.c b/src/sna/sna_accel.c
+index 69a151c..1663fe3 100644
+--- a/src/sna/sna_accel.c
++++ b/src/sna/sna_accel.c
+@@ -4861,6 +4861,22 @@ sna_copy_boxes(DrawablePtr src, DrawablePtr dst, GCPtr 
gc,
+                       }
+               }
+ 
++              if (src_priv) {
++                      bool ret;
++
++                      RegionTranslate(region, src_dx, src_dy);
++                      ret = 
sna_drawable_move_region_to_cpu(&src_pixmap->drawable,
++                                                            region, 
MOVE_READ);
++                      RegionTranslate(region, -src_dx, -src_dy);
++                      if (!ret)
++                              goto fallback;
++
++                      assert(!src_priv->mapped);
++                      if (src_pixmap->devPrivate.ptr == NULL)
++                              /* uninitialised!*/
++                              return;
++              }
++
+               if (alu != GXcopy) {
+                       PixmapPtr tmp;
+                       struct kgem_bo *src_bo;
+@@ -4936,21 +4952,6 @@ sna_copy_boxes(DrawablePtr src, DrawablePtr dst, GCPtr 
gc,
+                       DBG(("%s: dst is on the GPU, src is on the CPU, 
uploading into dst\n",
+                            __FUNCTION__));
+ 
+-                      if (src_priv) {
+-                              /* Fixup the shadow pointer as necessary */
+-                              if (src_priv->mapped) {
+-                                      assert(!src_priv->shm);
+-                                      src_pixmap->devPrivate.ptr = NULL;
+-                                      src_priv->mapped = false;
+-                              }
+-                              if (src_pixmap->devPrivate.ptr == NULL) {
+-                                      if (!src_priv->ptr) /* uninitialised!*/
+-                                              return;
+-                                      src_pixmap->devPrivate.ptr = 
PTR(src_priv->ptr);
+-                                      src_pixmap->devKind = src_priv->stride;
+-                              }
+-                      }
+-
+                       if (!dst_priv->pinned && replaces) {
+                               stride = src_pixmap->devKind;
+                               bits = src_pixmap->devPrivate.ptr;


-- 
To UNSUBSCRIBE, email to debian-x-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/e1umtoz-0003v8...@vasks.debian.org

Reply via email to