[igt-dev] [PATCH i-g-t 2/4] i915/gem_ctx_engine: Exercise for_each_context_engine() with custom engine[]
Chris Wilson
chris at chris-wilson.co.uk
Fri Feb 14 21:57:24 UTC 2020
Quoting Antonio Argenziano (2020-02-14 21:49:16)
>
>
> On 14/02/20 11:40, Chris Wilson wrote:
> > Set up a custom engine map with no engines, and check that the
> > for_each_context_engine() correctly iterates over nothing.
> >
> > Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> > ---
> > tests/i915/gem_ctx_engines.c | 28 ++++++++++++++++++++++++++++
> > 1 file changed, 28 insertions(+)
> >
> > diff --git a/tests/i915/gem_ctx_engines.c b/tests/i915/gem_ctx_engines.c
> > index 063140e0f..6a2edd1e0 100644
> > --- a/tests/i915/gem_ctx_engines.c
> > +++ b/tests/i915/gem_ctx_engines.c
> > @@ -549,6 +549,31 @@ static void independent(int i915)
> > gem_context_destroy(i915, param.ctx_id);
> > }
> >
> > +static void libapi(int i915)
> > +{
> > + struct i915_context_param_engines engines = {};
>
> Is there a case for invalid engines as well?
One would have to think what the behaviour should be :)
for_each_context_engine() should iterate over every engine defined,
providing you with (e->class, e->instance, e->pretty_name).
Invalid will still have an entry, maybe with "unknown".
for_each_physical_engine would skip invalid entries that are rejected by
the kernel. It's really just
for_each_context_engine()
for_each_if(gem_has_ring())
and I think I should drop the second loop here and focus on testing that
for_each_context_engine() simply reports back the class:inst we put
into the context.
-Chris
More information about the igt-dev
mailing list