blob: b12f53b12dfd2e976dff66cb1193161d45c8b600 [file] [log] [blame]
Fady Samuel0cfa6cba2018-10-16 20:05:431// Copyright 2018 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "components/viz/common/quads/frame_deadline.h"
6
7#include <cinttypes>
8
9#include "base/strings/string_number_conversions.h"
10#include "base/strings/stringprintf.h"
11
12namespace viz {
13
Saman Sami1064d5ea2019-03-20 17:05:4014// static
15FrameDeadline FrameDeadline::MakeZero() {
16 return FrameDeadline(base::TimeTicks(), 0, base::TimeDelta(), false);
17}
18
Fady Samuel0cfa6cba2018-10-16 20:05:4319base::TimeTicks FrameDeadline::ToWallTime(
Anton Bikineev1156b5f2021-05-15 22:35:3620 absl::optional<uint32_t> default_deadline_in_frames) const {
Fady Samuel0cfa6cba2018-10-16 20:05:4321 uint32_t deadline_in_frames = deadline_in_frames_;
22 if (use_default_lower_bound_deadline_) {
23 deadline_in_frames =
24 std::max(deadline_in_frames, default_deadline_in_frames.value_or(
25 std::numeric_limits<uint32_t>::max()));
26 }
27 return frame_start_time_ + deadline_in_frames * frame_interval_;
28}
29
Saman Samia77e3e6f2019-04-08 16:07:4830bool FrameDeadline::IsZero() const {
31 return deadline_in_frames_ == 0 && !use_default_lower_bound_deadline_;
32}
33
Fady Samuel0cfa6cba2018-10-16 20:05:4334std::string FrameDeadline::ToString() const {
35 const base::TimeDelta start_time_delta =
36 frame_start_time_ - base::TimeTicks();
37 return base::StringPrintf(
38 "FrameDeadline(start time: %" PRId64
39 " ms, deadline in frames: %s, frame interval: %" PRId64 " ms)",
40 start_time_delta.InMilliseconds(),
41 use_default_lower_bound_deadline_
42 ? "unresolved"
Raul Tambref88e5102019-02-06 10:54:0343 : base::NumberToString(deadline_in_frames_).c_str(),
Fady Samuel0cfa6cba2018-10-16 20:05:4344 frame_interval_.InMilliseconds());
45}
46
47std::ostream& operator<<(std::ostream& out,
48 const FrameDeadline& frame_deadline) {
49 return out << frame_deadline.ToString();
50}
51
52} // namespace viz