blob: a3936fc173ba1e049cba29cb0072603f9fa8b2be [file] [log] [blame]
// Copyright 2016 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.
#ifndef GPU_PROGRESS_H
#define GPU_PROGRESS_H
#include <chrono>
#include "sequencer.h"
class GpuProgress {
public:
void Submitted(uint32_t sequence_number, std::chrono::steady_clock::time_point time);
void Completed(uint32_t sequence_number, std::chrono::steady_clock::time_point time);
void Reset();
std::chrono::steady_clock::duration GetHangcheckTimeout(
uint64_t max_completion_time_ms, std::chrono::steady_clock::time_point now);
uint32_t last_submitted_sequence_number() const { return last_submitted_sequence_number_; }
uint32_t last_completed_sequence_number() const { return last_completed_sequence_number_; }
private:
uint32_t last_submitted_sequence_number_ = Sequencer::kInvalidSequenceNumber;
uint32_t last_completed_sequence_number_ = Sequencer::kInvalidSequenceNumber;
std::chrono::steady_clock::time_point hangcheck_start_time_ =
std::chrono::steady_clock::time_point::max();
};
#endif // GPU_PROGRESS_H