[igt-dev] [PATCH v15 4/5] lib/i915: add gem_engine_topology library and for_each loop definition
Chris Wilson
chris at chris-wilson.co.uk
Fri Mar 22 09:59:14 UTC 2019
Quoting Tvrtko Ursulin (2019-03-22 09:56:49)
>
> On 22/03/2019 07:59, Chris Wilson wrote:
> > Quoting Tvrtko Ursulin (2019-03-22 07:47:02)
> >>> +void intel_next_engine(struct intel_engine_data *ed);
> >>> +
> >>> +#define IS_PHYSICAL_ENGINE(e2) ((e2->class >= 0) && (e2->instance >= 0))
> >>
> >> Chris, do you think this will be future proof enough?
> >
> > At the moment, we've reserved just the one identifier for placeholders
> > (class == I915_ENGINE_CLASS_INVALID). And I feel confident that should
> > be enough.
> >
> > The problem is if something else gave us multiple instances of a logical
> > engine for which we have no means to determine the physical mapping,
> > which is vvv
> >
> >> I remembered how at one point I had "IS_PHYSICAL" as a flag in engine query.
> >>
> >> Or we make this here more explicit by being "IS_VIRTUAL" and invert the
> >> test in the caller?
> >
> > Aye. I think you are right here, and we need to put a caps field into
> > the engine_data (filled in by i915_query for valid classes and default
> > to !phys for invalid slots). A lot of the for_each_physical_engine()
> > tests do not make sense if there is automagic engine mapping going on
> > behind the scenes.
>
> You are simply saying to move the "IS_PHYISICAL" test to init_engine
> here and store it in a flag per engine?
Yes, with a view to supplying that information from the kernel if the
future landscape changes for the actual engines.
-Chris
More information about the igt-dev
mailing list