Skip to content
Snippets Groups Projects
  1. Oct 08, 2014
  2. Oct 01, 2014
  3. Sep 30, 2014
    • Pekka Paalanen's avatar
      clients: add presentation-shm demo · ef2b592a
      Pekka Paalanen authored
      
      This started as a copy of simple-shm.c before it was converted to
      xdg_shell.
      
      This demo excercises the presentation feedback interface in five
      different modes:
      
      - A continuous repaint loop triggered by frame callbacks, and using
        immediate commits, just gathering presentation feedback and computing
        some time intervals for statistics.
      
      - The same as above, except with 1s sleep before actually repainting as
        a response to frame callback. This tests how well the compositor can
        do a repaint from idle state (not continuously repainting), assuming
        nothing else is causing repaints.
      
      - A continuous repaint loop triggered by 'presented' events rather than
        by frame callbacks. If Weston uses an appropriate scheduling
        algorithm, this mode achieves the smallest possible frame latency
        (below one output refresh period).
      
      In all modes, all frames are pre-rendered at startup, so no rendering
      happens during the animation.
      
      [Louis-Francis Ratté-Boulianne: split queuing feature]
      
      Signed-off-by: Pekka Paalanen's avatarPekka Paalanen <pekka.paalanen@collabora.co.uk>
      Signed-off-by: default avatarLouis-Francis Ratté-Boulianne <lfrb@collabora.com>
      ef2b592a
    • Pekka Paalanen's avatar
      de7f5c8f
    • Pekka Paalanen's avatar
      compositor-drm: deliver frame seq for feedback · 641307ca
      Pekka Paalanen authored
      
      Add 'msc' field to weston_output to maintain the refresh counter, and
      use it in presentation_feedback.presented.
      
      Make compositor-drm update the per-output refresh counter with the
      values reported by DRM. If the DRM reported value jumps backwards,
      assume it wrapped around once.
      
      Other backends do not update weston_output::msc, and there
      presentation_feedback will always deliver refresh counter as zero.
      
      Signed-off-by: Pekka Paalanen's avatarPekka Paalanen <pekka.paalanen@collabora.co.uk>
      v3 Reviewed-by: default avatarMario Kleiner <mario.kleiner.de@gmail.com>
      641307ca
    • Pekka Paalanen's avatar
      compositor: implement presentation_feedback · 133e4396
      Pekka Paalanen authored
      
      Implement the presentation.feedback request, and the
      presentation_feedback protocol interface. Feedback information is
      delivered to clients as the backend reports it, except the refresh
      counter (MSC) which is always reported as zero.
      
      Changes in v4:
      
      * add 'flags' argument to 'presented' event without implementation
      
      Changes in v5:
      
      * remove the 'destroy' method implementation for feedback objects
        [Pekka Paalanen: do not leak struct feedback.]
      
      Signed-off-by: Pekka Paalanen's avatarPekka Paalanen <pekka.paalanen@collabora.co.uk>
      v3 Reviewed-by: default avatarMario Kleiner <mario.kleiner.de@gmail.com>
      133e4396
    • Pekka Paalanen's avatar
      compositor: set and use the presentation clock everywhere · b5eedade
      Pekka Paalanen authored
      
      Add presentation clock setters that verify the given clock actually
      works. Offer an automatic choice of a software fallback clock, when a
      backend has to always use clock_gettime() to approximate the
      presentation time.
      
      The DRM backend already queried the DRM about the clock id, just let the
      DRM backend set the presentation clock from that.
      
      For all other backends which do not get a timestamp from the driver,
      call the software clock setter to choose a suitable clock.
      
      Report the chosen clock via presentation.clock_id event to clients.
      
      In finish_frame(), upgrade the argument from uint32_t milliseconds to
      struct timespec which can accurately hold the presentation clock values.
      This will be needed when weston_output_finish_frame() starts to send out
      presentation_feedback.presented events.
      
      While at it, replace gettimeofday() calls with clock_gettime() using the
      chosen presentation clock, so we manufacture presentation timestamps
      from the presentation clock when the gfx drivers cannot give us a proper
      timestamp.
      
      Rpi patch is more verbose due to not having the compositor pointer
      available in rpi_flippipe_update_complete(). Explicitly carry the clock
      id with flippipe so it is available in the thread.
      
      Changes in v4:
      
      * rpi debug build fix
      
      v4 Signed-off-by: Pekka Paalanen's avatarPekka Paalanen <pekka.paalanen@collabora.co.uk>
      v3 Reviewed-by: default avatarMario Kleiner <mario.kleiner.de@gmail.com>
      b5eedade
    • Pekka Paalanen's avatar
    • Pekka Paalanen's avatar
      compositor: add stub implementation of presentation interface · 31f7d78c
      Pekka Paalanen authored
      
      You can bind to the global interface, and it delivers a fake clock id.
      All requests on it raise an error.
      
      Changes in v4:
      
      * queuing methods were extractracted for a later series
      
      [Louis-Francis Ratté-Boulianne: split queuing feature]
      
      Signed-off-by: Pekka Paalanen's avatarPekka Paalanen <pekka.paalanen@collabora.co.uk>
      Signed-off-by: default avatarLouis-Francis Ratté-Boulianne <lfrb@collabora.com>
      Reviewed-by: default avatarMario Kleiner <mario.kleiner.de@gmail.com>
      31f7d78c
    • Pekka Paalanen's avatar
      protocol: add presentation extension v5 · 7e62d252
      Pekka Paalanen authored
      Add accurate presentation timing features to Wayland: queueing and
      feedback.
      
      This specification is based on the draft written by Frederic Plourde
      <frederic.plourde@collabora.co.uk> and redesigned by Pekka Paalanen.
      
      The RFC v2 version is from
      http://lists.freedesktop.org/archives/wayland-devel/2014-January/012988.html
      
      Changes in v3:
      
      * associate presentation time to current surface contents
      
      This implements the suggestion from
      http://lists.freedesktop.org/archives/wayland-devel/2014-February/013066.html
      
      
      
      which prevents surface content from jumping backwards in time if a
      client retroactively queues an update with a target time in the past.
      
      * use 64-bit tv_sec in presentation
      
      The time_t type used in struct timespec could be almost anything. POSIX
      probably defines it to be an integer, but not the size. Apparently it is
      usually 'long', which makes it 64-bit on x86_64.
      
      To be able to fully represent timespec values returned by clock_gettime,
      change the protocol to use 64 bits for the tv_sec part.
      
      * define an error for invalid tv_nsec
      
      This allow us to rely on the normalized timestamp form.
      
      * define some interactions with sub-surfaces
      
      Sub-surface cached state updates (synchronized mode) are designed
      especially for resizing. As queued updates are not meant to produce any
      resizing-like effects, they also do not trigger any sub-surface
      operations.
      
      * add sub-headings as xml comments
      
      * queued update cannot map
      
      Because before mapping, the surface has no main output assigned. An
      immediate commit is needed anyway, to be able to set all the surface
      state, which a queued update cannot touch.
      
      * frame callbacks are not queued
      
      It is not known when queueing frame callbacks would be useful.
      
      Changes in v4:
      
      * remove mentions of the queuing feature
      
      The specification has been split and the queuing feature will be added
      back in another version of the extension.
      
      * add flags argument to 'presented' event
      
      Describe the nature of how the update was presented to screen and the
      characteristics of the feedback information. No flags have been
      defined for now.
      
      * add a protocol error code for invalid flags
      
      Changes in v5:
      
      * remove the destroy method for the feedback object
      
      The protocol object should instead be automatically destroyed after
      a 'presented' or 'discarded' event has been triggered.
      
      * some grammatical corrections to the specification
      
      [Louis-Francis Ratté-Boulianne: split the spec in two parts]
      
      Signed-off-by: Pekka Paalanen's avatarPekka Paalanen <pekka.paalanen@collabora.co.uk>
      Signed-off-by: default avatarLouis-Francis Ratté-Boulianne <lfrb@collabora.com>
      v3 Reviewed-by: default avatarMario Kleiner <mario.kleiner.de@gmail.com>
      7e62d252
  4. Sep 22, 2014
  5. Sep 19, 2014
  6. Sep 17, 2014
  7. Sep 15, 2014
  8. Sep 12, 2014
  9. Sep 11, 2014
  10. Sep 10, 2014
  11. Sep 09, 2014
Loading