[igt-dev] [PATCH i-g-t] tests/i915/gem_ctx_switch: Update with engine discovery

Chris Wilson chris at chris-wilson.co.uk
Thu Jun 27 11:05:37 UTC 2019


Quoting Tvrtko Ursulin (2019-06-27 11:55:56)
> 
> On 27/06/2019 11:35, Chris Wilson wrote:
> > Quoting Tvrtko Ursulin (2019-06-27 11:20:19)
> >> @@ -125,13 +128,14 @@ static void single(int fd, uint32_t handle,
> >>          shared = mmap(NULL, 4096, PROT_WRITE, MAP_SHARED | MAP_ANON, -1, 0);
> >>          igt_assert(shared != MAP_FAILED);
> >>   
> >> -       gem_require_ring(fd, e->exec_id | e->flags);
> >> -
> >>          for (n = 0; n < 64; n++) {
> >>                  if (flags & QUEUE)
> >>                          contexts[n] = gem_queue_create(fd);
> >>                  else
> >>                          contexts[n] = gem_context_create(fd);
> >> +
> >> +               if (gem_context_has_engine_map(fd, 0))
> >> +                       gem_context_set_all_engines(fd, contexts[n]);
> > 
> > That was a moment of doubt on how well setting engines on a "queue"
> > worked :)
> 
> Why it wouldn't work?

Because I expected to have made a mistake :)

> > Ok, that looks like what I would expect. For crux tests, we iterate over
> > both the legacy ring selector, and along the engine[] indices.
> > 
> >> -       igt_subtest("basic-all-light")
> >> +       igt_subtest("all-light")
> >>                  all(fd, light, 0, 5);
> >> -       igt_subtest("basic-all-heavy")
> >> +       igt_subtest("all-heavy")
> >>                  all(fd, heavy, 0, 5);
> > 
> > And for "all" tests where we are just trying to utilise all engines at
> > once, we only care about the underlying HW utilisation and so the new
> > query interface works best.
> 
> Cool, so no complaints?

Strategy works for me. We can argue about which tests need both and
hopefully come up with a minimum set that gives good coverage of active
legacy ABI.
-Chris


More information about the igt-dev mailing list