From fc28692a5af22754818e2eda20409f9502daa088 Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Mon, 9 Jul 2018 13:18:34 -0700 Subject: [PATCH] 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. --- src/gallium/drivers/v3d/v3d_fence.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) 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 * -- 2.30.2