Skip to content
Snippets Groups Projects
  1. May 19, 2015
    • Pekka Paalanen's avatar
      compositor-drm: disable hardware cursors · 6858383d
      Pekka Paalanen authored
      With the recent universal plane and atomic modeset / nuclear pageflip
      development in the kernel, cursor content updates on Intel are currently causing
      an extra wait for vblank. This drops Weston's framerate to a fraction by
      2 when cursor contents update. This combined with the damage tracking
      bug in Weston which causes cursor content updates on every frame the
      cursor moves makes using hw cursors really bad.
      
      It is possible that the Intel DRM driver will get fixed and cursor
      updates there revert to their old behaviour on the contemporary KMS API.
      However, it is hardware dependant whether cursor updates can happen
      immediately.  Some other hardware, especially ARM-related, may not be
      able to do immediate updates. Therefore it is better to just not even
      try - we should rely only on the lowest common denominator behaviour
      between hardware and drivers as there is no and will not be any way to
      reliably detect it.
      
      Note, that while having different drivers do different things (immediate
      update vs. update that gets latched on the next vblank), we cannot
      rearrange the contemporary KMS API calls such that it would always work
      fine. Either some hardware would update the cursor too early, or other
      hardware would update the cursor too late and perhaps cause the
      framerate decimation.
      
      Mark hardware cursors broken by default. This avoids using them, and
      works around the immediate problem of framerate issues in Weston. This
      follows the same reasoning why hardware overlay planes have been
      disabled by default for a long time.
      
      This disablement will be removed once the current code for hardware
      planes and cursors is replaced with code using the atomic KMS API.
      
      The Intel driver change that exposed this problem is
      https://github.com/torvalds/linux/commit/38f3ce3af5742eb5a3e9b01997f5ab85109c5762
      
      
      which is first included in Linux 4.0-rc1.
      
      Signed-off-by: Pekka Paalanen's avatarPekka Paalanen <pekka.paalanen@collabora.co.uk>
      Cc: nerdopolis <bluescreen_avenger@verizon.net>
      Cc: Daniel Stone <daniel@fooishbar.org>
      Cc: Giulio Camuffo <giuliocamuffo@gmail.com>
      Reviewed-By: default avatarDavid FORT <contact@hardening-consulting.com>
      Reviewed-by: Daniel Stone's avatarDaniel Stone <daniels@collabora.com>
      6858383d
  2. May 18, 2015
  3. May 16, 2015
  4. May 15, 2015
  5. May 12, 2015
  6. May 11, 2015
  7. May 08, 2015
  8. May 07, 2015
  9. May 05, 2015
  10. May 02, 2015
  11. May 01, 2015
  12. Apr 30, 2015
    • Pekka Paalanen's avatar
      compositor: change weston_surface::destroy_signal argument · ca79076b
      Pekka Paalanen authored
      
      Pass 'this' weston_surface as the data argument to
      weston_surface::destroy_signal listeners. The old &surface->resource was
      really just an offsetted pointer to the weston_surface anyway. And,
      because 'resource' happened to be the first member in struct weston_surface,
      it was actually 'this' weston_surface.
      
      The argument type was accidentally changed in commit
      26ed73ce from wl_resource* to
      wl_resource**.
      
      Signed-off-by: Pekka Paalanen's avatarPekka Paalanen <pekka.paalanen@collabora.co.uk>
      ca79076b
    • Pekka Paalanen's avatar
      compositor: inert wl_surface objects do not exist · 08d3fb76
      Pekka Paalanen authored
      
      There is no valid case, where you would actually destroy a
      weston_surface, while leaving the wl_surface protocol object in
      existence. Therefore, inert wl_surface objects do not exist, except
      because of bugs.
      
      To catch such bugs, check that the resource is really NULL before
      actually destroying the weston_surface.
      
      We actually used to have this check, but it was removed by:
      
      	commit 9dadfb53
      	Author: Kristian Høgsberg <krh@bitplanet.net>
      	Date:   Mon Jul 8 13:49:36 2013 -0400
      
      	    compositor: Eliminate marshalling warning for leave events
      
      However, the invariant was put back in:
      
      	commit 0d379744
      	Author: Giulio Camuffo <giuliocamuffo@gmail.com>
      	Date:   Fri Nov 15 22:06:15 2013 +0100
      
      	    compositor: set weston_surface:resource to NULL when destroyed
      
      So apparently the issue fixed by 9dadfb53 was fixed another way later.
      
      Signed-off-by: Pekka Paalanen's avatarPekka Paalanen <pekka.paalanen@collabora.co.uk>
      08d3fb76
  13. Apr 28, 2015
Loading