[PATCH 35/46] fence-inplace
Chris Wilson
chris at chris-wilson.co.uk
Thu Jul 30 06:38:44 UTC 2020
---
drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c | 16 +++++++++++++++-
1 file changed, 15 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
index bdf9274796be..39490ec01a0a 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
+++ b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
@@ -454,7 +454,21 @@ static u64 eb_pin_flags(const struct drm_i915_gem_exec_object2 *entry,
static bool eb_pin_vma_fence_inplace(struct eb_vma *ev)
{
- return false; /* We need to add some new fence serialisation */
+ struct i915_vma *vma = ev->vma;
+ struct i915_fence_reg *reg = vma->fence;
+
+ if (reg) {
+ if (READ_ONCE(reg->dirty))
+ return false;
+
+ atomic_inc(®->pin_count);
+ ev->flags |= __EXEC_OBJECT_HAS_FENCE;
+ } else {
+ if (i915_gem_object_is_tiled(vma->obj))
+ return false;
+ }
+
+ return true;
}
static inline bool
--
2.20.1
More information about the Intel-gfx-trybot
mailing list