On 08/16/2017 04:42 PM, Jose Fonseca wrote:
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.

Frank, do you want to look into that? In the mean time, I'll push the patches as-is.

-Brian


_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to