debian/changelog          |    6 
 debian/control            |    2 
 debian/patches/xmir.patch |  379 ++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 384 insertions(+), 3 deletions(-)

New commits:
commit 74831788f4aba5e82118760a320064127a1e9ec9
Author: Christopher James Halse Rogers <r...@ubuntu.com>
Date:   Thu Aug 29 20:08:51 2013 +1000

    Update for new XMir API

diff --git a/debian/changelog b/debian/changelog
index 01f9bc2..408b179 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,8 +1,10 @@
-xserver-xorg-video-intel (2:2.21.14-4ubuntu3) UNRELEASED; urgency=low
+xserver-xorg-video-intel (2:2.21.14-4ubuntu3) saucy; urgency=low
 
   * Fix valgrind-enabling check
+  * Update for new XMir API
+  * Bump build-depend on xserver-xorg-dev to ensure new XMir API
 
- -- Christopher James Halse Rogers <r...@ubuntu.com>  Mon, 26 Aug 2013 
18:54:40 +1000
+ -- Christopher James Halse Rogers <r...@ubuntu.com>  Thu, 29 Aug 2013 
20:08:05 +1000
 
 xserver-xorg-video-intel (2:2.21.14-4ubuntu2) saucy; urgency=low
 
diff --git a/debian/control b/debian/control
index ced4c6c..7ed1f5e 100644
--- a/debian/control
+++ b/debian/control
@@ -9,7 +9,7 @@ Build-Depends:
  dh-autoreconf,
  pkg-config,
 # Depend on latest server to ensure XMir support
- xserver-xorg-dev (>= 2:1.14.2-0ubuntu4~),
+ xserver-xorg-dev (>= 2:1.14.2.901-2ubuntu4~),
  x11proto-core-dev,
  x11proto-fonts-dev,
  x11proto-xinerama-dev,
diff --git a/debian/patches/xmir.patch b/debian/patches/xmir.patch
index 454882e..05155a6 100644
--- a/debian/patches/xmir.patch
+++ b/debian/patches/xmir.patch
@@ -767,3 +767,382 @@ index 0000000..a7c882d
 +}
 +
 +#endif
+commit 5c4c1309ed043cce920c97633c5d5228d60308b8
+Author: Christopher James Halse Rogers <r...@ubuntu.com>
+Date:   Thu Aug 22 11:17:04 2013 +1000
+
+    Update to new XMir API
+
+diff --git a/src/sna/sna_xmir.c b/src/sna/sna_xmir.c
+index a7c882d..4ecdad9 100644
+--- a/src/sna/sna_xmir.c
++++ b/src/sna/sna_xmir.c
+@@ -50,9 +50,9 @@
+ #define FORCE_FULL_REDRAW 0
+ 
+ static void
+-sna_xmir_copy_to_mir(WindowPtr win, RegionPtr region)
++sna_xmir_copy_to_mir(xmir_window *xmir_win, RegionPtr region)
+ {
+-      PixmapPtr src = get_window_pixmap(win);
++      PixmapPtr src = get_window_pixmap(xmir_window_to_windowptr(xmir_win));
+       struct sna *sna = to_sna_from_pixmap(src);
+       struct sna_pixmap *priv;
+       struct kgem_bo *bo;
+@@ -70,7 +70,7 @@ sna_xmir_copy_to_mir(WindowPtr win, RegionPtr region)
+       /* XXX size and pitch are bogus, but only used for sanity checks */
+ 
+       bo = kgem_create_for_prime(&sna->kgem,
+-                                 xmir_prime_fd_for_window(win),
++                                 xmir_window_get_fd(xmir_win),
+                                  priv->gpu_bo->pitch * src->drawable.height);
+       if (bo == NULL)
+               return;
+@@ -94,32 +94,15 @@ sna_xmir_copy_to_mir(WindowPtr win, RegionPtr region)
+                                  src, bo, 0, 0,
+                                  boxes, nbox, COPY_LAST)) {
+               kgem_submit(&sna->kgem);
+-              xmir_submit_rendering_for_window(win, region);
++              xmir_submit_rendering_for_window(xmir_win, region);
+       }
+ 
+       kgem_bo_destroy(&sna->kgem, bo);
+ }
+ 
+-static void
+-sna_xmir_buffer_available(WindowPtr win)
+-{
+-      RegionPtr region = xmir_window_get_dirty(win);
+-      if (RegionNotEmpty(region))
+-              sna_xmir_copy_to_mir(win, region);
+-}
+-
+-static void
+-sna_xmir_submit_dirty_window(WindowPtr win)
+-{
+-      if (!xmir_window_has_free_buffer(win))
+-              return;
+-
+-      sna_xmir_copy_to_mir(win, xmir_window_get_dirty(win));
+-}
+-
+ static const xmir_driver sna_xmir_driver = {
+       XMIR_DRIVER_VERSION,
+-      sna_xmir_buffer_available
++      sna_xmir_copy_to_mir
+ };
+ 
+ bool sna_xmir_create(struct sna *sna)
+@@ -157,7 +140,7 @@ void sna_xmir_post_damage(struct sna *sna)
+               return;
+ 
+       xmir_screen_for_each_damaged_window(sna->xmir,
+-                                          sna_xmir_submit_dirty_window);
++                                          sna_xmir_copy_to_mir);
+ }
+ 
+ #endif
+commit 1edd7a1d8e54daf628df1317e65c96c903c72f85
+Author: Christopher James Halse Rogers <r...@ubuntu.com>
+Date:   Fri Aug 23 10:20:49 2013 +1000
+
+    Don't call sna_mode_update when SNA_IS_HOSTED
+
+diff --git a/src/sna/sna_driver.c b/src/sna/sna_driver.c
+index 6fe49c9..7870a47 100644
+--- a/src/sna/sna_driver.c
++++ b/src/sna/sna_driver.c
+@@ -207,7 +207,8 @@ static Bool sna_become_master(struct sna *sna)
+               sna_set_fallback_mode(scrn);
+       }
+ 
+-      sna_mode_update(sna);
++      if (!(sna->flags & SNA_IS_HOSTED))
++              sna_mode_update(sna);
+       return TRUE;
+ }
+ 
+commit 0c51dfcf7f2ef610fd3dc80bce71fc8c0a6f47cc
+Author: Christopher James Halse Rogers <r...@ubuntu.com>
+Date:   Fri Aug 23 14:36:48 2013 +1000
+
+    Fix rendering when copying from xmir_win that only partially covers the 
drawable
+
+diff --git a/src/sna/sna_xmir.c b/src/sna/sna_xmir.c
+index 4ecdad9..d232c24 100644
+--- a/src/sna/sna_xmir.c
++++ b/src/sna/sna_xmir.c
+@@ -57,7 +57,7 @@ sna_xmir_copy_to_mir(xmir_window *xmir_win, RegionPtr region)
+       struct sna_pixmap *priv;
+       struct kgem_bo *bo;
+       BoxRec box, *boxes;
+-      int16_t sx, sy;
++      int16_t sx, sy, dx, dy;
+       int nbox;
+ 
+       if (wedged(sna)) /* XXX need pitch/size for CPU copy fallback */
+@@ -89,9 +89,11 @@ sna_xmir_copy_to_mir(xmir_window *xmir_win, RegionPtr 
region)
+       }
+ 
+       get_window_deltas(src, &sx, &sy);
++      xmir_window_get_drawable_offset(xmir_win, &dx, &dy);
++
+       if (sna->render.copy_boxes(sna, GXcopy,
+                                  src, priv->gpu_bo, sx, sy,
+-                                 src, bo, 0, 0,
++                                 src, bo, dx, dy,
+                                  boxes, nbox, COPY_LAST)) {
+               kgem_submit(&sna->kgem);
+               xmir_submit_rendering_for_window(xmir_win, region);
+commit 3bab5911709da671585d6c5569173c92a6a1dc7c
+Author: Christopher James Halse Rogers <r...@ubuntu.com>
+Date:   Sat Aug 24 14:25:37 2013 +1000
+
+    Fixup rendering of partial xmir_windows harder
+
+diff --git a/src/sna/kgem.c b/src/sna/kgem.c
+index 98e801a..14bfdc8 100644
+--- a/src/sna/kgem.c
++++ b/src/sna/kgem.c
+@@ -1439,14 +1439,14 @@ void kgem_get_tile_size(struct kgem *kgem, int tiling,
+       }
+ }
+ 
+-static uint32_t kgem_surface_size(struct kgem *kgem,
+-                                bool relaxed_fencing,
+-                                unsigned flags,
+-                                uint32_t width,
+-                                uint32_t height,
+-                                uint32_t bpp,
+-                                uint32_t tiling,
+-                                uint32_t *pitch)
++uint32_t kgem_surface_size(struct kgem *kgem,
++                         bool relaxed_fencing,
++                         unsigned flags,
++                         uint32_t width,
++                         uint32_t height,
++                         uint32_t bpp,
++                         uint32_t tiling,
++                         uint32_t *pitch)
+ {
+       uint32_t tile_width, tile_height;
+       uint32_t size;
+diff --git a/src/sna/kgem.h b/src/sna/kgem.h
+index e08f842..74d3cff 100644
+--- a/src/sna/kgem.h
++++ b/src/sna/kgem.h
+@@ -243,6 +243,15 @@ struct kgem_bo *kgem_create_map(struct kgem *kgem,
+                               void *ptr, uint32_t size,
+                               bool read_only);
+ 
++uint32_t kgem_surface_size(struct kgem *kgem,
++                         bool relaxed_fencing,
++                         unsigned flags,
++                         uint32_t width,
++                         uint32_t height,
++                         uint32_t bpp,
++                         uint32_t tiling,
++                         uint32_t *pitch);
++
+ struct kgem_bo *kgem_create_for_name(struct kgem *kgem, uint32_t name);
+ struct kgem_bo *kgem_create_for_prime(struct kgem *kgem, int name, uint32_t 
size);
+ int kgem_bo_export_to_prime(struct kgem *kgem, struct kgem_bo *bo);
+diff --git a/src/sna/sna_xmir.c b/src/sna/sna_xmir.c
+index d232c24..9bdd619 100644
+--- a/src/sna/sna_xmir.c
++++ b/src/sna/sna_xmir.c
+@@ -57,7 +57,9 @@ sna_xmir_copy_to_mir(xmir_window *xmir_win, RegionPtr region)
+       struct sna_pixmap *priv;
+       struct kgem_bo *bo;
+       BoxRec box, *boxes;
+-      int16_t sx, sy, dx, dy;
++      BoxPtr dst_box;
++      int16_t sx, sy;
++      uint32_t pitch;
+       int nbox;
+ 
+       if (wedged(sna)) /* XXX need pitch/size for CPU copy fallback */
+@@ -67,15 +69,24 @@ sna_xmir_copy_to_mir(xmir_window *xmir_win, RegionPtr 
region)
+       if (priv == NULL)
+               return;
+ 
++      dst_box = xmir_window_get_drawable_region(xmir_win);
+       /* XXX size and pitch are bogus, but only used for sanity checks */
+ 
+       bo = kgem_create_for_prime(&sna->kgem,
+                                  xmir_window_get_fd(xmir_win),
+-                                 priv->gpu_bo->pitch * src->drawable.height);
++                                 priv->gpu_bo->pitch * (dst_box->y2 - 
dst_box->y1));
+       if (bo == NULL)
+               return;
+ 
+-      bo->pitch = priv->gpu_bo->pitch;
++      kgem_surface_size(&sna->kgem, FALSE,
++                        KGEM_CAN_CREATE_GPU | KGEM_CAN_CREATE_GTT,
++                        dst_box->x2 - dst_box->x1,
++                        dst_box->y2 - dst_box->y1,
++                        src->drawable.bitsPerPixel,
++                        bo->tiling,
++                        &pitch);
++
++      bo->pitch = pitch;
+ 
+       if (FORCE_FULL_REDRAW || region == NULL) {
+               box.x1 = box.y1 = 0;
+@@ -89,11 +100,10 @@ sna_xmir_copy_to_mir(xmir_window *xmir_win, RegionPtr 
region)
+       }
+ 
+       get_window_deltas(src, &sx, &sy);
+-      xmir_window_get_drawable_offset(xmir_win, &dx, &dy);
+ 
+       if (sna->render.copy_boxes(sna, GXcopy,
+                                  src, priv->gpu_bo, sx, sy,
+-                                 src, bo, dx, dy,
++                                 src, bo, -dst_box->x1, -dst_box->y1,
+                                  boxes, nbox, COPY_LAST)) {
+               kgem_submit(&sna->kgem);
+               xmir_submit_rendering_for_window(xmir_win, region);
+commit 09413237f2821e7fd836a0552f3f240bdfd3cccc
+Author: Christopher James Halse Rogers <r...@ubuntu.com>
+Date:   Sun Aug 25 11:56:38 2013 +1000
+
+    Don't try to copy the fbcon if running hosted
+
+diff --git a/src/sna/sna_driver.c b/src/sna/sna_driver.c
+index 7870a47..026d5c4 100644
+--- a/src/sna/sna_driver.c
++++ b/src/sna/sna_driver.c
+@@ -260,7 +260,7 @@ static Bool sna_create_screen_resources(ScreenPtr screen)
+       screen->SetScreenPixmap(sna->front);
+ 
+       /* Only preserve the fbcon, not any subsequent server regens */
+-      if (serverGeneration == 1)
++      if (serverGeneration == 1 && !(sna->flags & SNA_IS_HOSTED))
+               sna_copy_fbcon(sna);
+ 
+       if (!sna_become_master(sna)) {
+commit 7bd1d3058c468f94e77aea99e538daf60de5190b
+Author: Christopher James Halse Rogers <r...@ubuntu.com>
+Date:   Sat Aug 24 19:43:32 2013 +1000
+
+    Don't try to find the covering CRTC if SNA_IS_HOSTED
+
+diff --git a/src/sna/sna_display.c b/src/sna/sna_display.c
+index e2bebad..f0807ef 100644
+--- a/src/sna/sna_display.c
++++ b/src/sna/sna_display.c
+@@ -3252,6 +3252,10 @@ sna_covering_crtc(ScrnInfoPtr scrn,
+       xf86CrtcPtr best_crtc;
+       int best_coverage, c;
+ 
++      /* If we're hosted we don't own the CRTC */
++      if (to_sna(scrn)->flags & SNA_IS_HOSTED)
++              return NULL;
++
+       /* If we do not own the VT, we do not own the CRTC either */
+       if (!scrn->vtSema)
+               return NULL;
+commit c197dbe099d7fb8697091e65ac7e21df8622ba6b
+Author: Christopher James Halse Rogers <r...@ubuntu.com>
+Date:   Sun Aug 25 12:19:27 2013 +1000
+
+    Unconditionally set sna->front in sna_set_screen_pixmap
+
+diff --git a/src/sna/sna_accel.c b/src/sna/sna_accel.c
+index 04b063c..051207c 100644
+--- a/src/sna/sna_accel.c
++++ b/src/sna/sna_accel.c
+@@ -15252,7 +15252,7 @@ sna_set_screen_pixmap(PixmapPtr pixmap)
+       PixmapPtr old_front = pixmap->drawable.pScreen->devPrivate;
+       WindowPtr root;
+ 
+-      assert(pixmap == to_sna_from_pixmap(pixmap)->front);
++      to_sna_from_pixmap(pixmap)->front = pixmap;
+ 
+       if (old_front)
+               migrate_dirty_tracking(old_front, pixmap);
+commit 599096c45cd9ce3b72a1941ecd24bb0f8efe2c22
+Author: Christopher James Halse Rogers <r...@ubuntu.com>
+Date:   Sun Aug 25 15:17:28 2013 +1000
+
+    Call xf86_cursors_init with 0,0 max HW cursor size even when nested
+
+diff --git a/src/sna/sna_driver.c b/src/sna/sna_driver.c
+index 026d5c4..58af3d2 100644
+--- a/src/sna/sna_driver.c
++++ b/src/sna/sna_driver.c
+@@ -932,6 +932,12 @@ sna_screen_init(SCREEN_INIT_ARGS_DECL)
+                              HARDWARE_CURSOR_UPDATE_UNHIDDEN |
+                              HARDWARE_CURSOR_ARGB))
+               xf86DrvMsg(scrn->scrnIndex, X_INFO, "HW Cursor enabled\n");
++      else {
++              if (xf86_cursors_init(screen, 0, 0, 0))
++                      xf86DrvMsg(scrn->scrnIndex, X_INFO, "xf86Cursors 
enabled, HW Cursor disabled\n");
++              else
++                      xf86DrvMsg(scrn->scrnIndex, X_WARNING, "xf86Cursor 
initialisation failed\n");
++      }
+ 
+       /* Must force it before EnterVT, so we are in control of VT and
+        * later memory should be bound when allocating, e.g rotate_mem */
+commit 9922021dcc7a665bb8df833ee76814a9d047edae
+Author: Christopher James Halse Rogers <r...@ubuntu.com>
+Date:   Sun Aug 25 20:38:04 2013 +1000
+
+    Fixups
+
+diff --git a/src/sna/sna_driver.c b/src/sna/sna_driver.c
+index 58af3d2..f90c5ef 100644
+--- a/src/sna/sna_driver.c
++++ b/src/sna/sna_driver.c
+@@ -912,8 +912,6 @@ sna_screen_init(SCREEN_INIT_ARGS_DECL)
+               return FALSE;
+       }
+ 
+-      sna_xmir_init(sna, screen);
+-
+       xf86SetBlackWhitePixels(screen);
+ 
+       xf86SetBackingStore(screen);
+@@ -921,6 +919,8 @@ sna_screen_init(SCREEN_INIT_ARGS_DECL)
+       if (!miDCInitialize(screen, xf86GetPointerScreenFuncs()))
+               return FALSE;
+ 
++      sna_xmir_init(sna, screen);
++
+       if ((sna->flags & SNA_IS_HOSTED) == 0 &&
+           xf86_cursors_init(screen, SNA_CURSOR_X, SNA_CURSOR_Y,
+                              HARDWARE_CURSOR_TRUECOLOR_AT_8BPP |
+@@ -932,12 +932,6 @@ sna_screen_init(SCREEN_INIT_ARGS_DECL)
+                              HARDWARE_CURSOR_UPDATE_UNHIDDEN |
+                              HARDWARE_CURSOR_ARGB))
+               xf86DrvMsg(scrn->scrnIndex, X_INFO, "HW Cursor enabled\n");
+-      else {
+-              if (xf86_cursors_init(screen, 0, 0, 0))
+-                      xf86DrvMsg(scrn->scrnIndex, X_INFO, "xf86Cursors 
enabled, HW Cursor disabled\n");
+-              else
+-                      xf86DrvMsg(scrn->scrnIndex, X_WARNING, "xf86Cursor 
initialisation failed\n");
+-      }
+ 
+       /* Must force it before EnterVT, so we are in control of VT and
+        * later memory should be bound when allocating, e.g rotate_mem */
+diff --git a/src/sna/sna_xmir.c b/src/sna/sna_xmir.c
+index 9bdd619..c532b95 100644
+--- a/src/sna/sna_xmir.c
++++ b/src/sna/sna_xmir.c
+@@ -78,15 +78,7 @@ sna_xmir_copy_to_mir(xmir_window *xmir_win, RegionPtr 
region)
+       if (bo == NULL)
+               return;
+ 
+-      kgem_surface_size(&sna->kgem, FALSE,
+-                        KGEM_CAN_CREATE_GPU | KGEM_CAN_CREATE_GTT,
+-                        dst_box->x2 - dst_box->x1,
+-                        dst_box->y2 - dst_box->y1,
+-                        src->drawable.bitsPerPixel,
+-                        bo->tiling,
+-                        &pitch);
+-
+-      bo->pitch = pitch;
++      bo->pitch = xmir_window_get_stride(xmir_win);
+ 
+       if (FORCE_FULL_REDRAW || region == NULL) {
+               box.x1 = box.y1 = 0;


-- 
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/e1vf0io-0005q5...@vasks.debian.org

Reply via email to