Re: [PATCH 15/18] drm/i915/ringbuffer: Specialise SNB+ request emission for semaphores

Joonas Lahtinen
2016-07-22T09:43:00Z

On to, 2016-07-21 at 15:10 +0100, Chris Wilson wrote:
> On Thu, Jul 21, 2016 at 04:55:00PM +0300, Joonas Lahtinen wrote:
> >
> > On ke, 2016-07-20 at 14:12 +0100, Chris Wilson wrote:
> > > + engine->emit_request = gen6_sema_emit_request;
> > > +
> > >   if (INTEL_GEN(dev_priv) >= 8) {
> > >   u64 offset = i915_gem_obj_ggtt_offset(dev_priv->semaphore_obj);
> > >
> > > @@ -2789,8 +2789,6 @@ static void intel_ring_default_vfuncs(struct drm_i915_private *dev_priv,
> > >   engine->init_hw = init_ring_common;
> > >
> > >   engine->emit_request = i9xx_emit_request;
> > > - if (INTEL_GEN(dev_priv) >= 6)
> > > - engine->emit_request = gen6_emit_request;
> > Not sure if I would prefer the assignment here still. If overrides
> > happen from all around the codebase, it'll be harder to come up with
> > what are the possible values for a vfunc, right?
> It's definitely not a default function any more though. It needs to be
> conditional on the semaphore setup. We could move the init_semaphores
> earlier, and then do
>
> engine->emit_request = i9xx_emit_request;
> if (i915.semaphores)
> engine->emit_request = gen6_sema_emit_request;
>
> here?

Yeah, that's pretty much what I was after.

Regards, Joonas

> -Chris
>
--
Joonas Lahtinen
Open Source Technology Center
Intel Corporation