From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pg1-x529.google.com (mail-pg1-x529.google.com [IPv6:2607:f8b0:4864:20::529]) by gabe.freedesktop.org (Postfix) with ESMTPS id 2A82689F45 for ; Mon, 14 Jun 2021 16:39:19 +0000 (UTC) Received: by mail-pg1-x529.google.com with SMTP id m2so2382017pgk.7 for ; Mon, 14 Jun 2021 09:39:19 -0700 (PDT) From: Jason Ekstrand Date: Mon, 14 Jun 2021 11:38:41 -0500 Message-Id: <20210614163902.366168-7-jason@jlekstrand.net> In-Reply-To: <20210614163704.365989-1-jason@jlekstrand.net> References: <20210614163704.365989-1-jason@jlekstrand.net> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t 56/77] tests/i915/gem_ctx_engines: Use better engine iteration List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: igt-dev@lists.freedesktop.org List-ID: Signed-off-by: Jason Ekstrand --- tests/i915/gem_ctx_engines.c | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/tests/i915/gem_ctx_engines.c b/tests/i915/gem_ctx_engines.c index ac03206ce..531495c39 100644 --- a/tests/i915/gem_ctx_engines.c +++ b/tests/i915/gem_ctx_engines.c @@ -444,7 +444,7 @@ static void execute_allforone(int i915) i = 0; memset(&engines, 0, sizeof(engines)); - __for_each_physical_engine(i915, e) { + for_each_physical_engine(i915, e) { engine_class(&engines, i) = e->class; engine_instance(&engines, i) = e->instance; i++; @@ -453,7 +453,7 @@ static void execute_allforone(int i915) gem_context_set_param(i915, ¶m); i = 0; - __for_each_physical_engine(i915, e) { + for_each_physical_engine(i915, e) { struct drm_i915_gem_busy busy = {}; igt_spin_t *spin; @@ -490,7 +490,8 @@ static bool has_cs_timestamp(const struct intel_execution_engine2 *e, int gen) return e->class == I915_ENGINE_CLASS_RENDER; } -static void independent(int i915, const struct intel_execution_engine2 *e) +static void independent(int i915, const intel_ctx_t *base_ctx, + const struct intel_execution_engine2 *e) { #define RCS_TIMESTAMP (mmio_base + 0x358) const unsigned int gen = intel_gen(intel_get_drm_devid(i915)); @@ -498,7 +499,6 @@ static void independent(int i915, const struct intel_execution_engine2 *e) const int has_64bit_reloc = gen >= 8; I915_DEFINE_CONTEXT_PARAM_ENGINES(engines, I915_EXEC_RING_MASK + 1); struct drm_i915_gem_context_param param = { - .ctx_id = gem_context_clone_with_engines(i915, 0), .param = I915_CONTEXT_PARAM_ENGINES, .value = to_user_pointer(&engines), .size = sizeof(engines), @@ -518,7 +518,7 @@ static void independent(int i915, const struct intel_execution_engine2 *e) struct drm_i915_gem_execbuffer2 execbuf = { .buffers_ptr = to_user_pointer(&results), .buffer_count = 1, - .rsvd1 = param.ctx_id, + .rsvd1 = base_ctx->id, .flags = e->flags, }; gem_write(i915, results.handle, 0, &bbe, sizeof(bbe)); @@ -531,6 +531,7 @@ static void independent(int i915, const struct intel_execution_engine2 *e) engine_class(&engines, i) = e->class; engine_instance(&engines, i) = e->instance; } + param.ctx_id = gem_context_create(i915); gem_context_set_param(i915, ¶m); gem_set_caching(i915, results.handle, I915_CACHING_CACHED); @@ -590,19 +591,20 @@ static void independent(int i915, const struct intel_execution_engine2 *e) gem_context_destroy(i915, param.ctx_id); } -static void independent_all(int i915) +static void independent_all(int i915, const intel_ctx_t *ctx) { const unsigned int gen = intel_gen(intel_get_drm_devid(i915)); const struct intel_execution_engine2 *e; igt_spin_t *spin = NULL; - __for_each_physical_engine(i915, e) { + for_each_ctx_engine(i915, ctx, e) { if (spin) { spin->execbuf.flags &= ~63; spin->execbuf.flags |= e->flags; gem_execbuf(i915, &spin->execbuf); } else { - spin = igt_spin_new(i915, .engine = e->flags, + spin = igt_spin_new(i915, .ctx = ctx, + .engine = e->flags, .flags = (IGT_SPIN_NO_PREEMPTION | IGT_SPIN_POLL_RUN)); } @@ -610,7 +612,7 @@ static void independent_all(int i915) igt_require(spin); igt_spin_busywait_until_started(spin); - __for_each_physical_engine(i915, e) { + for_each_ctx_engine(i915, ctx, e) { if (!gem_engine_mmio_base(i915, e->name)) continue; @@ -618,7 +620,7 @@ static void independent_all(int i915) continue; igt_fork(child, 1) - independent(i915, e); + independent(i915, ctx, e); } sched_yield(); igt_spin_free(i915, spin); @@ -727,14 +729,18 @@ igt_main execute_allforone(i915); igt_subtest_with_dynamic("independent") { + const intel_ctx_t *ctx; + igt_require(gem_scheduler_enabled(i915)); igt_require(intel_gen(intel_get_drm_devid(i915) >= 6)); - __for_each_physical_engine(i915, e) { + + ctx = intel_ctx_create_all_physical(i915); + for_each_ctx_engine(i915, ctx, e) { igt_dynamic_f("%s", e->name) - independent(i915, e); + independent(i915, ctx, e); } igt_dynamic("all") - independent_all(i915); + independent_all(i915, ctx); } igt_subtest("libapi") -- 2.31.1 _______________________________________________ igt-dev mailing list igt-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/igt-dev