[igt-dev] [PATCH i-g-t 27/77] tests/i915/gem_ctx_shared: Convert to intel_ctx_t

Dixit, Ashutosh ashutosh.dixit at intel.com
Thu Jun 17 05:22:00 UTC 2021


On Mon, 14 Jun 2021 09:36:42 -0700, Jason Ekstrand wrote:
>
> @@ -347,11 +368,12 @@ static void single_timeline(int i915)
>	 * to, it reports the same timeline name and fence context. However,
>	 * the fence context is not reported through the sync_fence_info.
>	 */
> -	spin->execbuf.rsvd1 =
> -		gem_context_clone(i915, 0, 0,
> -				  I915_CONTEXT_CREATE_FLAGS_SINGLE_TIMELINE);
> +	st_cfg = *cfg;
> +	st_cfg.flags |= I915_CONTEXT_CREATE_FLAGS_SINGLE_TIMELINE;
> +	ctx = intel_ctx_create(i915, &st_cfg);
> +	spin->execbuf.rsvd1 = ctx->id;

It's probably the same but could've passed ctx into igt_spin_new just above.

> @@ -403,27 +428,29 @@ static void exec_single_timeline(int i915, unsigned int engine)
>	igt_require(spin);
>	igt_assert_eq(nop_sync(i915, ctx, engine, NSEC_PER_SEC), 0);
>	igt_spin_free(i915, spin);
> +	intel_ctx_destroy(i915, ctx);
>
>	/*
>	 * But if we create a context with just a single shared timeline,
>	 * then it will block waiting for the earlier requests on the
>	 * other engines.
>	 */
> -	ctx = gem_context_clone(i915, 0, 0,
> -				I915_CONTEXT_CREATE_FLAGS_SINGLE_TIMELINE);
> +	st_cfg = *cfg;
> +	st_cfg.flags |= I915_CONTEXT_CREATE_FLAGS_SINGLE_TIMELINE;
> +	ctx = intel_ctx_create(i915, &st_cfg);
>	spin = NULL;
> -	__for_each_physical_engine(i915, e) {
> +	for_each_ctx_cfg_engine(i915, cfg, e) {

Preferably &st_cfg, ok otherwise too.

> @@ -592,22 +620,19 @@ static void independent(int i915,
>	igt_require_f(mmio_base, "mmio base not known\n");
>
>	for (int n = 0; n < ARRAY_SIZE(spin); n++) {
> -		const struct igt_spin_factory opts = {
> -			.ctx_id = create_highest_priority(i915),
> -			.engine = e->flags,
> -		};
> -		spin[n] = __igt_spin_factory(i915, &opts);
> -		gem_context_destroy(i915, opts.ctx_id);
> +		const intel_ctx_t *ctx = create_highest_priority(i915, cfg);
> +		spin[n] = __igt_spin_new(i915, .ctx = ctx, .engine = e->flags);
> +		intel_ctx_destroy(i915, ctx);
>	}
>
>	fence = igt_cork_plug(&cork, i915);
>	for (int i = 0; i < ARRAY_SIZE(priorities); i++) {
> -		uint32_t ctx = gem_queue_create(i915);
> -		gem_context_set_priority(i915, ctx, priorities[i]);
> +		const intel_ctx_t *ctx = create_highest_priority(i915, cfg);

Don't we need gem_queue_create equivalent here (I915_CONTEXT_CLONE_VM and
I915_CONTEXT_CREATE_FLAGS_SINGLE_TIMELINE)?

> -static void reorder(int i915, unsigned ring, unsigned flags)
> +static void reorder(int i915, const intel_ctx_cfg_t *cfg,
> +		    unsigned ring, unsigned flags)
>  #define EQUAL 1
>  {
>	IGT_CORK_HANDLE(cork);
>	uint32_t scratch;
>	uint32_t *ptr;
> -	uint32_t ctx[2];
> +	const intel_ctx_t *ctx[2];
>	uint32_t plug;
>
> -	ctx[LO] = gem_queue_create(i915);
> -	gem_context_set_priority(i915, ctx[LO], MIN_PRIO);
> +	ctx[LO] = intel_ctx_create(i915, cfg);
> +	gem_context_set_priority(i915, ctx[LO]->id, MIN_PRIO);
>
> -	ctx[HI] = gem_queue_create(i915);
> -	gem_context_set_priority(i915, ctx[HI], flags & EQUAL ? MIN_PRIO : 0);
> +	ctx[HI] = intel_ctx_create(i915, cfg);
> +	gem_context_set_priority(i915, ctx[HI]->id, flags & EQUAL ? MIN_PRIO : 0);

Again, don't we need gem_queue_create equivalent here?

> -static void promotion(int i915, unsigned ring)
> +static void promotion(int i915, const intel_ctx_cfg_t *cfg, unsigned ring)
>  {
>	IGT_CORK_HANDLE(cork);
>	uint32_t result, dep;
>	uint32_t *ptr;
> -	uint32_t ctx[3];
> +	const intel_ctx_t *ctx[3];
>	uint32_t plug;
>
> -	ctx[LO] = gem_queue_create(i915);
> -	gem_context_set_priority(i915, ctx[LO], MIN_PRIO);
> +	ctx[LO] = intel_ctx_create(i915, cfg);
> +	gem_context_set_priority(i915, ctx[LO]->id, MIN_PRIO);
>
> -	ctx[HI] = gem_queue_create(i915);
> -	gem_context_set_priority(i915, ctx[HI], 0);
> +	ctx[HI] = intel_ctx_create(i915, cfg);
> +	gem_context_set_priority(i915, ctx[HI]->id, 0);
>
> -	ctx[NOISE] = gem_queue_create(i915);
> -	gem_context_set_priority(i915, ctx[NOISE], MIN_PRIO/2);
> +	ctx[NOISE] = intel_ctx_create(i915, cfg);
> +	gem_context_set_priority(i915, ctx[NOISE]->id, MIN_PRIO/2);

Again, don't we need gem_queue_create equivalent here?

> @@ -761,16 +788,16 @@ static void smoketest(int i915, unsigned ring, unsigned timeout)
>	scratch = gem_create(i915, 4096);
>	igt_fork(child, ncpus) {
>		unsigned long count = 0;
> -		uint32_t ctx;
> +		const intel_ctx_t *ctx;
>
>		hars_petruska_f54_1_random_perturb(child);
>
> -		ctx = gem_queue_create(i915);
> +		ctx = intel_ctx_create(i915, cfg);

Again, don't we need gem_queue_create equivalent here?


More information about the igt-dev mailing list