On Mon, Mar 2, 2015 at 4:27 PM, Kristian Høgsberg <k...@bitplanet.net> wrote: > DRM_IOCTL_I915_GEM_WAIT takes an int64_t for the timeout value but > GL_ARB_sync takes an uint64_t. Further, the ioctl used to wait > indefinitely when passed a negative timeout, but it's been broken and > now returns immediately in that case. Thus, if an application passes > UINT64_MAX to wait forever, we overflow to -1LL and return immediately. > Work around this mess by clamping the wait timeout to INT64_MAX. > > Signed-off-by: Kristian Høgsberg <k...@bitplanet.net> > --- > > > src/mesa/drivers/dri/i965/intel_syncobj.c | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/src/mesa/drivers/dri/i965/intel_syncobj.c > b/src/mesa/drivers/dri/i965/intel_syncobj.c > index 9cde152..fb95892 100644 > --- a/src/mesa/drivers/dri/i965/intel_syncobj.c > +++ b/src/mesa/drivers/dri/i965/intel_syncobj.c > @@ -84,6 +84,13 @@ static void intel_client_wait_sync(struct gl_context *ctx, > struct gl_sync_object > { > struct intel_sync_object *sync = (struct intel_sync_object *)s; > > + /* DRM_IOCTL_I915_GEM_WAIT uses a signed 64 bit timeout and returns > + * immediately for timeouts <= 0. The best we can do is to clamp the > + * timeout to INT64_MAX. This limits the maximum timeout from 584 years > to > + * 292 years - likely not a big deal. */
*/ on its own line. _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev