From: Daniel Vetter <daniel@ffwll.ch>
To: Jesse Barnes <jbarnes@virtuousgeek.org>
Cc: intel-gfx@lists.freedesktop.org
Subject: Re: [PATCH 11/18] tests/gem_tiled_pread/pwrite: mark normal tests as basic
Date: Fri, 14 Aug 2015 14:41:22 +0200 [thread overview]
Message-ID: <20150814124122.GJ17734@phenom.ffwll.local> (raw)
In-Reply-To: <1439497901-14310-11-git-send-email-jbarnes@virtuousgeek.org>
On Thu, Aug 13, 2015 at 01:31:34PM -0700, Jesse Barnes wrote:
> These simple tests should always pass.
>
> Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
Imo shouldn't be part of the basic set, they thrash the machine quite
badly. Especially gem_tiled_pread_pwrite thrashes all of memory, so nack
on that one from me. At least until we've implemented the speedup with
memlock that's been in JIRA since years ...
For gem_tiled_pread, why not just rename to gem_tiled_pread_basic?
-Daniel
> ---
> tests/gem_tiled_pread.c | 167 +++++++++++++++++++++--------------------
> tests/gem_tiled_pread_pwrite.c | 48 ++++++------
> 2 files changed, 112 insertions(+), 103 deletions(-)
>
> diff --git a/tests/gem_tiled_pread.c b/tests/gem_tiled_pread.c
> index fdc5173..92bb649 100644
> --- a/tests/gem_tiled_pread.c
> +++ b/tests/gem_tiled_pread.c
> @@ -112,7 +112,7 @@ calculate_expected(int offset)
> return (base_y + tile_y) * WIDTH + base_x + tile_x;
> }
>
> -igt_simple_main
> +igt_main
> {
> int fd;
> int i, iter = 100;
> @@ -120,96 +120,101 @@ igt_simple_main
> uint32_t handle;
> uint32_t devid;
>
> - fd = drm_open_any();
> + igt_fixture {
> + fd = drm_open_any();
>
> - handle = create_bo(fd);
> - gem_get_tiling(fd, handle, &tiling, &swizzle);
> + handle = create_bo(fd);
> + gem_get_tiling(fd, handle, &tiling, &swizzle);
>
> - devid = intel_get_drm_devid(fd);
> -
> - if (IS_GEN2(devid)) {
> - tile_height = 16;
> - tile_width = 128;
> - tile_size = 2048;
> - } else {
> - tile_height = 8;
> - tile_width = 512;
> - tile_size = PAGE_SIZE;
> + devid = intel_get_drm_devid(fd);
> }
>
> - /* Read a bunch of random subsets of the data and check that they come
> - * out right.
> - */
> - for (i = 0; i < iter; i++) {
> - int size = WIDTH * HEIGHT * 4;
> - int offset = (random() % size) & ~3;
> - int len = (random() % size) & ~3;
> - int j;
> + igt_subtest("basic") {
>
> - if (len == 0)
> - len = 4;
> + if (IS_GEN2(devid)) {
> + tile_height = 16;
> + tile_width = 128;
> + tile_size = 2048;
> + } else {
> + tile_height = 8;
> + tile_width = 512;
> + tile_size = PAGE_SIZE;
> + }
>
> - if (offset + len > size)
> - len = size - offset;
> + /* Read a bunch of random subsets of the data and check that they come
> + * out right.
> + */
> + for (i = 0; i < iter; i++) {
> + int size = WIDTH * HEIGHT * 4;
> + int offset = (random() % size) & ~3;
> + int len = (random() % size) & ~3;
> + int j;
>
> - if (i == 0) {
> - offset = 0;
> - len = size;
> - }
> + if (len == 0)
> + len = 4;
>
> - gem_read(fd, handle, offset, linear, len);
> + if (offset + len > size)
> + len = size - offset;
>
> - /* Translate from offsets in the read buffer to the swizzled
> - * address that it corresponds to. This is the opposite of
> - * what Mesa does (calculate offset to be read given the linear
> - * offset it's looking for).
> - */
> - for (j = offset; j < offset + len; j += 4) {
> - uint32_t expected_val, found_val;
> - int swizzled_offset;
> - const char *swizzle_str;
> -
> - switch (swizzle) {
> - case I915_BIT_6_SWIZZLE_NONE:
> - swizzled_offset = j;
> - swizzle_str = "none";
> - break;
> - case I915_BIT_6_SWIZZLE_9:
> - swizzled_offset = j ^
> - swizzle_bit(9, j);
> - swizzle_str = "bit9";
> - break;
> - case I915_BIT_6_SWIZZLE_9_10:
> - swizzled_offset = j ^
> - swizzle_bit(9, j) ^
> - swizzle_bit(10, j);
> - swizzle_str = "bit9^10";
> - break;
> - case I915_BIT_6_SWIZZLE_9_11:
> - swizzled_offset = j ^
> - swizzle_bit(9, j) ^
> - swizzle_bit(11, j);
> - swizzle_str = "bit9^11";
> - break;
> - case I915_BIT_6_SWIZZLE_9_10_11:
> - swizzled_offset = j ^
> - swizzle_bit(9, j) ^
> - swizzle_bit(10, j) ^
> - swizzle_bit(11, j);
> - swizzle_str = "bit9^10^11";
> - break;
> - default:
> - igt_assert_f(0, "Bad swizzle bits; %d\n",
> - swizzle);
> + if (i == 0) {
> + offset = 0;
> + len = size;
> + }
> +
> + gem_read(fd, handle, offset, linear, len);
> +
> + /* Translate from offsets in the read buffer to the swizzled
> + * address that it corresponds to. This is the opposite of
> + * what Mesa does (calculate offset to be read given the linear
> + * offset it's looking for).
> + */
> + for (j = offset; j < offset + len; j += 4) {
> + uint32_t expected_val, found_val;
> + int swizzled_offset;
> + const char *swizzle_str;
> +
> + switch (swizzle) {
> + case I915_BIT_6_SWIZZLE_NONE:
> + swizzled_offset = j;
> + swizzle_str = "none";
> + break;
> + case I915_BIT_6_SWIZZLE_9:
> + swizzled_offset = j ^
> + swizzle_bit(9, j);
> + swizzle_str = "bit9";
> + break;
> + case I915_BIT_6_SWIZZLE_9_10:
> + swizzled_offset = j ^
> + swizzle_bit(9, j) ^
> + swizzle_bit(10, j);
> + swizzle_str = "bit9^10";
> + break;
> + case I915_BIT_6_SWIZZLE_9_11:
> + swizzled_offset = j ^
> + swizzle_bit(9, j) ^
> + swizzle_bit(11, j);
> + swizzle_str = "bit9^11";
> + break;
> + case I915_BIT_6_SWIZZLE_9_10_11:
> + swizzled_offset = j ^
> + swizzle_bit(9, j) ^
> + swizzle_bit(10, j) ^
> + swizzle_bit(11, j);
> + swizzle_str = "bit9^10^11";
> + break;
> + default:
> + igt_assert_f(0, "Bad swizzle bits; %d\n",
> + swizzle);
> + }
> + expected_val = calculate_expected(swizzled_offset);
> + found_val = linear[(j - offset) / 4];
> + igt_assert_f(expected_val == found_val,
> + "Bad read [%d]: %d instead of %d at 0x%08x "
> + "for read from 0x%08x to 0x%08x, swizzle=%s\n",
> + i, found_val, expected_val, j,
> + offset, offset + len,
> + swizzle_str);
> }
> - expected_val = calculate_expected(swizzled_offset);
> - found_val = linear[(j - offset) / 4];
> - igt_assert_f(expected_val == found_val,
> - "Bad read [%d]: %d instead of %d at 0x%08x "
> - "for read from 0x%08x to 0x%08x, swizzle=%s\n",
> - i, found_val, expected_val, j,
> - offset, offset + len,
> - swizzle_str);
> }
> }
>
> diff --git a/tests/gem_tiled_pread_pwrite.c b/tests/gem_tiled_pread_pwrite.c
> index 3d8fdc9..efb56d5 100644
> --- a/tests/gem_tiled_pread_pwrite.c
> +++ b/tests/gem_tiled_pread_pwrite.c
> @@ -101,7 +101,7 @@ create_bo(int fd)
> return handle;
> }
>
> -igt_simple_main
> +igt_main
> {
> int fd;
> uint32_t *data;
> @@ -109,34 +109,38 @@ igt_simple_main
> uint32_t tiling, swizzle;
> uint32_t handle, handle_target;
> int count;
> -
> - fd = drm_open_any();
> - count = SLOW_QUICK(intel_get_total_ram_mb() * 9 / 10, 8) ;
>
> - for (i = 0; i < count/2; i++) {
> - current_tiling_mode = I915_TILING_X;
> + igt_fixture {
> + fd = drm_open_any();
> + count = SLOW_QUICK(intel_get_total_ram_mb() * 9 / 10, 8);
> + }
> +
> + igt_subtest("basic") {
> + for (i = 0; i < count/2; i++) {
> + current_tiling_mode = I915_TILING_X;
>
> - handle = create_bo_and_fill(fd);
> - gem_get_tiling(fd, handle, &tiling, &swizzle);
> + handle = create_bo_and_fill(fd);
> + gem_get_tiling(fd, handle, &tiling, &swizzle);
>
> - gem_read(fd, handle, 0, linear, sizeof(linear));
> + gem_read(fd, handle, 0, linear, sizeof(linear));
>
> - handle_target = create_bo(fd);
> - gem_write(fd, handle_target, 0, linear, sizeof(linear));
> + handle_target = create_bo(fd);
> + gem_write(fd, handle_target, 0, linear, sizeof(linear));
>
> - /* Check the target bo's contents. */
> - data = gem_mmap(fd, handle_target, sizeof(linear), PROT_READ | PROT_WRITE);
> - for (j = 0; j < WIDTH*HEIGHT; j++)
> - igt_assert_f(data[j] == j,
> - "mismatch at %i: %i\n",
> - j, data[j]);
> - munmap(data, sizeof(linear));
> + /* Check the target bo's contents. */
> + data = gem_mmap(fd, handle_target, sizeof(linear), PROT_READ | PROT_WRITE);
> + for (j = 0; j < WIDTH*HEIGHT; j++)
> + igt_assert_f(data[j] == j,
> + "mismatch at %i: %i\n",
> + j, data[j]);
> + munmap(data, sizeof(linear));
>
> - /* Leak both bos so that we use all of system mem! */
> - gem_madvise(fd, handle_target, I915_MADV_DONTNEED);
> - gem_madvise(fd, handle, I915_MADV_DONTNEED);
> + /* Leak both bos so that we use all of system mem! */
> + gem_madvise(fd, handle_target, I915_MADV_DONTNEED);
> + gem_madvise(fd, handle, I915_MADV_DONTNEED);
>
> - igt_progress("gem_tiled_pread_pwrite: ", i, count/2);
> + igt_progress("gem_tiled_pread_pwrite: ", i, count/2);
> + }
> }
>
> close(fd);
> --
> 1.9.1
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx
--
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
next prev parent reply other threads:[~2015-08-14 12:41 UTC|newest]
Thread overview: 61+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-08-13 20:31 [PATCH 01/18] tests/gem_storedw_loop: add new store_dword test to unify per-ring ones Jesse Barnes
2015-08-13 20:31 ` [PATCH 02/18] tests/drv_module_reload: rename drv_module_reload to include in BATs Jesse Barnes
2015-08-14 12:20 ` Daniel Vetter
2015-08-13 20:31 ` [PATCH 03/18] tests/drv_module_reload_basic: use linear_blits after module_reload for sanity check Jesse Barnes
2015-08-14 12:22 ` Daniel Vetter
2015-08-14 15:22 ` Jesse Barnes
2015-08-13 20:31 ` [PATCH 04/18] tests/drm_import_export: mark flink and prime tests as basic Jesse Barnes
2015-08-14 12:26 ` Daniel Vetter
2015-08-14 15:28 ` Jesse Barnes
2015-08-13 20:31 ` [PATCH 05/18] tests/drv_getparams: mark EU and subslice fetch " Jesse Barnes
2015-08-14 12:27 ` Daniel Vetter
2015-08-14 15:23 ` Jesse Barnes
2015-08-13 20:31 ` [PATCH 06/18] tests/drv_suspend: mark sysfs tests " Jesse Barnes
2015-08-14 12:29 ` Daniel Vetter
2015-08-14 15:29 ` Jesse Barnes
2015-08-14 16:01 ` Daniel Vetter
2015-08-14 16:10 ` Jesse Barnes
2015-08-13 20:31 ` [PATCH 07/18] tests/gem_ctx_exec: mark lrc lite restore " Jesse Barnes
2015-08-14 12:32 ` Daniel Vetter
2015-08-14 15:31 ` Jesse Barnes
2015-08-14 16:03 ` Daniel Vetter
2015-08-13 20:31 ` [PATCH 08/18] tests/gem_mmap: mark basic object creation tests " Jesse Barnes
2015-08-14 12:33 ` Daniel Vetter
2015-08-14 12:37 ` Chris Wilson
2015-08-14 12:54 ` Chris Wilson
2015-08-14 15:31 ` Jesse Barnes
2015-08-14 16:05 ` Daniel Vetter
2015-08-13 20:31 ` [PATCH 09/18] tests/gem_mmap_gtt: mark basic access and copy " Jesse Barnes
2015-08-14 12:35 ` Daniel Vetter
2015-08-13 20:31 ` [PATCH 10/18] tests/gem_pread/pwrite: mark normal " Jesse Barnes
2015-08-14 12:36 ` Daniel Vetter
2015-08-13 20:31 ` [PATCH 11/18] tests/gem_tiled_pread/pwrite: " Jesse Barnes
2015-08-14 12:41 ` Daniel Vetter [this message]
2015-08-14 15:39 ` Jesse Barnes
2015-08-13 20:31 ` [PATCH 12/18] tests/kms_addfb: mark simple fb creation " Jesse Barnes
2015-08-14 12:42 ` Daniel Vetter
2015-08-13 20:31 ` [PATCH 13/18] tests/kms_vblank: mark accuracy test " Jesse Barnes
2015-08-14 12:44 ` Daniel Vetter
2015-08-14 12:47 ` Daniel Vetter
2015-08-14 15:47 ` Jesse Barnes
2015-08-13 20:31 ` [PATCH 14/18] tests/pm_backlight: mark simple " Jesse Barnes
2015-08-14 12:48 ` Daniel Vetter
2015-08-13 20:31 ` [PATCH 15/18] tests/pm_rpm: mark RTE and D3 tests " Jesse Barnes
2015-08-14 12:50 ` Daniel Vetter
2015-08-14 13:09 ` Paulo Zanoni
2015-08-14 15:48 ` Jesse Barnes
2015-08-14 16:06 ` Daniel Vetter
2015-08-13 20:31 ` [PATCH 16/18] tests/kms_flip: add basic tests for flip, flip vs dpms, and flip modeset Jesse Barnes
2015-08-14 12:56 ` Daniel Vetter
2015-08-14 16:07 ` Jesse Barnes
2015-08-13 20:31 ` [PATCH 17/18] tests/kms_setmode: mark simple clone test as basic Jesse Barnes
2015-08-14 12:57 ` Daniel Vetter
2015-08-13 20:31 ` [PATCH 18/18] gitignore: ignore more files Jesse Barnes
2015-08-14 8:09 ` Daniel Vetter
2015-08-14 15:20 ` Jesse Barnes
2015-08-14 16:07 ` Daniel Vetter
2015-08-14 16:11 ` Jesse Barnes
2015-08-17 7:48 ` Jani Nikula
2015-08-14 12:19 ` [PATCH 01/18] tests/gem_storedw_loop: add new store_dword test to unify per-ring ones Daniel Vetter
2015-08-14 15:21 ` Jesse Barnes
2015-08-14 16:09 ` Daniel Vetter
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=20150814124122.GJ17734@phenom.ffwll.local \
--to=daniel@ffwll.ch \
--cc=intel-gfx@lists.freedesktop.org \
--cc=jbarnes@virtuousgeek.org \
/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