[PATCH 05/13] tests/intel/xe_oa: Use same render copy width and height across tests

Dixit, Ashutosh ashutosh.dixit at intel.com
Sat Feb 22 02:48:55 UTC 2025


On Fri, 14 Feb 2025 17:06:20 -0800, Umesh Nerlige Ramappa wrote:
>
> Use the same width and height for render copy frame across tests.

Use the same width and height for render copy frame to make execution times
uniform across tests.

>
> Signed-off-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa at intel.com>
> ---
>  tests/intel/xe_oa.c | 39 +++++++++++++++++++--------------------
>  1 file changed, 19 insertions(+), 20 deletions(-)
>
> diff --git a/tests/intel/xe_oa.c b/tests/intel/xe_oa.c
> index 7e40e9257..aaf92308a 100644
> --- a/tests/intel/xe_oa.c
> +++ b/tests/intel/xe_oa.c
> @@ -303,6 +303,7 @@ static uint64_t oa_exponent_default;
>  static size_t default_oa_buffer_size;
>  static struct intel_mmio_data mmio_data;
>  static igt_render_copyfunc_t render_copy;
> +static uint32_t rc_width, rc_height;
>
>  static struct intel_xe_perf_metric_set *metric_set(const struct drm_xe_engine_class_instance *hwe)
>  {
> @@ -1089,6 +1090,8 @@ init_sys_info(void)
>
>	intel_xe_perf_load_perf_configs(intel_xe_perf, drm_fd);
>
> +	rc_width = 1920;
> +	rc_height = 1080;

If this increases the execution time for the tests, we could go with the
smaller 800x600 size?

But otherwise this is:

Reviewed-by: Ashutosh Dixit <ashutosh.dixit at intel.com>


>	oa_exponent_default = max_oa_exponent_for_period_lte(1000000);
>
>	default_oa_buffer_size = get_default_oa_buffer_size(drm_fd);
> @@ -1608,7 +1611,7 @@ static void load_helper_run(enum load load)
>
>		while (!lh.exit) {
>			render_copy(lh.ibb,
> -				    &lh.src, 0, 0, 1920, 1080,
> +				    &lh.src, 0, 0, rc_width, rc_height,
>				    &lh.dst, 0, 0);
>
>			intel_bb_sync(lh.ibb);
> @@ -1645,8 +1648,8 @@ static void load_helper_init(void)
>
>	lh.ibb = intel_bb_create_with_context(drm_fd, lh.context_id, lh.vm, NULL, BATCH_SZ);
>
> -	scratch_buf_init(lh.bops, &lh.dst, 1920, 1080, 0);
> -	scratch_buf_init(lh.bops, &lh.src, 1920, 1080, 0);
> +	scratch_buf_init(lh.bops, &lh.dst, rc_width, rc_height, 0);
> +	scratch_buf_init(lh.bops, &lh.src, rc_width, rc_height, 0);
>  }
>
>  static void load_helper_fini(void)
> @@ -3112,8 +3115,6 @@ static void single_ctx_helper(struct drm_xe_engine_class_instance *hwe)
>	uint64_t delta_ts64, delta_oa32;
>	uint64_t delta_ts64_ns, delta_oa32_ns;
>	uint64_t delta_delta;
> -	int width = 800;
> -	int height = 600;
>  #define INVALID_CTX_ID 0xffffffff
>	uint32_t ctx0_id = INVALID_CTX_ID;
>	uint32_t ctx1_id = INVALID_CTX_ID;
> @@ -3125,8 +3126,8 @@ static void single_ctx_helper(struct drm_xe_engine_class_instance *hwe)
>	bops = buf_ops_create(drm_fd);
>
>	for (int i = 0; i < ARRAY_SIZE(src); i++) {
> -		scratch_buf_init(bops, &src[i], width, height, 0xff0000ff);
> -		scratch_buf_init(bops, &dst[i], width, height, 0x00ff00ff);
> +		scratch_buf_init(bops, &src[i], rc_width, rc_height, 0xff0000ff);
> +		scratch_buf_init(bops, &dst[i], rc_width, rc_height, 0x00ff00ff);
>	}
>
>	vm = xe_vm_create(drm_fd, 0, 0);
> @@ -3139,7 +3140,7 @@ static void single_ctx_helper(struct drm_xe_engine_class_instance *hwe)
>
>	/* Submit some early, unmeasured, work to the context we want */
>	render_copy(ibb0,
> -		    &src[0], 0, 0, width, height,
> +		    &src[0], 0, 0, rc_width, rc_height,
>		    &dst[0], 0, 0);
>
>	/* Initialize the context parameter to the perf open ioctl here */
> @@ -3175,7 +3176,7 @@ static void single_ctx_helper(struct drm_xe_engine_class_instance *hwe)
>
>	/* This is the work/context that is measured for counter increments */
>	render_copy(ibb0,
> -		    &src[0], 0, 0, width, height,
> +		    &src[0], 0, 0, rc_width, rc_height,
>		    &dst[0], 0, 0);
>	intel_bb_flush_render(ibb0);
>
> @@ -3200,11 +3201,11 @@ static void single_ctx_helper(struct drm_xe_engine_class_instance *hwe)
>	 * context1
>	 */
>	render_copy(ibb1,
> -		    &src[1], 0, 0, width, height,
> +		    &src[1], 0, 0, rc_width, rc_height,
>		    &dst[1], 0, 0);
>
>	render_copy(ibb1,
> -		    &src[2], 0, 0, width, height,
> +		    &src[2], 0, 0, rc_width, rc_height,
>		    &dst[2], 0, 0);
>	intel_bb_flush_render(ibb1);
>
> @@ -3325,7 +3326,7 @@ static void single_ctx_helper(struct drm_xe_engine_class_instance *hwe)
>	igt_debug("n samples written = %"PRIu64"/%"PRIu64" (%ix%i)\n",
>		  accumulator.deltas[2 + 21],
>		  accumulator.deltas[2 + 26],
> -		  width, height);
> +		  rc_width, rc_height);
>	accumulator_print(&accumulator, "filtered");
>
>	/* Verify that the work actually happened by comparing the src
> @@ -3334,7 +3335,7 @@ static void single_ctx_helper(struct drm_xe_engine_class_instance *hwe)
>	buf_map(drm_fd, &src[0], false);
>	buf_map(drm_fd, &dst[0], false);
>
> -	ret = memcmp(src[0].ptr, dst[0].ptr, 4 * width * height);
> +	ret = memcmp(src[0].ptr, dst[0].ptr, 4 * rc_width * rc_height);
>	intel_buf_unmap(&src[0]);
>	intel_buf_unmap(&dst[0]);
>
> @@ -3350,9 +3351,9 @@ static void single_ctx_helper(struct drm_xe_engine_class_instance *hwe)
>	/* Check that this test passed. The test measures the number of 2x2
>	 * samples written to the render target using the counter A26. For
>	 * OAR, this counter will only have increments relevant to this specific
> -	 * context. The value equals the width * height of the rendered work.
> +	 * context. The value equals the rc_width * rc_height of the rendered work.
>	 */
> -	igt_assert_eq(accumulator.deltas[2 + 26], width * height);
> +	igt_assert_eq(accumulator.deltas[2 + 26], rc_width * rc_height);
>
>   skip_check:
>	/* Clean up */
> @@ -4006,8 +4007,6 @@ __test_mmio_triggered_reports(struct drm_xe_engine_class_instance *hwe)
>	struct buf_ops *bops;
>	struct intel_bb *ibb;
>	uint32_t context, vm;
> -	int height = 600;
> -	int width = 800;
>	uint8_t *buf;
>
>	bops = buf_ops_create(drm_fd);
> @@ -4019,8 +4018,8 @@ __test_mmio_triggered_reports(struct drm_xe_engine_class_instance *hwe)
>	memset(dst_buf->ptr, 0, 4096);
>	intel_buf_unmap(dst_buf);
>
> -	scratch_buf_init(bops, &src, width, height, 0xff0000ff);
> -	scratch_buf_init(bops, &dst, width, height, 0x00ff00ff);
> +	scratch_buf_init(bops, &src, rc_width, rc_height, 0xff0000ff);
> +	scratch_buf_init(bops, &dst, rc_width, rc_height, 0x00ff00ff);
>
>	vm = xe_vm_create(drm_fd, 0, 0);
>	context = xe_exec_queue_create(drm_fd, vm, hwe, 0);
> @@ -4039,7 +4038,7 @@ __test_mmio_triggered_reports(struct drm_xe_engine_class_instance *hwe)
>
>	if (render_copy)
>		render_copy(ibb,
> -			    &src, 0, 0, width, height,
> +			    &src, 0, 0, rc_width, rc_height,
>			    &dst, 0, 0);
>
>	emit_mmio_triggered_report(ibb, 0xc0ffee22);
> --
> 2.34.1
>


More information about the igt-dev mailing list