[igt-dev] [RFC PATCH v9 5/5] tests: gem_exec_basic: add "exec-ctx" buffer execution demo test

Chris Wilson chris at chris-wilson.co.uk
Thu Feb 14 09:56:39 UTC 2019


Quoting Andi Shyti (2019-02-14 00:44:45)
> The "exec-ctx" is a demo subtest inserted in the gem_exec_basic
> test. The main goal is to reach the engines by using
> the new uapi interfacing with igt_require_gem_engine_list().
> 
> The "exec-ctx" subtest simply gets the list of engines, binds
> them to a context and executes a buffer. This is done through a
> new "for_each_engine2" loop which iterates through the
> engines.
> 
> Signed-off-by: Andi Shyti <andi.shyti at intel.com>
> ---
> Hi Chris,
> 
> one note on this. You didn't like the explicit iterator in the
> for_each, while for me it makes quite sense to have it explicit
> rather than hidden because, as I said in the previous review, the
> user might want to use it.
> 
> At the end, we iterate for the iterating value, e.g. we do
> 
>         for (i = 0; i < N; i++)
>                 ...
> 
> because we are interested in 'i' (of course, not always, but most
> of the cases), at the same way we might be interested to the e2
> value.
> 
> If we really want to hide e2, I would rather call it
> for_each_mapped_idx() or similar.
> 
> Andi
> 
>  tests/i915/gem_exec_basic.c | 15 +++++++++++++++
>  1 file changed, 15 insertions(+)
> 
> diff --git a/tests/i915/gem_exec_basic.c b/tests/i915/gem_exec_basic.c
> index dcb83864b1c1..a26eaff1cfe8 100644
> --- a/tests/i915/gem_exec_basic.c
> +++ b/tests/i915/gem_exec_basic.c
> @@ -135,6 +135,21 @@ igt_main
>                         gtt(fd, e->exec_id | e->flags);
>         }
>  
> +       igt_subtest("exec-ctx") {
> +               uint32_t ctx_id;
> +               struct intel_execution_engine2 *e2;
> +               int index_map = 0;
> +
> +               igt_require_gem_engine_list(fd);

This test is for the iterator, it needs to work regardless of having
SET_ENGINES.

Logging which interface it is using is useful.

> +               ctx_id = gem_context_create(fd);
> +
> +               for_each_engine2(fd, ctx_id, e2)
> +                       igt_assert(gem_context_has_engine(fd, ++index_map,
> +                                                         ctx_id));

Do you see why it must be using only the iterator now? As that's what I
want tested! gem_ctx_engines is checking the SET_ENGINES interface and
making sure execbufs on ctx->engines[] map back to the old uabi. What we
need here is a simple sanitycheck that the for_each_ctx_engine() does
not explode.
-Chris


More information about the igt-dev mailing list