i965: Actually use the user timeout in glClientWaitSync.
authorBen Widawsky <ben@bwidawsk.net>
Wed, 8 May 2013 05:42:39 +0000 (22:42 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Thu, 9 May 2013 23:41:44 +0000 (16:41 -0700)
Use the new libdrm functionality to actually do timed waits on the sync
object.

Signed-off-by: Ben Widawsky <ben@bwidawsk.net>
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Matt Turner <mattst88@gmail.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
src/mesa/drivers/dri/intel/intel_syncobj.c

index e965896df60b129f14465c525d2ac645d0b2a0b7..9657d9af959b06e5334e2e2233654ce46d74fe48 100644 (file)
@@ -80,20 +80,12 @@ intel_fence_sync(struct gl_context *ctx, struct gl_sync_object *s,
    intel_flush(ctx);
 }
 
-/* We ignore the user-supplied timeout.  This is weaselly -- we're allowed to
- * round to an implementation-dependent accuracy, and right now our
- * implementation "rounds" to the wait-forever value.
- *
- * The fix would be a new kernel function to do the GTT transition with a
- * timeout.
- */
 static void intel_client_wait_sync(struct gl_context *ctx, struct gl_sync_object *s,
                                 GLbitfield flags, GLuint64 timeout)
 {
    struct intel_sync_object *sync = (struct intel_sync_object *)s;
 
-   if (sync->bo) {
-      drm_intel_bo_wait_rendering(sync->bo);
+   if (sync->bo && drm_intel_gem_bo_wait(sync->bo, timeout) == 0) {
       s->StatusFlag = 1;
       drm_intel_bo_unreference(sync->bo);
       sync->bo = NULL;