So it appears MacOSX doesn't have clock_gettime, so workaround that, and switch to using a consistent clock everywhere, (CLOCK_MONOTONIC in case of non-MacOSX UNIX).
I'm sure there are more surprised lying in wait. Signed-off-by: Dave Airlie <airl...@redhat.com> --- src/gallium/auxiliary/os/os_time.c | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/src/gallium/auxiliary/os/os_time.c b/src/gallium/auxiliary/os/os_time.c index 4055125..d3fc805 100644 --- a/src/gallium/auxiliary/os/os_time.c +++ b/src/gallium/auxiliary/os/os_time.c @@ -46,11 +46,22 @@ #include "os_time.h" +#if defined(PIPE_OS_UNIX) && !defined(PIPE_OS_APPLE) +/* MacOSX doesn't have clock_gettime, not sure about other UNIX/HURD */ +#define HAVE_CLOCK_GETTIME 1 +#endif +/* + * when we have clock_gettime use get nano to define time get, + * when we don't have it work vice-versa, should avoid extra + * conversions. + */ int64_t os_time_get(void) { -#if defined(PIPE_OS_UNIX) +#if defined(HAVE_CLOCK_GETTIME) + return os_time_get_nano() / 1000; +#elif defined(PIPE_UNIX) struct timeval tv; gettimeofday(&tv, NULL); @@ -72,12 +83,11 @@ os_time_get(void) uint64_t os_time_get_nano(void) { -#if defined(PIPE_OS_UNIX) +#if defined(HAVE_CLOCK_GETTIME) struct timespec tv; - clock_gettime(CLOCK_REALTIME, &tv); + clock_gettime(CLOCK_MONOTONIC, &tv); return tv.tv_nsec + tv.tv_sec * 1000000000LL; - -#elif defined(PIPE_SUBSYSTEM_WINDOWS_USER) +#else return os_time_get() * 1000; #endif } -- 1.7.11.7 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev