On 16/08/17 23:37, Jose Fonseca wrote:
On 16/08/17 14:22, Brian Paul wrote:
From: Frank Richter <frank.rich...@dynardo.de>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=102241
Cc: mesa-sta...@lists.freedesktop.org
Reviewed-by: Brian Paul <bri...@vmware.com>
---
src/gallium/auxiliary/os/os_time.c | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/src/gallium/auxiliary/os/os_time.c
b/src/gallium/auxiliary/os/os_time.c
index e169139..e4a1cae 100644
--- a/src/gallium/auxiliary/os/os_time.c
+++ b/src/gallium/auxiliary/os/os_time.c
@@ -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
Series looks great.
Thanks!
Reviewed-by: Jose Fonseca <jfons...@vmware.com>
BTW, I wonder if we would win by using lldiv(). Because this is often
use for performance measurements, so these extra division might add some
impact.
Jose
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev