mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 11:18:08 +02:00
gallium/os: fix os_time_get_nano() to roll over less
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=102241
Cc: mesa-stable@lists.freedesktop.org
Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
(cherry picked from commit 7fb7287ce7)
This commit is contained in:
parent
e452ed26ff
commit
42e8f3ccdf
1 changed files with 8 additions and 1 deletions
|
|
@ -69,10 +69,17 @@ os_time_get_nano(void)
|
||||||
|
|
||||||
static LARGE_INTEGER frequency;
|
static LARGE_INTEGER frequency;
|
||||||
LARGE_INTEGER counter;
|
LARGE_INTEGER counter;
|
||||||
|
int64_t secs, nanosecs;
|
||||||
if(!frequency.QuadPart)
|
if(!frequency.QuadPart)
|
||||||
QueryPerformanceFrequency(&frequency);
|
QueryPerformanceFrequency(&frequency);
|
||||||
QueryPerformanceCounter(&counter);
|
QueryPerformanceCounter(&counter);
|
||||||
return counter.QuadPart*INT64_C(1000000000)/frequency.QuadPart;
|
/* Compute seconds and nanoseconds parts separately to
|
||||||
|
* reduce severity of precision loss.
|
||||||
|
*/
|
||||||
|
secs = counter.QuadPart / frequency.QuadPart;
|
||||||
|
nanosecs = (counter.QuadPart % frequency.QuadPart) * INT64_C(1000000000)
|
||||||
|
/ frequency.QuadPart;
|
||||||
|
return secs*INT64_C(1000000000) + nanosecs;
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue