[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