Re: [PATCH 19/38] drm/i915: Allow contexts to share a single timeline across all engines

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Quoting Tvrtko Ursulin (2019-03-05 15:54:25)
> 
> On 01/03/2019 14:03, Chris Wilson wrote:
> > diff --git a/drivers/gpu/drm/i915/i915_request.c b/drivers/gpu/drm/i915/i915_request.c
> > index 9d111eedad5a..e0807a61dcf4 100644
> > --- a/drivers/gpu/drm/i915/i915_request.c
> > +++ b/drivers/gpu/drm/i915/i915_request.c
> > @@ -1045,8 +1045,14 @@ void i915_request_add(struct i915_request *request)
> >       prev = i915_active_request_raw(&timeline->last_request,
> >                                      &request->i915->drm.struct_mutex);
> >       if (prev && !i915_request_completed(prev)) {
> > -             i915_sw_fence_await_sw_fence(&request->submit, &prev->submit,
> > -                                          &request->submitq);
> > +             if (is_power_of_2(prev->engine->mask | engine->mask))
> > +                     i915_sw_fence_await_sw_fence(&request->submit,
> > +                                                  &prev->submit,
> > +                                                  &request->submitq);
> > +             else
> > +                     __i915_sw_fence_await_dma_fence(&request->submit,
> > +                                                     &prev->fence,
> > +                                                     &request->dmaq);
> 
> Drop a comment here explaining what's happening in this if block.
> 
> The subtlety of why we need a special flavours of await helper, new 
> which use the builtin call back storage, vs using the existing ones 
> which allocate that, totally escapes me at the moment.
> 
> It's probably a good idea to put a paragraph in the commit message 
> explaining what new sw fence facility needs to be added to implement 
> this and why.

Alternatively, we could do add this fence during request_alloc and use
an actual malloc rather than rely on the embedded struct. We still have
to bypass the usual await call as that filters out awaits on the same
timeline (because we know we have this dependency). But since we always
have to to this allocation, why not keep on embedding it in the request
itself.

I'm leaning towards keeping the embedded fence for tracking the
dependency along the timeline (rather than kmalloc) as surely there will
be others later. Surely.
-Chris
_______________________________________________
Intel-gfx mailing list
Intel-gfx@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/intel-gfx




[Index of Archives]     [AMD Graphics]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux