From: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com> To: igt-dev@lists.freedesktop.org Cc: Intel-gfx@lists.freedesktop.org Subject: [RFT i-g-t 5/6] lib: igt_dummyload: use for_each_context_engine() Date: Thu, 11 Apr 2019 13:28:31 +0100 [thread overview] Message-ID: <20190411122831.1787-1-tvrtko.ursulin@linux.intel.com> (raw) In-Reply-To: <20190408161533.2421-6-andi.shyti@intel.com> From: Andi Shyti <andi.shyti@intel.com> With the new getparam/setparam api, engines are mapped to context. Use for_each_context_engine() to loop through existing engines. Suggested-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Signed-off-by: Andi Shyti <andi.shyti@intel.com> Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> --- Just some debug to get more data from CI. --- lib/igt_dummyload.c | 38 +++++++++++++++++++++++++------------- 1 file changed, 25 insertions(+), 13 deletions(-) diff --git a/lib/igt_dummyload.c b/lib/igt_dummyload.c index 47f6b92b424b..e7f3f480dc26 100644 --- a/lib/igt_dummyload.c +++ b/lib/igt_dummyload.c @@ -39,6 +39,7 @@ #include "ioctl_wrappers.h" #include "sw_sync.h" #include "igt_vgem.h" +#include "i915/gem_engine_topology.h" #include "i915/gem_mman.h" /** @@ -86,7 +87,7 @@ emit_recursive_batch(igt_spin_t *spin, struct drm_i915_gem_relocation_entry relocs[2], *r; struct drm_i915_gem_execbuffer2 *execbuf; struct drm_i915_gem_exec_object2 *obj; - unsigned int engines[16]; + unsigned int flags[GEM_MAX_ENGINES]; unsigned int nengine; int fence_fd = -1; uint32_t *batch, *batch_start; @@ -94,17 +95,33 @@ emit_recursive_batch(igt_spin_t *spin, nengine = 0; if (opts->engine == ALL_ENGINES) { - unsigned int engine; + struct intel_execution_engine2 *engine; - for_each_physical_engine(fd, engine) { + for_each_context_engine(fd, opts->ctx, engine) { if (opts->flags & IGT_SPIN_POLL_RUN && - !gem_can_store_dword(fd, engine)) + !gem_class_can_store_dword(fd, engine->class)) continue; - engines[nengine++] = engine; + igt_debug("%u=%llx (%u:%u)\n", + nengine, + engine->flags, engine->class, engine->instance); + flags[nengine++] = engine->flags; } } else { - engines[nengine++] = opts->engine; + struct intel_execution_engine2 *e; + int class; + + if (!gem_ctx_get_engine(fd, opts->engine, opts->ctx, e)) { + class = e->class; + } else { + gem_require_ring(fd, opts->engine); + class = gem_eb_to_class(opts->engine); + } + + if (opts->flags & IGT_SPIN_POLL_RUN) + igt_require(gem_class_can_store_dword(fd, class)); + + flags[nengine++] = opts->engine; } igt_require(nengine); @@ -234,8 +251,9 @@ emit_recursive_batch(igt_spin_t *spin, for (i = 0; i < nengine; i++) { execbuf->flags &= ~ENGINE_MASK; - execbuf->flags |= engines[i]; + execbuf->flags |= flags[i]; + igt_debug("eb %u = %llx\n", i, flags[i]); gem_execbuf_wr(fd, execbuf); if (opts->flags & IGT_SPIN_FENCE_OUT) { @@ -308,12 +326,6 @@ igt_spin_batch_factory(int fd, const struct igt_spin_factory *opts) igt_require_gem(fd); - if (opts->engine != ALL_ENGINES) { - gem_require_ring(fd, opts->engine); - if (opts->flags & IGT_SPIN_POLL_RUN) - igt_require(gem_can_store_dword(fd, opts->engine)); - } - spin = spin_batch_create(fd, opts); igt_assert(gem_bo_busy(fd, spin->handle)); -- 2.19.1 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
WARNING: multiple messages have this Message-ID (diff)
From: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com> To: igt-dev@lists.freedesktop.org Cc: Intel-gfx@lists.freedesktop.org Subject: [igt-dev] [RFT i-g-t 5/6] lib: igt_dummyload: use for_each_context_engine() Date: Thu, 11 Apr 2019 13:28:31 +0100 [thread overview] Message-ID: <20190411122831.1787-1-tvrtko.ursulin@linux.intel.com> (raw) In-Reply-To: <20190408161533.2421-6-andi.shyti@intel.com> From: Andi Shyti <andi.shyti@intel.com> With the new getparam/setparam api, engines are mapped to context. Use for_each_context_engine() to loop through existing engines. Suggested-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Signed-off-by: Andi Shyti <andi.shyti@intel.com> Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> --- Just some debug to get more data from CI. --- lib/igt_dummyload.c | 38 +++++++++++++++++++++++++------------- 1 file changed, 25 insertions(+), 13 deletions(-) diff --git a/lib/igt_dummyload.c b/lib/igt_dummyload.c index 47f6b92b424b..e7f3f480dc26 100644 --- a/lib/igt_dummyload.c +++ b/lib/igt_dummyload.c @@ -39,6 +39,7 @@ #include "ioctl_wrappers.h" #include "sw_sync.h" #include "igt_vgem.h" +#include "i915/gem_engine_topology.h" #include "i915/gem_mman.h" /** @@ -86,7 +87,7 @@ emit_recursive_batch(igt_spin_t *spin, struct drm_i915_gem_relocation_entry relocs[2], *r; struct drm_i915_gem_execbuffer2 *execbuf; struct drm_i915_gem_exec_object2 *obj; - unsigned int engines[16]; + unsigned int flags[GEM_MAX_ENGINES]; unsigned int nengine; int fence_fd = -1; uint32_t *batch, *batch_start; @@ -94,17 +95,33 @@ emit_recursive_batch(igt_spin_t *spin, nengine = 0; if (opts->engine == ALL_ENGINES) { - unsigned int engine; + struct intel_execution_engine2 *engine; - for_each_physical_engine(fd, engine) { + for_each_context_engine(fd, opts->ctx, engine) { if (opts->flags & IGT_SPIN_POLL_RUN && - !gem_can_store_dword(fd, engine)) + !gem_class_can_store_dword(fd, engine->class)) continue; - engines[nengine++] = engine; + igt_debug("%u=%llx (%u:%u)\n", + nengine, + engine->flags, engine->class, engine->instance); + flags[nengine++] = engine->flags; } } else { - engines[nengine++] = opts->engine; + struct intel_execution_engine2 *e; + int class; + + if (!gem_ctx_get_engine(fd, opts->engine, opts->ctx, e)) { + class = e->class; + } else { + gem_require_ring(fd, opts->engine); + class = gem_eb_to_class(opts->engine); + } + + if (opts->flags & IGT_SPIN_POLL_RUN) + igt_require(gem_class_can_store_dword(fd, class)); + + flags[nengine++] = opts->engine; } igt_require(nengine); @@ -234,8 +251,9 @@ emit_recursive_batch(igt_spin_t *spin, for (i = 0; i < nengine; i++) { execbuf->flags &= ~ENGINE_MASK; - execbuf->flags |= engines[i]; + execbuf->flags |= flags[i]; + igt_debug("eb %u = %llx\n", i, flags[i]); gem_execbuf_wr(fd, execbuf); if (opts->flags & IGT_SPIN_FENCE_OUT) { @@ -308,12 +326,6 @@ igt_spin_batch_factory(int fd, const struct igt_spin_factory *opts) igt_require_gem(fd); - if (opts->engine != ALL_ENGINES) { - gem_require_ring(fd, opts->engine); - if (opts->flags & IGT_SPIN_POLL_RUN) - igt_require(gem_can_store_dword(fd, opts->engine)); - } - spin = spin_batch_create(fd, opts); igt_assert(gem_bo_busy(fd, spin->handle)); -- 2.19.1 _______________________________________________ igt-dev mailing list igt-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/igt-dev
next prev parent reply other threads:[~2019-04-11 12:28 UTC|newest] Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-04-08 16:15 [igt-dev] [PATCH v19 0/6] new engine discovery interface Andi Shyti 2019-04-08 16:15 ` [igt-dev] [PATCH v19 1/6] include/drm-uapi: import i915_drm.h header file Andi Shyti 2019-04-08 16:37 ` Tvrtko Ursulin 2019-04-08 16:47 ` Andi Shyti 2019-04-08 16:56 ` Tvrtko Ursulin 2019-04-08 18:33 ` Antonio Argenziano 2019-04-09 7:33 ` Tvrtko Ursulin 2019-04-08 16:15 ` [igt-dev] [PATCH v19 2/6] lib/i915: add gem_engine_topology library and for_each loop definition Andi Shyti 2019-04-08 16:54 ` Tvrtko Ursulin 2019-04-08 18:21 ` Andi Shyti 2019-04-11 16:03 ` Tvrtko Ursulin 2019-04-11 23:23 ` Andi Shyti 2019-04-08 16:15 ` [igt-dev] [PATCH v19 3/6] lib: igt_gt: add eb flags to class helper Andi Shyti 2019-04-08 16:24 ` Tvrtko Ursulin 2019-04-08 16:15 ` [igt-dev] [PATCH v19 4/6] lib: igt_gt: make gem_engine_can_store_dword() check engine class Andi Shyti 2019-04-08 16:25 ` Tvrtko Ursulin 2019-04-08 16:15 ` [igt-dev] [PATCH v19 5/6] lib: igt_dummyload: use for_each_context_engine() Andi Shyti 2019-04-08 16:28 ` Tvrtko Ursulin 2019-04-08 16:45 ` Andi Shyti 2019-04-11 12:26 ` [RFT i-g-t 6/6] test: perf_pmu: use the gem_engine_topology library Tvrtko Ursulin 2019-04-11 12:26 ` [igt-dev] " Tvrtko Ursulin 2019-04-11 12:32 ` Chris Wilson 2019-04-11 12:32 ` [Intel-gfx] " Chris Wilson 2019-04-11 12:53 ` Tvrtko Ursulin 2019-04-11 12:53 ` Tvrtko Ursulin 2019-04-11 13:50 ` Chris Wilson 2019-04-11 13:50 ` Chris Wilson 2019-04-11 14:37 ` Tvrtko Ursulin 2019-04-11 14:37 ` Tvrtko Ursulin 2019-04-11 13:01 ` Andi Shyti 2019-04-11 13:01 ` [igt-dev] [Intel-gfx] " Andi Shyti 2019-04-11 13:40 ` [igt-dev] " Chris Wilson 2019-04-11 13:40 ` [igt-dev] [Intel-gfx] " Chris Wilson 2019-04-11 14:55 ` [igt-dev] " Andi Shyti 2019-04-11 14:55 ` [igt-dev] [Intel-gfx] " Andi Shyti 2019-04-11 12:28 ` Tvrtko Ursulin [this message] 2019-04-11 12:28 ` [igt-dev] [RFT i-g-t 5/6] lib: igt_dummyload: use for_each_context_engine() Tvrtko Ursulin 2019-04-08 16:15 ` [igt-dev] [PATCH v19 6/6] test: perf_pmu: use the gem_engine_topology library Andi Shyti 2019-04-08 16:35 ` Tvrtko Ursulin 2019-04-08 16:56 ` Andi Shyti 2019-04-08 17:35 ` [igt-dev] ✗ Fi.CI.BAT: failure for new engine discovery interface Patchwork 2019-04-11 14:54 ` [igt-dev] ✗ Fi.CI.BAT: failure for new engine discovery interface (rev3) Patchwork 2019-04-11 18:11 ` [igt-dev] ✗ Fi.CI.BAT: failure for new engine discovery interface (rev4) Patchwork
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20190411122831.1787-1-tvrtko.ursulin@linux.intel.com \ --to=tvrtko.ursulin@linux.intel.com \ --cc=Intel-gfx@lists.freedesktop.org \ --cc=igt-dev@lists.freedesktop.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.