From d481c481ca7813d688ffcb1c5418b48f83d945c1 Mon Sep 17 00:00:00 2001 From: Luigi 'Comio' Mantellini Date: Sun, 28 Aug 2022 09:17:35 +0200 Subject: [PATCH] Revert "drm/i915: Individualize fences before adding to dma_resv obj" This reverts commit 842d9346b2fdda4d2fb8ccb5b87faef1ac01ab51. --- .../gpu/drm/i915/gem/i915_gem_execbuffer.c | 3 +- drivers/gpu/drm/i915/i915_vma.c | 48 ++++++++----------- 2 files changed, 21 insertions(+), 30 deletions(-) diff --git a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c index 30fe847c6664..c326bd2b444f 100644 --- a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c +++ b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c @@ -999,8 +999,7 @@ static int eb_validate_vmas(struct i915_execbuffer *eb) } } - /* Reserve enough slots to accommodate composite fences */ - err = dma_resv_reserve_fences(vma->obj->base.resv, eb->num_batches); + err = dma_resv_reserve_fences(vma->obj->base.resv, 1); if (err) return err; diff --git a/drivers/gpu/drm/i915/i915_vma.c b/drivers/gpu/drm/i915/i915_vma.c index 16460b169ed2..e71826f0e4b1 100644 --- a/drivers/gpu/drm/i915/i915_vma.c +++ b/drivers/gpu/drm/i915/i915_vma.c @@ -23,7 +23,6 @@ */ #include -#include #include #include "display/intel_frontbuffer.h" @@ -1839,21 +1838,6 @@ int _i915_vma_move_to_active(struct i915_vma *vma, if (unlikely(err)) return err; - /* - * Reserve fences slot early to prevent an allocation after preparing - * the workload and associating fences with dma_resv. - */ - if (fence && !(flags & __EXEC_OBJECT_NO_RESERVE)) { - struct dma_fence *curr; - int idx; - - dma_fence_array_for_each(curr, idx, fence) - ; - err = dma_resv_reserve_fences(vma->obj->base.resv, idx); - if (unlikely(err)) - return err; - } - if (flags & EXEC_OBJECT_WRITE) { struct intel_frontbuffer *front; @@ -1863,23 +1847,31 @@ int _i915_vma_move_to_active(struct i915_vma *vma, i915_active_add_request(&front->write, rq); intel_frontbuffer_put(front); } - } - if (fence) { - struct dma_fence *curr; - enum dma_resv_usage usage; - int idx; + if (!(flags & __EXEC_OBJECT_NO_RESERVE)) { + err = dma_resv_reserve_fences(vma->obj->base.resv, 1); + if (unlikely(err)) + return err; + } - obj->read_domains = 0; - if (flags & EXEC_OBJECT_WRITE) { - usage = DMA_RESV_USAGE_WRITE; + if (fence) { + dma_resv_add_fence(vma->obj->base.resv, fence, + DMA_RESV_USAGE_WRITE); obj->write_domain = I915_GEM_DOMAIN_RENDER; - } else { - usage = DMA_RESV_USAGE_READ; + obj->read_domains = 0; + } + } else { + if (!(flags & __EXEC_OBJECT_NO_RESERVE)) { + err = dma_resv_reserve_fences(vma->obj->base.resv, 1); + if (unlikely(err)) + return err; } - dma_fence_array_for_each(curr, idx, fence) - dma_resv_add_fence(vma->obj->base.resv, curr, usage); + if (fence) { + dma_resv_add_fence(vma->obj->base.resv, fence, + DMA_RESV_USAGE_READ); + obj->write_domain = 0; + } } if (flags & EXEC_OBJECT_NEEDS_FENCE && vma->fence) -- 2.37.2