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>
This commit is contained in:
committed by
Brian Paul
parent
d90e05ad48
commit
7fb7287ce7
@@ -69,10 +69,17 @@ os_time_get_nano(void)
|
||||
|
||||
static LARGE_INTEGER frequency;
|
||||
LARGE_INTEGER counter;
|
||||
int64_t secs, nanosecs;
|
||||
if(!frequency.QuadPart)
|
||||
QueryPerformanceFrequency(&frequency);
|
||||
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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user