// 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.
@available(deprecated=13)
type PresentationInfo = struct {
    /// 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`.
    presentation_time uint64;

    /// 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.
    presentation_interval uint64;
};
