Igt-dev Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Francois Dugast <francois.dugast@intel.com>
To: "Zbigniew Kempczyński" <zbigniew.kempczynski@intel.com>
Cc: <igt-dev@lists.freedesktop.org>
Subject: Re: [PATCH i-g-t v3 10/11] tests/xe_copy_basic: add mem-copy matrix subtests
Date: Wed, 28 May 2025 10:26:26 +0200	[thread overview]
Message-ID: <aDbIsqKR-e2Pk9L-@fdugast-desk> (raw)
In-Reply-To: <20250523080126.75295-11-zbigniew.kempczynski@intel.com>

On Fri, May 23, 2025 at 10:01:25AM +0200, Zbigniew Kempczyński wrote:
> Verify intel_blt is able to properly copy matrix from one buffer
> to another.
> 
> Cc: Francois Dugast <francois.dugast@intel.com>
> Signed-off-by: Zbigniew Kempczyński <zbigniew.kempczynski@intel.com>
> ---
>  tests/intel/xe_copy_basic.c | 52 +++++++++++++++++++++++++++++++++----
>  1 file changed, 47 insertions(+), 5 deletions(-)
> 
> diff --git a/tests/intel/xe_copy_basic.c b/tests/intel/xe_copy_basic.c
> index 404fe7f50a..be400e3175 100644
> --- a/tests/intel/xe_copy_basic.c
> +++ b/tests/intel/xe_copy_basic.c
> @@ -62,6 +62,19 @@ struct rect {
>   * @17: 17
>   */
>  
> +/**
> + *
> + * SUBTEST: mem-matrix-copy-%s
> + * Description: Test validates MEM_COPY command, it takes various
> + *              parameters needed for the filling batch buffer for MEM_COPY command
> + *              with size %arg[1].

Please see comment on test description in patch #8.

With that:

    Reviewed-by: Francois Dugast <francois.dugast@intel.com>

> + * Test category: functionality test
> + *
> + * arg[1]:
> + * @2x2: 2x2
> + * @200x127: 200x127
> + */
> +
>  static void
>  mem_copy(int fd, uint32_t src_handle, uint32_t dst_handle, const intel_ctx_t *ctx,
>  	 enum blt_memop_type type, enum blt_memop_mode mode,
> @@ -79,13 +92,17 @@ mem_copy(int fd, uint32_t src_handle, uint32_t dst_handle, const intel_ctx_t *ct
>  	uint8_t *psrc, *pdst;
>  	int result, i;
>  
> +	igt_debug("size: %u, pitch: %u, width: %u, height: %u (type: %d, mode: %d)\n",
> +		  size, pitch, width, height, type, mode);
> +
>  	bb = xe_bo_create(fd, 0, bb_size, region, 0);
>  
>  	blt_mem_copy_init(fd, &mem, mode, type);
> -	blt_set_mem_object(&mem.src, src_handle, size, width, width, height,
> +	blt_set_mem_object(&mem.src, src_handle, size, pitch, width, height,
>  			   region, src_mocs, DEFAULT_PAT_INDEX, COMPRESSION_DISABLED);
> -	blt_set_mem_object(&mem.dst, dst_handle, size, width, width, height,
> +	blt_set_mem_object(&mem.dst, dst_handle, size, pitch, width, height,
>  			   region, dst_mocs, DEFAULT_PAT_INDEX, COMPRESSION_DISABLED);
> +
>  	mem.src.ptr = xe_bo_map(fd, src_handle, size);
>  	mem.dst.ptr = xe_bo_map(fd, dst_handle, size);
>  	psrc = (uint8_t *) mem.src.ptr;
> @@ -112,8 +129,20 @@ mem_copy(int fd, uint32_t src_handle, uint32_t dst_handle, const intel_ctx_t *ct
>  				break;
>  			}
>  		}
> -	} else {
> +	} else if (type == TYPE_LINEAR && mode == MODE_PAGE) {
>  		result = memcmp(psrc, pdst, pitch << 8);
> +	} else {
> +		result = 0;
> +
> +		for (i = 0; i < pitch * height; i++) {
> +			if (i % pitch > width && pdst[i] != 0) {
> +				result = -1;
> +				break;
> +			} else if (i % pitch < width && psrc[i] != pdst[i]) {
> +				result = -1;
> +				break;
> +			}
> +		}
>  	}
>  
>  	intel_allocator_bind(ahnd, 0, 0);
> @@ -190,8 +219,10 @@ static void copy_test(int fd, struct rect *rect, enum blt_cmd_type cmd, uint32_t
>  	ctx = intel_ctx_xe(fd, vm, exec_queue, 0, 0, 0);
>  
>  	if (cmd == MEM_COPY)
> -		mem_copy(fd, src_handle, dst_handle, ctx, TYPE_LINEAR, rect->mode,
> -			 bo_size, pitch, rect->width, rect->height, region);
> +		mem_copy(fd, src_handle, dst_handle, ctx,
> +			 rect->height > 1 ? TYPE_MATRIX : TYPE_LINEAR,
> +			 rect->mode, bo_size, pitch,
> +			 rect->width, rect->height, region);
>  	else if (cmd == MEM_SET)
>  		mem_set(fd, dst_handle, ctx, bo_size, rect->width, 1, MEM_FILL, region);
>  
> @@ -214,6 +245,7 @@ igt_main
>  				 { 0, 0x8fffe, 1 } };
>  	struct rect page[] = { { 0, 1, 1, MODE_PAGE },
>  			       { 0, 17, 1, MODE_PAGE }};
> +	struct rect matrix[] = { { 4, 2, 2 }, { 256, 200, 127 } };
>  
>  	igt_fixture {
>  		fd = drm_open_driver(DRIVER_XE);
> @@ -243,6 +275,16 @@ igt_main
>  		}
>  	}
>  
> +	for (int i = 0; i < ARRAY_SIZE(matrix); i++) {
> +		igt_subtest_f("mem-matrix-copy-%ux%u", matrix[i].width, matrix[i].height) {
> +			igt_require(blt_has_mem_copy(fd));
> +			for_each_variation_r(regions, 1, set) {
> +				region = igt_collection_get_value(regions, 0);
> +				copy_test(fd, &matrix[i], MEM_COPY, region);
> +			}
> +		}
> +	}
> +
>  	for (int i = 0; i < ARRAY_SIZE(linear); i++) {
>  		igt_subtest_f("mem-set-linear-0x%x", linear[i].width) {
>  			igt_require(blt_has_mem_set(fd));
> -- 
> 2.43.0
> 

  reply	other threads:[~2025-05-28  8:26 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-05-23  8:01 [PATCH i-g-t v3 00/11] Improve mem-copy/mem-set lib and tests Zbigniew Kempczyński
2025-05-23  8:01 ` [PATCH i-g-t v3 01/11] lib/intel_cmds_info: rename M to TYPE in blt_memop_type Zbigniew Kempczyński
2025-05-23  8:01 ` [PATCH i-g-t v3 02/11] lib/intel_blt: separate mem-copy and mem-set Zbigniew Kempczyński
2025-05-23  8:01 ` [PATCH i-g-t v3 03/11] lib/intel_cmds_info: add blt_memop_mode (byte/page) Zbigniew Kempczyński
2025-05-27 12:19   ` Francois Dugast
2025-05-23  8:01 ` [PATCH i-g-t v3 04/11] lib/intel_blt: add emit batchbuffer end Zbigniew Kempczyński
2025-05-23  8:01 ` [PATCH i-g-t v3 05/11] lib/intel_blt: use struct instead of inline coding Zbigniew Kempczyński
2025-05-23  8:01 ` [PATCH i-g-t v3 06/11] tests/xe_copy_basic: replace size to rect which keeps objects geometry Zbigniew Kempczyński
2025-05-27 19:15   ` Francois Dugast
2025-05-28 19:28     ` Zbigniew Kempczyński
2025-05-23  8:01 ` [PATCH i-g-t v3 07/11] tests/xe_copy_basic: add testcase with large buffer size Zbigniew Kempczyński
2025-05-27 19:16   ` Francois Dugast
2025-05-23  8:01 ` [PATCH i-g-t v3 08/11] tests/xe_copy_basic: add subtest to verify mem-copy in pages Zbigniew Kempczyński
2025-05-27 19:23   ` Francois Dugast
2025-05-30  6:10     ` Zbigniew Kempczyński
2025-05-23  8:01 ` [PATCH i-g-t v3 09/11] lib/intel_blt: add support for matrix mem-copy Zbigniew Kempczyński
2025-05-28  8:23   ` Francois Dugast
2025-05-30  6:17     ` Zbigniew Kempczyński
2025-05-23  8:01 ` [PATCH i-g-t v3 10/11] tests/xe_copy_basic: add mem-copy matrix subtests Zbigniew Kempczyński
2025-05-28  8:26   ` Francois Dugast [this message]
2025-05-23  8:01 ` [PATCH i-g-t v3 11/11] lib/intel_blt: add mem-copy debug facility Zbigniew Kempczyński
2025-05-28  8:29   ` Francois Dugast
2025-05-23 10:45 ` ✗ i915.CI.BAT: failure for Improve mem-copy/mem-set lib and tests (rev2) Patchwork
2025-05-23 11:36 ` ✓ Xe.CI.BAT: success " Patchwork
2025-05-23 19:54 ` ✓ Xe.CI.Full: " Patchwork

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=aDbIsqKR-e2Pk9L-@fdugast-desk \
    --to=francois.dugast@intel.com \
    --cc=igt-dev@lists.freedesktop.org \
    --cc=zbigniew.kempczynski@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox