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
>
next prev parent 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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.