1. 03 Apr, 2014 1 commit
    • Kristian Høgsberg's avatar
      Xwayland DDX · 6e539d88
      Kristian Høgsberg authored
      Started out as an Xorg module to be used from Xorg drivers to let
      Xorg run under a wayland server.  The idea was to be able to reuse the
      2D acceleration from the Xorg driver.  Now with glamor being credible,
      a better plan is to just make Xwayland its own DDX, similar to Xwin
      and Xquartz.  This is a much better fit, as much of the code in the
      original approach had to hack around Xorg doing Xorg things like take
      over the VT, probe input devices and read config files.  Another big win
      is that Xwayland dosn't need to be setuid root.
      
      The Xwayland support for DRI3, Glamor and render nodes was done by
      Axel Davy <axel.davy@ens.fr>, who also did a lot of work on the rebase
      to the Xwayland DDX.
      
      Contributions from:
      
        Christopher James Halse Rogers <christopher.halse.rogers@canonical.com>
        Corentin Chary <corentin.chary@gmail.com>
        Daniel Stone <daniel@fooishbar.org>
        Kristian Høgsberg <krh@bitplanet.net>
        Robert Bragg <robert@linux.intel.com>
        Scott Moreau <oreaus@gmail.com>
        Tiago Vignatti <tiago.vignatti@intel.com>
        Giovanni Campagna <gcampagn@redhat.com>
        Jonas Ådahl <jadahl@gmail.com>
        Ray Strode <rstrode@redhat.com>
        Trevor McCort <tjmccort@gmail.com>
        Rui Matos <tiagomatos@gmail.com>
        Axel Davy <axel.davy@ens.fr>
        Jasper St. Pierre <jstpierre@mecheye.net>
      Signed-off-by: Kristian H. Kristensen's avatarKristian Høgsberg <krh@bitplanet.net>
      Reviewed-by: Axel Davy's avatarAxel Davy <axel.davy@ens.fr>
      6e539d88
  2. 01 Apr, 2014 7 commits
  3. 29 Mar, 2014 1 commit
  4. 28 Mar, 2014 1 commit
    • Keith Packard's avatar
      fb: fix fast-path blt detection · a2880699
      Keith Packard authored
      The width parameter is used to disable the blit fast-path (memcpy) when
      source and destination rows overlap in memory. This check was added in [0].
      
      Unfortunately, the calculation to determine if source and destination
      lines overlapped was incorrect:
        (1) it converts width from pixels to bytes, but width is actually in
            bits, not pixels.
        (2) it adds this byte offset to dst/srcLine, which implicitly converts
            the offset from bytes to sizeof(FbBits).
      
      Fix both of these by converting addresses to byte pointers and width
      to bytes and doing comparisons on the resulting byte address.
      
      For example:
      A 32-bpp 1366 pixel-wide row will have
        width = 1366 * 32 = 43712 bits
        bpp = 32
        (bpp >> 3) = 4
        width * (bpp >> 3) = 174848 FbBits
        (FbBits *)width => 699392 bytes
      
      So, "careful" was true if the destination line was within 699392 bytes,
      instead of just within its 1366 * 4 = 5464 byte row.
      
      This bug causes us to take the slow path for large non-overlapping rows
      that are "close" in memory.  As a data point, XGetImage(1366x768) on my
      ARM chromebook was taking ~140 ms, but with this fixed, it now takes
      about 60 ms.
        XGetImage() -> exaGetImage() -> fbGetImage -> fbBlt()
      
      [0] commit e32cc0b4
      Author: Adam Jackson <ajax@redhat.com>
      Date:   Thu Apr 21 16:37:11 2011 -0400
      
          fb: Fix memcpy abuse
      
          The memcpy fast path implicitly assumes that the copy walks
          left-to-right.  That's not something memcpy guarantees, and newer glibc
          on some processors will indeed break that assumption.  Since we walk a
          line at a time, check the source and destination against the width of
          the blit to determine whether we can be sloppy enough to allow memcpy.
          (Having done this, we can remove the check for !reverse as well.)
      
      v3: Convert to byte units
      
      This first checks to make sure the blt is byte aligned, converts all
      of the data to byte units and then compares for byte address range
      overlap between source and dest.
      Signed-off-by: Keith Packard's avatarKeith Packard <keithp@keithp.com>
      Reviewed-by: default avatarDaniel Kurtz <djkurtz@chromium.org>
      a2880699
  5. 27 Mar, 2014 7 commits
  6. 26 Mar, 2014 19 commits
  7. 25 Mar, 2014 2 commits
  8. 24 Mar, 2014 2 commits