diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2021-01-01 09:35:36 +0000 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2021-02-11 11:24:12 +0000 |
commit | 67d5c7e7f965754b75cbf00c81f4cc223c06f24c (patch) | |
tree | 074b33341388c3417cbd4f27aa485e1a0812a077 | |
parent | 496f3dd1be30fe683f6101165cc9f195b9e32320 (diff) |
vma->objpages
-rw-r--r-- | drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/gem/i915_gem_object_blt.c | 6 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/i915_vma.c | 13 |
3 files changed, 11 insertions, 10 deletions
diff --git a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c index 6adef2d8b719..4fbb1e04f67f 100644 --- a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c +++ b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c @@ -1264,7 +1264,7 @@ static int reloc_move_to_gpu(struct i915_request *rq, struct i915_vma *vma) i915_gem_clflush_object(obj, 0); obj->write_domain = 0; - err = i915_request_await_object(rq, vma->obj, true); + err = i915_request_await_object(rq, obj, true); if (err == 0) err = i915_vma_move_to_active(vma, rq, EXEC_OBJECT_WRITE); diff --git a/drivers/gpu/drm/i915/gem/i915_gem_object_blt.c b/drivers/gpu/drm/i915/gem/i915_gem_object_blt.c index 06382e2935a3..2796f148e9b0 100644 --- a/drivers/gpu/drm/i915/gem/i915_gem_object_blt.c +++ b/drivers/gpu/drm/i915/gem/i915_gem_object_blt.c @@ -116,9 +116,7 @@ int intel_emit_vma_mark_active(struct i915_vma *vma, struct i915_request *rq) { int err; - err = i915_request_await_object(rq, vma->obj, false); - if (err == 0) - err = i915_vma_move_to_active(vma, rq, 0); + err = i915_vma_move_to_active(vma, rq, 0); if (unlikely(err)) return err; @@ -188,7 +186,7 @@ retry: if (unlikely(err)) goto out_request; - err = move_obj_to_gpu(vma->obj, rq, true); + err = move_obj_to_gpu(obj, rq, true); if (err == 0) err = i915_vma_move_to_active(vma, rq, EXEC_OBJECT_WRITE); if (unlikely(err)) diff --git a/drivers/gpu/drm/i915/i915_vma.c b/drivers/gpu/drm/i915/i915_vma.c index f29e1aaf3a6e..33fa9e260607 100644 --- a/drivers/gpu/drm/i915/i915_vma.c +++ b/drivers/gpu/drm/i915/i915_vma.c @@ -1197,12 +1197,18 @@ int i915_vma_move_to_active(struct i915_vma *vma, struct drm_i915_gem_object *obj = vma->obj; int err; - assert_object_held(obj); - err = __i915_vma_move_to_active(vma, rq); if (unlikely(err)) return err; + if (flags & EXEC_OBJECT_NEEDS_FENCE && vma->fence) + i915_active_add_request(&vma->fence->active, rq); + + if (!obj) + return 0; + + assert_object_held(obj); + if (flags & EXEC_OBJECT_WRITE) { struct intel_frontbuffer *front; @@ -1225,9 +1231,6 @@ int i915_vma_move_to_active(struct i915_vma *vma, obj->write_domain = 0; } - if (flags & EXEC_OBJECT_NEEDS_FENCE && vma->fence) - i915_active_add_request(&vma->fence->active, rq); - obj->read_domains |= I915_GEM_GPU_DOMAINS; obj->pages->dirty = true; |