aboutsummaryrefslogtreecommitdiff
path: root/src/timings.cpp
diff options
context:
space:
mode:
authorHarold Brenes <harold@hbrenes.com>2024-03-28 21:09:37 -0400
committerHarold Brenes <harold@hbrenes.com>2024-03-28 21:09:37 -0400
commitb84a6608065cacb454a5dc531243abeb119c8823 (patch)
treeeadc2d9cf32fefc532ae29c613d103ca4ad86bf5 /src/timings.cpp
parentd325c8ad23222f04d520e1c13fc45fea391587c1 (diff)
Fix incorrect timings on macOS
Diffstat (limited to 'src/timings.cpp')
-rw-r--r--src/timings.cpp25
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)