[igt-dev] [PATCH i-g-t 18/93] tests/i915/gem_exec_fence: Move the engine data into inter_engine_context

Zbigniew Kempczyński zbigniew.kempczynski at intel.com
Wed Jun 9 07:18:39 UTC 2021


On Tue, Jun 08, 2021 at 11:30:04PM -0500, Jason Ekstrand wrote:
> This will make iteration easier when we switch to intel_ctx_t.
> 
> Signed-off-by: Jason Ekstrand <jason at jlekstrand.net>
> ---
>  tests/i915/gem_exec_fence.c | 79 +++++++++++++++++++------------------
>  1 file changed, 40 insertions(+), 39 deletions(-)
> 
> diff --git a/tests/i915/gem_exec_fence.c b/tests/i915/gem_exec_fence.c
> index c3a650d8..7e80b0aa 100644
> --- a/tests/i915/gem_exec_fence.c
> +++ b/tests/i915/gem_exec_fence.c
> @@ -2347,7 +2347,7 @@ struct inter_engine_context {
>  		uint32_t context;
>  	} iterations[9];
>  
> -	struct intel_engine_data *engines;
> +	struct intel_engine_data engines;
>  
>  	struct inter_engine_batches {
>  		void *increment_bb;
> @@ -2415,7 +2415,7 @@ static void submit_timeline_execbuf(struct inter_engine_context *context,
>  		execbuf->cliprects_ptr = to_user_pointer(&fence_list);
>  	}
>  
> -	execbuf->flags |= context->engines->engines[run_engine_idx].flags;
> +	execbuf->flags |= context->engines.engines[run_engine_idx].flags;
>  
>  	gem_execbuf(context->fd, execbuf);
>  }
> @@ -2660,12 +2660,12 @@ get_cs_timestamp_frequency(int fd)
>  	igt_skip("Kernel with PARAM_CS_TIMESTAMP_FREQUENCY support required\n");
>  }
>  
> -static void setup_timeline_chain_engines(struct inter_engine_context *context, int fd, struct intel_engine_data *engines)
> +static void setup_timeline_chain_engines(struct inter_engine_context *context, int fd)
>  {
>  	memset(context, 0, sizeof(*context));
>  
>  	context->fd = fd;
> -	context->engines = engines;
> +	context->engines = intel_init_engine_list(fd, 0);

Original code verifies there's nengines > 0. I would keep this igt_require().

With that minor nit:

Reviewed-by: Zbigniew Kempczyński <zbigniew.kempczynski at intel.com>

--
Zbigniew

>  
>  	context->wait_context = gem_context_clone_with_engines(fd, 0);
>  	context->wait_timeline = syncobj_create(fd, 0);
> @@ -2685,15 +2685,16 @@ static void setup_timeline_chain_engines(struct inter_engine_context *context, i
>  	gem_write(fd, context->wait_bb_handle, 0,
>  		  context->wait_bb, context->wait_bb_len);
>  
> -	context->batches = calloc(engines->nengines, sizeof(*context->batches));
> -	for (uint32_t e = 0; e < engines->nengines; e++) {
> +	context->batches = calloc(context->engines.nengines,
> +				  sizeof(*context->batches));
> +	for (uint32_t e = 0; e < context->engines.nengines; e++) {
>  		struct inter_engine_batches *batches = &context->batches[e];
>  
>  		batches->timeline = syncobj_create(fd, 0);
>  
>  		build_increment_engine_bb(
>  			batches,
> -			gem_engine_mmio_base(fd, engines->engines[e].name));
> +			gem_engine_mmio_base(fd, context->engines.engines[e].name));
>  		batches->increment_bb_handle = gem_create(fd, 4096);
>  		gem_write(fd, batches->increment_bb_handle, 0,
>  			  batches->increment_bb, batches->increment_bb_len);
> @@ -2706,7 +2707,7 @@ static void setup_timeline_chain_engines(struct inter_engine_context *context, i
>  	{
>  		uint64_t dword = 1;
>  		gem_write(fd, context->engine_counter_object.handle,
> -			  sizeof(dword) * (context->engines->nengines - 1),
> +			  sizeof(dword) * (context->engines.nengines - 1),
>  			  &dword, sizeof(dword));
>  	}
>  }
> @@ -2724,7 +2725,7 @@ static void teardown_timeline_chain_engines(struct inter_engine_context *context
>  	gem_close(context->fd, context->wait_bb_handle);
>  	free(context->wait_bb);
>  
> -	for (uint32_t e = 0; e < context->engines->nengines; e++) {
> +	for (uint32_t e = 0; e < context->engines.nengines; e++) {
>  		struct inter_engine_batches *batches = &context->batches[e];
>  
>  		syncobj_destroy(context->fd, batches->timeline);
> @@ -2734,12 +2735,12 @@ static void teardown_timeline_chain_engines(struct inter_engine_context *context
>  	free(context->batches);
>  }
>  
> -static void test_syncobj_timeline_chain_engines(int fd, struct intel_engine_data *engines)
> +static void test_syncobj_timeline_chain_engines(int fd)
>  {
>  	struct inter_engine_context ctx;
>  	uint64_t *counter_output;
>  
> -	setup_timeline_chain_engines(&ctx, fd, engines);
> +	setup_timeline_chain_engines(&ctx, fd);
>  
>  	/*
>  	 * Delay all the other operations by making them depend on an
> @@ -2748,11 +2749,11 @@ static void test_syncobj_timeline_chain_engines(int fd, struct intel_engine_data
>  	wait_engine(&ctx, 0, ctx.wait_timeline, 1);
>  
>  	for (uint32_t iter = 0; iter < ARRAY_SIZE(ctx.iterations); iter++) {
> -		for (uint32_t engine = 0; engine < engines->nengines; engine++) {
> +		for (uint32_t engine = 0; engine < ctx.engines.nengines; engine++) {
>  			uint32_t prev_prev_engine =
> -				(engines->nengines + engine - 2) % engines->nengines;
> +				(ctx.engines.nengines + engine - 2) % ctx.engines.nengines;
>  			uint32_t prev_engine =
> -				(engines->nengines + engine - 1) % engines->nengines;
> +				(ctx.engines.nengines + engine - 1) % ctx.engines.nengines;
>  			/*
>  			 * Pick up the wait engine semaphore for the
>  			 * first increment, then pick up the previous
> @@ -2778,28 +2779,28 @@ static void test_syncobj_timeline_chain_engines(int fd, struct intel_engine_data
>  
>  	counter_output = gem_mmap__wc(fd, ctx.engine_counter_object.handle, 0, 4096, PROT_READ);
>  
> -	for (uint32_t i = 0; i < ctx.engines->nengines; i++)
> +	for (uint32_t i = 0; i < ctx.engines.nengines; i++)
>  		igt_debug("engine %i (%s)\t= %016"PRIx64"\n", i,
> -			  ctx.engines->engines[i].name, counter_output[i]);
> +			  ctx.engines.engines[i].name, counter_output[i]);
>  
>  	/*
>  	 * Verify that we get the fibonacci number expected (we start
>  	 * at the sequence on the second number : 1).
>  	 */
> -	igt_assert_eq(counter_output[engines->nengines - 1],
> -		      fib(ARRAY_SIZE(ctx.iterations) * engines->nengines + 1));
> +	igt_assert_eq(counter_output[ctx.engines.nengines - 1],
> +		      fib(ARRAY_SIZE(ctx.iterations) * ctx.engines.nengines + 1));
>  
>  	munmap(counter_output, 4096);
>  
>  	teardown_timeline_chain_engines(&ctx);
>  }
>  
> -static void test_syncobj_stationary_timeline_chain_engines(int fd, struct intel_engine_data *engines)
> +static void test_syncobj_stationary_timeline_chain_engines(int fd)
>  {
>  	struct inter_engine_context ctx;
>  	uint64_t *counter_output;
>  
> -	setup_timeline_chain_engines(&ctx, fd, engines);
> +	setup_timeline_chain_engines(&ctx, fd);
>  
>  	/*
>  	 * Delay all the other operations by making them depend on an
> @@ -2808,11 +2809,11 @@ static void test_syncobj_stationary_timeline_chain_engines(int fd, struct intel_
>  	wait_engine(&ctx, 0, ctx.wait_timeline, 1);
>  
>  	for (uint32_t iter = 0; iter < ARRAY_SIZE(ctx.iterations); iter++) {
> -		for (uint32_t engine = 0; engine < engines->nengines; engine++) {
> +		for (uint32_t engine = 0; engine < ctx.engines.nengines; engine++) {
>  			uint32_t prev_prev_engine =
> -				(engines->nengines + engine - 2) % engines->nengines;
> +				(ctx.engines.nengines + engine - 2) % ctx.engines.nengines;
>  			uint32_t prev_engine =
> -				(engines->nengines + engine - 1) % engines->nengines;
> +				(ctx.engines.nengines + engine - 1) % ctx.engines.nengines;
>  			/*
>  			 * Pick up the wait engine semaphore for the
>  			 * first increment, then pick up the previous
> @@ -2844,23 +2845,23 @@ static void test_syncobj_stationary_timeline_chain_engines(int fd, struct intel_
>  
>  	counter_output = gem_mmap__wc(fd, ctx.engine_counter_object.handle, 0, 4096, PROT_READ);
>  
> -	for (uint32_t i = 0; i < ctx.engines->nengines; i++)
> +	for (uint32_t i = 0; i < ctx.engines.nengines; i++)
>  		igt_debug("engine %i (%s)\t= %016"PRIx64"\n", i,
> -			  ctx.engines->engines[i].name, counter_output[i]);
> -	igt_assert_eq(counter_output[engines->nengines - 1],
> -		      fib(ARRAY_SIZE(ctx.iterations) * engines->nengines + 1));
> +			  ctx.engines.engines[i].name, counter_output[i]);
> +	igt_assert_eq(counter_output[ctx.engines.nengines - 1],
> +		      fib(ARRAY_SIZE(ctx.iterations) * ctx.engines.nengines + 1));
>  
>  	munmap(counter_output, 4096);
>  
>  	teardown_timeline_chain_engines(&ctx);
>  }
>  
> -static void test_syncobj_backward_timeline_chain_engines(int fd, struct intel_engine_data *engines)
> +static void test_syncobj_backward_timeline_chain_engines(int fd)
>  {
>  	struct inter_engine_context ctx;
>  	uint64_t *counter_output;
>  
> -	setup_timeline_chain_engines(&ctx, fd, engines);
> +	setup_timeline_chain_engines(&ctx, fd);
>  
>  	/*
>  	 * Delay all the other operations by making them depend on an
> @@ -2869,11 +2870,11 @@ static void test_syncobj_backward_timeline_chain_engines(int fd, struct intel_en
>  	wait_engine(&ctx, 0, ctx.wait_timeline, 1);
>  
>  	for (uint32_t iter = 0; iter < ARRAY_SIZE(ctx.iterations); iter++) {
> -		for (uint32_t engine = 0; engine < engines->nengines; engine++) {
> +		for (uint32_t engine = 0; engine < ctx.engines.nengines; engine++) {
>  			uint32_t prev_prev_engine =
> -				(engines->nengines + engine - 2) % engines->nengines;
> +				(ctx.engines.nengines + engine - 2) % ctx.engines.nengines;
>  			uint32_t prev_engine =
> -				(engines->nengines + engine - 1) % engines->nengines;
> +				(ctx.engines.nengines + engine - 1) % ctx.engines.nengines;
>  			/*
>  			 * Pick up the wait engine semaphore for the
>  			 * first increment, then pick up the previous
> @@ -2905,11 +2906,11 @@ static void test_syncobj_backward_timeline_chain_engines(int fd, struct intel_en
>  
>  	counter_output = gem_mmap__wc(fd, ctx.engine_counter_object.handle, 0, 4096, PROT_READ);
>  
> -	for (uint32_t i = 0; i < ctx.engines->nengines; i++)
> +	for (uint32_t i = 0; i < ctx.engines.nengines; i++)
>  		igt_debug("engine %i (%s)\t= %016"PRIx64"\n", i,
> -			  ctx.engines->engines[i].name, counter_output[i]);
> -	igt_assert_eq(counter_output[engines->nengines - 1],
> -		      fib(ARRAY_SIZE(ctx.iterations) * engines->nengines + 1));
> +			  ctx.engines.engines[i].name, counter_output[i]);
> +	igt_assert_eq(counter_output[ctx.engines.nengines - 1],
> +		      fib(ARRAY_SIZE(ctx.iterations) * ctx.engines.nengines + 1));
>  
>  	munmap(counter_output, 4096);
>  
> @@ -3217,13 +3218,13 @@ igt_main
>  			}
>  
>  			igt_subtest("syncobj-timeline-chain-engines")
> -				test_syncobj_timeline_chain_engines(i915, &engines);
> +				test_syncobj_timeline_chain_engines(i915);
>  
>  			igt_subtest("syncobj-stationary-timeline-chain-engines")
> -				test_syncobj_stationary_timeline_chain_engines(i915, &engines);
> +				test_syncobj_stationary_timeline_chain_engines(i915);
>  
>  			igt_subtest("syncobj-backward-timeline-chain-engines")
> -				test_syncobj_backward_timeline_chain_engines(i915, &engines);
> +				test_syncobj_backward_timeline_chain_engines(i915);
>  		}
>  
>  		igt_fixture {
> -- 
> 2.31.1
> 
> _______________________________________________
> igt-dev mailing list
> igt-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/igt-dev


More information about the igt-dev mailing list