TimingEvents: Use a 64-bit integer for global tick counter
This commit is contained in:
parent
bd421aaccd
commit
ec032bfb15
|
@ -2,7 +2,7 @@
|
||||||
#include "types.h"
|
#include "types.h"
|
||||||
|
|
||||||
static constexpr u32 SAVE_STATE_MAGIC = 0x43435544;
|
static constexpr u32 SAVE_STATE_MAGIC = 0x43435544;
|
||||||
static constexpr u32 SAVE_STATE_VERSION = 42;
|
static constexpr u32 SAVE_STATE_VERSION = 43;
|
||||||
static constexpr u32 SAVE_STATE_MINIMUM_VERSION = 42;
|
static constexpr u32 SAVE_STATE_MINIMUM_VERSION = 42;
|
||||||
|
|
||||||
#pragma pack(push, 4)
|
#pragma pack(push, 4)
|
||||||
|
|
|
@ -93,7 +93,7 @@ static float s_worst_frame_time = 0.0f;
|
||||||
static float s_average_frame_time = 0.0f;
|
static float s_average_frame_time = 0.0f;
|
||||||
static u32 s_last_frame_number = 0;
|
static u32 s_last_frame_number = 0;
|
||||||
static u32 s_last_internal_frame_number = 0;
|
static u32 s_last_internal_frame_number = 0;
|
||||||
static u32 s_last_global_tick_counter = 0;
|
static u64 s_last_global_tick_counter = 0;
|
||||||
static Common::Timer s_fps_timer;
|
static Common::Timer s_fps_timer;
|
||||||
static Common::Timer s_frame_timer;
|
static Common::Timer s_frame_timer;
|
||||||
|
|
||||||
|
@ -1229,7 +1229,7 @@ void UpdatePerformanceCounters()
|
||||||
return;
|
return;
|
||||||
|
|
||||||
const float frames_presented = static_cast<float>(s_frame_number - s_last_frame_number);
|
const float frames_presented = static_cast<float>(s_frame_number - s_last_frame_number);
|
||||||
const u32 global_tick_counter = TimingEvents::GetGlobalTickCounter();
|
const u64 global_tick_counter = TimingEvents::GetGlobalTickCounter();
|
||||||
|
|
||||||
s_worst_frame_time = s_worst_frame_time_accumulator;
|
s_worst_frame_time = s_worst_frame_time_accumulator;
|
||||||
s_worst_frame_time_accumulator = 0.0f;
|
s_worst_frame_time_accumulator = 0.0f;
|
||||||
|
|
|
@ -12,10 +12,10 @@ static TimingEvent* s_active_events_head;
|
||||||
static TimingEvent* s_active_events_tail;
|
static TimingEvent* s_active_events_tail;
|
||||||
static TimingEvent* s_current_event = nullptr;
|
static TimingEvent* s_current_event = nullptr;
|
||||||
static u32 s_active_event_count = 0;
|
static u32 s_active_event_count = 0;
|
||||||
static u32 s_global_tick_counter = 0;
|
static u64 s_global_tick_counter = 0;
|
||||||
static u32 s_last_event_run_time = 0;
|
static u64 s_last_event_run_time = 0;
|
||||||
|
|
||||||
u32 GetGlobalTickCounter()
|
u64 GetGlobalTickCounter()
|
||||||
{
|
{
|
||||||
return s_global_tick_counter;
|
return s_global_tick_counter;
|
||||||
}
|
}
|
||||||
|
@ -255,7 +255,8 @@ void RunEvents()
|
||||||
{
|
{
|
||||||
DebugAssert(!s_current_event);
|
DebugAssert(!s_current_event);
|
||||||
|
|
||||||
TickCount pending_ticks = (s_global_tick_counter + CPU::GetPendingTicks()) - s_last_event_run_time;
|
TickCount pending_ticks =
|
||||||
|
static_cast<TickCount>((s_global_tick_counter + static_cast<u32>(CPU::GetPendingTicks())) - s_last_event_run_time);
|
||||||
CPU::ResetPendingTicks();
|
CPU::ResetPendingTicks();
|
||||||
while (pending_ticks > 0)
|
while (pending_ticks > 0)
|
||||||
{
|
{
|
||||||
|
@ -298,7 +299,16 @@ void RunEvents()
|
||||||
|
|
||||||
bool DoState(StateWrapper& sw)
|
bool DoState(StateWrapper& sw)
|
||||||
{
|
{
|
||||||
sw.Do(&s_global_tick_counter);
|
if (sw.IsReading() && sw.GetVersion() < 43)
|
||||||
|
{
|
||||||
|
u32 global_tick_counter32;
|
||||||
|
sw.Do(&global_tick_counter32);
|
||||||
|
s_global_tick_counter = ZeroExtend64(global_tick_counter32);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sw.Do(&s_global_tick_counter);
|
||||||
|
}
|
||||||
|
|
||||||
if (sw.IsReading())
|
if (sw.IsReading())
|
||||||
{
|
{
|
||||||
|
@ -333,7 +343,16 @@ bool DoState(StateWrapper& sw)
|
||||||
event->m_interval = interval;
|
event->m_interval = interval;
|
||||||
}
|
}
|
||||||
|
|
||||||
sw.Do(&s_last_event_run_time);
|
if (sw.GetVersion() < 43)
|
||||||
|
{
|
||||||
|
u32 last_event_run_time32;
|
||||||
|
sw.Do(&last_event_run_time32);
|
||||||
|
s_last_event_run_time = ZeroExtend64(last_event_run_time32);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sw.Do(&s_last_event_run_time);
|
||||||
|
}
|
||||||
|
|
||||||
Log_DevPrintf("Loaded %u events from save state.", event_count);
|
Log_DevPrintf("Loaded %u events from save state.", event_count);
|
||||||
SortEvents();
|
SortEvents();
|
||||||
|
|
|
@ -71,7 +71,7 @@ public:
|
||||||
|
|
||||||
namespace TimingEvents {
|
namespace TimingEvents {
|
||||||
|
|
||||||
u32 GetGlobalTickCounter();
|
u64 GetGlobalTickCounter();
|
||||||
|
|
||||||
void Initialize();
|
void Initialize();
|
||||||
void Reset();
|
void Reset();
|
||||||
|
|
Loading…
Reference in New Issue