[Intel-gfx] [PATCH 07/11] drm/i915/gem: Try allocating va from free space
Chris Wilson
chris at chris-wilson.co.uk
Wed Apr 1 18:30:07 UTC 2020
Quoting Matthew Auld (2020-04-01 19:20:56)
> On Tue, 31 Mar 2020 at 22:31, Chris Wilson <chris at chris-wilson.co.uk> wrote:
> >
> > If the current node/entry location is occupied, and the object is not
> > pinned, try assigning it some free space. We cannot wait here, so if in
> > doubt, we unreserve and try to grab all at once.
> >
> > Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> > ---
> > drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c | 13 +++++++++++--
> > 1 file changed, 11 insertions(+), 2 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
> > index bc8aa9604787..d8c746108d85 100644
> > --- a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
> > +++ b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
> > @@ -446,8 +446,17 @@ eb_pin_vma(struct i915_execbuffer *eb,
> > if (unlikely(ev->flags & EXEC_OBJECT_NEEDS_GTT))
> > pin_flags |= PIN_GLOBAL;
> >
> > - if (unlikely(i915_vma_pin(vma, 0, 0, pin_flags)))
> > - return false;
> > + if (unlikely(i915_vma_pin(vma, 0, 0, pin_flags))) {
> > + if (entry->flags & EXEC_OBJECT_PINNED)
> > + return false;
> > +
> > + pin_flags &= ~PIN_OFFSET_FIXED;
> > + if (unlikely(i915_vma_pin(vma,
> > + entry->pad_to_size,
> > + entry->alignment,
> > + pin_flags)))
>
> Just curious, why not just apply the rest of the flags here(MAP, 48B,
> BIAS etc) which saves us from having to bind/unbind/bind if it's
> trivially misplaced?
That required actually doing some work to refactor the flag selection!
-Chris
More information about the Intel-gfx
mailing list