Skip to content
  • Alexandros Frantzis's avatar
    libweston: Introduce zwp_linux_explicit_synchronization_v1 · 27d7c395
    Alexandros Frantzis authored and Pekka Paalanen's avatar Pekka Paalanen committed
    Introduce support for the zwp_linux_explicit_synchronization_unstable_v1
    protocol with an implementation of the zwp_linux_explicit_synchronization_v1
    interface.
    
    Explicit synchronization provides a more versatile notification
    mechanism for buffer readiness and availability, and can be used to
    improve efficiency by integrating with related functionality in display
    and graphics APIs.
    
    In addition, the per-commit nature of the release events provided by
    this protocol potentially offers a solution to a deficiency of the
    wl_buffer.release event (see
    wayland/wayland#46
    
    ).
    
    Support for this protocol depends on the capabilities of the backend, so
    we don't register it by default but provide a function which each
    backend will need to call. In this commit only the headless backend when
    using the noop renderer supports this to enable testing.
    
    Note that the zwp_surface_synchronization_v1 interface, which contains
    the core functionality of the protocol, is not implemented in this
    commit. Support for it will be added in future commits.
    
    Changes in v7:
      - Added some information in the commit message about the benefits of
        the explicit sync protocol.
    
    Changes in v6:
      - Fall back to advertising minor version 1 of the explicit sync protocol,
        although we support minor version 2 features, until the new
        wayland-protocols version is released.
    
    Changes in v5:
      - Meson support.
      - Advertise minor version 2 of the explicit sync protocol.
    
    Changes in v4:
      - Enable explicit sync support in the headless backend for all
        renderers.
    
    Changes in v3:
      - Use wl_resource_get_version() instead of hardcoding version 1.
      - Use updated protocol interface names.
      - Use correct format specifier for resource id.
      - Change test name to 'linux-explicit-synchronization.weston'
        (s/_/-/g).
    
    Changes in v2:
      - Move implementation to separate file so protocol can be registered
        on demand by backends.
      - Register protocol in headless+noop backend for testing purposes.
    
    Signed-off-by: default avatarAlexandros Frantzis <alexandros.frantzis@collabora.com>
    27d7c395