| // 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 |