summaryrefslogtreecommitdiff
path: root/tests/i915/gem_userptr_blits.c
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2020-06-22 18:41:58 +0100
committerChris Wilson <chris@chris-wilson.co.uk>2020-06-22 19:08:56 +0100
commit71a22c37ae6541f9d991d81f15cbade1da402b75 (patch)
tree1f74d6d77e305c30bcb873ce8919cabacd970313 /tests/i915/gem_userptr_blits.c
parent3b6975c0f9e429c0c1f48c61a3417be9d68300cf (diff)
i915/gem_userptr_blits: Probe async error status
Be wary in case we postpone error discovering for nonblocking execbuf, and double check the fence status. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Acked-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Diffstat (limited to 'tests/i915/gem_userptr_blits.c')
-rw-r--r--tests/i915/gem_userptr_blits.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/tests/i915/gem_userptr_blits.c b/tests/i915/gem_userptr_blits.c
index d66cbf1d..db41882d 100644
--- a/tests/i915/gem_userptr_blits.c
+++ b/tests/i915/gem_userptr_blits.c
@@ -63,6 +63,7 @@
#include "i915/gem.h"
#include "igt.h"
#include "intel_bufmgr.h"
+#include "sw_sync.h"
#include "eviction_common.c"
@@ -205,10 +206,20 @@ static int copy(int fd, uint32_t dst, uint32_t src)
exec.buffer_count++;
exec.buffers_ptr = to_user_pointer(obj);
exec.flags = HAS_BLT_RING(intel_get_drm_devid(fd)) ? I915_EXEC_BLT : 0;
+ exec.flags |= I915_EXEC_FENCE_OUT;
- ret = __gem_execbuf(fd, &exec);
+ ret = __gem_execbuf_wr(fd, &exec);
gem_close(fd, handle);
+ if (ret == 0) {
+ int fence = exec.rsvd2 >> 32;
+
+ sync_fence_wait(fence, -1);
+ if (sync_fence_status(fence) < 0)
+ ret = sync_fence_status(fence);
+ close(fence);
+ }
+
return ret;
}