From: Eric Anholt Date: Mon, 9 Jul 2018 20:18:34 +0000 (-0700) Subject: v3d: Fix the timeout value passed to drmSyncobjWait(). X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=fc28692a5af22754818e2eda20409f9502daa088;p=mesa.git v3d: Fix the timeout value passed to drmSyncobjWait(). The API wants an absolute time, so we need to go add gallium's argument to CLOCK_MONOTONIC. --- diff --git a/src/gallium/drivers/v3d/v3d_fence.c b/src/gallium/drivers/v3d/v3d_fence.c index 850e4a74414..f07ea17b0d3 100644 --- a/src/gallium/drivers/v3d/v3d_fence.c +++ b/src/gallium/drivers/v3d/v3d_fence.c @@ -35,6 +35,7 @@ */ #include "util/u_inlines.h" +#include "util/os_time.h" #include "v3d_context.h" #include "v3d_bufmgr.h" @@ -70,7 +71,11 @@ v3d_fence_finish(struct pipe_screen *pscreen, struct v3d_screen *screen = v3d_screen(pscreen); struct v3d_fence *f = (struct v3d_fence *)pf; - return drmSyncobjWait(screen->fd, &f->sync, 1, timeout_ns, 0, NULL) >= 0; + uint64_t abs_timeout = os_time_get_absolute_timeout(timeout_ns); + if (abs_timeout == OS_TIMEOUT_INFINITE) + abs_timeout = INT64_MAX; + return drmSyncobjWait(screen->fd, &f->sync, 1, abs_timeout, + 0, NULL) >= 0; } struct v3d_fence *