// Copyright 2017 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

library fuchsia.images;

// Information returned by methods such as |ImagePipe.PresentImage()| and
// |Session.Present()|, when the consumer begins preparing the first frame
// which includes the presented content.
struct PresentationInfo {
  // The actual time at which the enqueued operations are anticipated to take
  // visible effect, expressed in nanoseconds in the |CLOCK_MONOTONIC|
  // timebase.
  //
  // This value increases monotonically with each new frame, typically in
  // increments of the |presentation_interval|.
  uint64 presentation_time;

  // The nominal amount of time which is anticipated to elapse between
  // successively presented frames, expressed in nanoseconds.  When rendering
  // to a display, the interval will typically be derived from the display
  // refresh rate.
  //
  // This value is non-zero.  It may vary from time to time, such as when
  // changing display modes.
  uint64 presentation_interval;
};