summaryrefslogtreecommitdiff
path: root/Source/Core/VideoCommon/FPSCounter.h
blob: 8cd559a1deabbe3bc5e5160e23df46fd74c159fc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
// Copyright 2008 Dolphin Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later

#pragma once

#include <fstream>

#include "Common/CommonTypes.h"

class FPSCounter
{
public:
  FPSCounter();
  ~FPSCounter();
  FPSCounter(const FPSCounter&) = delete;
  FPSCounter& operator=(const FPSCounter&) = delete;
  FPSCounter(FPSCounter&&) = delete;
  FPSCounter& operator=(FPSCounter&&) = delete;

  // Called when a frame is rendered (updated every second).
  void Update();

  float GetFPS() const { return m_fps; }
  double GetDeltaTime() const { return m_time_diff_secs; }

private:
  void SetPaused(bool paused);

  u64 m_last_time = 0;
  u64 m_time_since_update = 0;
  u64 m_last_time_pause = 0;
  u32 m_frame_counter = 0;
  int m_on_state_changed_handle = -1;
  float m_fps = 0.f;
  std::ofstream m_bench_file;
  double m_time_diff_secs = 0.0;

  void LogRenderTimeToFile(u64 val);
};