[PATCH i-g-t 1/3] tests/xe_gpgpu_fill: Add command line switch to dump the surface
Grzegorzek, Dominik
dominik.grzegorzek at intel.com
Thu Nov 14 13:33:50 UTC 2024
On Thu, 2024-11-14 at 13:06 +0100, Zbigniew Kempczyński wrote:
> When implementation for new platform is added and shader + pipeline
> needs to be adopted there's useful to dump the surface data.
>
> 0xC4 pattern makes distinction from 0x4C written by the shader very
> hard so change it to 0x88 makes dump more clear.
>
> Signed-off-by: Zbigniew Kempczyński <zbigniew.kempczynski at intel.com>
> Cc: Dominik Grzegorzek <dominik.grzegorzek at intel.com>
Might be indeed helpful:
Reviewed-by: Dominik Grzegorzek <dominik.grzegorzek at intel.com>
> ---
> tests/intel/xe_gpgpu_fill.c | 43 ++++++++++++++++++++++++++++++++-----
> 1 file changed, 38 insertions(+), 5 deletions(-)
>
> diff --git a/tests/intel/xe_gpgpu_fill.c b/tests/intel/xe_gpgpu_fill.c
> index 24fab519cc..4e1785432b 100644
> --- a/tests/intel/xe_gpgpu_fill.c
> +++ b/tests/intel/xe_gpgpu_fill.c
> @@ -36,9 +36,11 @@
> #define HEIGHT 64
> #define STRIDE (WIDTH)
> #define SIZE (HEIGHT*STRIDE)
> -#define COLOR_C4 0xc4
> +#define COLOR_88 0x88
> #define COLOR_4C 0x4c
>
> +static bool dump_surface;
> +
> typedef struct {
> int drm_fd;
> uint32_t devid;
> @@ -89,26 +91,57 @@ static void gpgpu_fill(data_t *data, igt_fillfunc_t fill, uint32_t region)
> uint8_t *ptr;
> int i, j;
>
> - buf = create_buf(data, WIDTH, HEIGHT, COLOR_C4, region);
> + buf = create_buf(data, WIDTH, HEIGHT, COLOR_88, region);
> ptr = xe_bo_map(data->drm_fd, buf->handle, buf->surface[0].size);
>
> for (i = 0; i < WIDTH; i++)
> helfor (j = 0; j < HEIGHT; j++)
> - buf_check(ptr, i, j, COLOR_C4);
> + buf_check(ptr, i, j, COLOR_88);
>
> fill(data->drm_fd, buf, 0, 0, WIDTH / 2, HEIGHT / 2, COLOR_4C);
>
> + if (dump_surface) {
> + for (j = 0; j < HEIGHT; j++) {
> + igt_info("[%04x] ", j);
> + for (i = 0; i < WIDTH; i++) {
> + igt_info("%02x", ptr[j * HEIGHT + i]);
> + if (i % 4 == 3)
> + igt_info(" ");
> + }
> + igt_info("\n");
> + }
> + }
> +
> for (i = 0; i < WIDTH; i++)
> for (j = 0; j < HEIGHT; j++)
> if (i < WIDTH / 2 && j < HEIGHT / 2)
> buf_check(ptr, i, j, COLOR_4C);
> else
> - buf_check(ptr, i, j, COLOR_C4);
> + buf_check(ptr, i, j, COLOR_88);
>
> munmap(ptr, buf->surface[0].size);
> }
>
> -igt_main
> +static int opt_handler(int opt, int opt_index, void *data)
> +{
> + switch (opt) {
> + case 'd':
> + dump_surface = true;
> + break;
> + default:
> + return IGT_OPT_HANDLER_ERROR;
> + }
> +
> + return IGT_OPT_HANDLER_SUCCESS;
> +}
> +
> +
> +const char *help_str =
> + " -d\tDump surface\n"
> + ;
> +
> +
> +igt_main_args("d", NULL, help_str, opt_handler, NULL)
> {
> data_t data = {0, };
> igt_fillfunc_t fill_fn = NULL;
More information about the igt-dev
mailing list