From b84a6608065cacb454a5dc531243abeb119c8823 Mon Sep 17 00:00:00 2001 From: Harold Brenes Date: Thu, 28 Mar 2024 21:09:37 -0400 Subject: Fix incorrect timings on macOS --- src/timings.cpp | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) (limited to 'src/timings.cpp') diff --git a/src/timings.cpp b/src/timings.cpp index baa8b80da..e4165e3c0 100644 --- a/src/timings.cpp +++ b/src/timings.cpp @@ -33,22 +33,23 @@ gb_internal u64 win32_time_stamp__freq(void) { #include +gb_internal mach_timebase_info_data_t osx_init_timebase_info(void) { + mach_timebase_info_data_t data; + data.numer = 0; + data.denom = 0; + kern_return_t r = mach_timebase_info(&data); + GB_ASSERT(r == KERN_SUCCESS); + + return data; +} + gb_internal u64 osx_time_stamp_time_now(void) { - return mach_absolute_time(); + gb_local_persist mach_timebase_info_data_t data = osx_init_timebase_info(); + return (mach_absolute_time() * cast(u64)data.numer) / cast(u64)data.denom; // Effectively converts to nanoseconds } gb_internal u64 osx_time_stamp__freq(void) { - mach_timebase_info_data_t data; - data.numer = 0; - data.denom = 0; - mach_timebase_info(&data); -#if defined(GB_CPU_ARM) - // NOTE(bill, 2021-02-25): M1 Chip seems to have a different freq count - // TODO(bill): Is this truly correct? - return (1000000llu * cast(u64)data.numer) / cast(u64)data.denom; -#else - return (1000000000llu * cast(u64)data.numer) / cast(u64)data.denom; -#endif + return 1000000000ull; // Nanoseconds to seconds } #elif defined(GB_SYSTEM_UNIX) -- cgit v1.2.3 From 13b8a5b73d12ed7c6c9a8ca6714a0aa36b82ecf8 Mon Sep 17 00:00:00 2001 From: Harold Brenes Date: Fri, 29 Mar 2024 05:04:40 -0400 Subject: Reverting to calculated frequency timings method on macOS, but fixed --- src/timings.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src/timings.cpp') diff --git a/src/timings.cpp b/src/timings.cpp index e4165e3c0..712e804cb 100644 --- a/src/timings.cpp +++ b/src/timings.cpp @@ -44,12 +44,12 @@ gb_internal mach_timebase_info_data_t osx_init_timebase_info(void) { } gb_internal u64 osx_time_stamp_time_now(void) { - gb_local_persist mach_timebase_info_data_t data = osx_init_timebase_info(); - return (mach_absolute_time() * cast(u64)data.numer) / cast(u64)data.denom; // Effectively converts to nanoseconds + return mach_absolute_time(); } gb_internal u64 osx_time_stamp__freq(void) { - return 1000000000ull; // Nanoseconds to seconds + gb_local_persist mach_timebase_info_data_t data = osx_init_timebase_info(); + return 1000000000ull * cast(u64)data.denom / cast(u64)data.numer; } #elif defined(GB_SYSTEM_UNIX) -- cgit v1.2.3