From fb735883be43a62ed707d2f7ef56acaa5ccb76fa Mon Sep 17 00:00:00 2001 From: Colin Davidson Date: Sun, 19 Feb 2023 20:33:48 -0800 Subject: [PATCH] add a tsc frequency get for windows --- core/time/tsc_windows.odin | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 core/time/tsc_windows.odin diff --git a/core/time/tsc_windows.odin b/core/time/tsc_windows.odin new file mode 100644 index 000000000..635aac2c1 --- /dev/null +++ b/core/time/tsc_windows.odin @@ -0,0 +1,28 @@ +//+private +//+build windows +package time + +import win32 "core:sys/windows" + +_get_tsc_frequency :: proc "contextless" () -> u64 { + @(static) frequency : u64 = 0 + if frequency > 0 { + return frequency + } + + qpc_begin: win32.LARGE_INTEGER + win32.QueryPerformanceCounter(&qpc_begin) + tsc_begin := intrinsics.read_cycle_counter() + + win32.Sleep(2) + + qpc_end: win32.LARGE_INTEGER + win32.QueryPerformanceCounter(&qpc_end) + tsc_end := intrinsics.read_cycle_counter() + + qpc_frequency: win32.LARGE_INTEGER + win32.QueryPerformanceFrequency(&qpc_frequency) + + frequency = ((tsc_end - tsc_begin) * qpc_frequency) / (qpc_end - qpc_begin) + return frequency +}