diff options
| author | Harold Brenes <harold@hbrenes.com> | 2024-03-28 21:09:37 -0400 |
|---|---|---|
| committer | Harold Brenes <harold@hbrenes.com> | 2024-03-28 21:09:37 -0400 |
| commit | b84a6608065cacb454a5dc531243abeb119c8823 (patch) | |
| tree | eadc2d9cf32fefc532ae29c613d103ca4ad86bf5 /src/timings.cpp | |
| parent | d325c8ad23222f04d520e1c13fc45fea391587c1 (diff) | |
Fix incorrect timings on macOS
Diffstat (limited to 'src/timings.cpp')
| -rw-r--r-- | src/timings.cpp | 25 |
1 files changed, 13 insertions, 12 deletions
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 <mach/mach_time.h> +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) |