summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2021-01-01 09:35:36 +0000
committerChris Wilson <chris@chris-wilson.co.uk>2021-02-11 11:24:12 +0000
commit67d5c7e7f965754b75cbf00c81f4cc223c06f24c (patch)
tree074b33341388c3417cbd4f27aa485e1a0812a077
parent496f3dd1be30fe683f6101165cc9f195b9e32320 (diff)
vma->objpages
-rw-r--r--drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c2
-rw-r--r--drivers/gpu/drm/i915/gem/i915_gem_object_blt.c6
-rw-r--r--drivers/gpu/drm/i915/i915_vma.c13
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;