All of lore.kernel.org
 help / color / mirror / Atom feed
* [igt-dev] [PATCH i-g-t] tests/gem_render_copy: Use a more elaborate pattern of pixels
@ 2018-06-29 16:23 Ville Syrjala
  2018-06-29 16:57 ` [igt-dev] ✓ Fi.CI.BAT: success for " Patchwork
                   ` (5 more replies)
  0 siblings, 6 replies; 9+ messages in thread
From: Ville Syrjala @ 2018-06-29 16:23 UTC (permalink / raw)
  To: igt-dev

From: Ville Syrjälä <ville.syrjala@linux.intel.com>

Checking whether we can copy solid rectangles isn't particularly
robust. Eg. errors in texture coordinates/interpolation wouldn't
necessarily show up at all because all texels are identical.

Let's switch to a more elaborate pattern that should catch such
errors. And we'll also change the test to not start the copy
from position 0,0 in the texture.

We'll generate the reference image (against which the rendercopy
results are compared) by peforming an identical copy using the
cpu.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 tests/gem_render_copy.c | 234 ++++++++++++++++++++++++++++++++++++++----------
 1 file changed, 189 insertions(+), 45 deletions(-)

diff --git a/tests/gem_render_copy.c b/tests/gem_render_copy.c
index a036a9247e93..08a3cebf3bd7 100644
--- a/tests/gem_render_copy.c
+++ b/tests/gem_render_copy.c
@@ -52,16 +52,11 @@ IGT_TEST_DESCRIPTION("Basic test for the render_copy() function.");
 #define WIDTH 512
 #define STRIDE (WIDTH*4)
 #define HEIGHT 512
-#define SIZE (HEIGHT*STRIDE)
-
-#define SRC_COLOR	0xffff00ff
-#define DST_COLOR	0xfff0ff00
 
 typedef struct {
 	int drm_fd;
 	uint32_t devid;
 	drm_intel_bufmgr *bufmgr;
-	uint32_t linear[WIDTH * HEIGHT];
 } data_t;
 static int opt_dump_png = false;
 static int check_all_pixels = false;
@@ -83,36 +78,187 @@ static void scratch_buf_write_to_png(struct igt_buf *buf, const char *filename)
 	drm_intel_bo_unmap(buf->bo);
 }
 
+static void scratch_buf_draw_pattern(data_t *data, struct igt_buf *buf,
+				     int x, int y, int w, int h,
+				     int cx, int cy, int cw, int ch,
+				     bool use_alternate_colors)
+{
+	cairo_surface_t *surface;
+	cairo_pattern_t *pat;
+	cairo_t *cr;
+	void *map;
+
+	gem_set_domain(data->drm_fd, buf->bo->handle,
+		       I915_GEM_DOMAIN_CPU, I915_GEM_DOMAIN_CPU);
+
+	map = gem_mmap__cpu(data->drm_fd, buf->bo->handle, 0,
+			    buf->bo->size, PROT_READ | PROT_WRITE);
+
+	surface = cairo_image_surface_create_for_data(map,
+						      CAIRO_FORMAT_RGB24,
+						      igt_buf_width(buf),
+						      igt_buf_height(buf),
+						      buf->stride);
+
+	cr = cairo_create(surface);
+
+	cairo_rectangle(cr, cx, cy, cw, ch);
+	cairo_clip(cr);
+
+	pat = cairo_pattern_create_mesh();
+	cairo_mesh_pattern_begin_patch(pat);
+	cairo_mesh_pattern_move_to(pat, x,   y);
+	cairo_mesh_pattern_line_to(pat, x+w, y);
+	cairo_mesh_pattern_line_to(pat, x+w, y+h);
+	cairo_mesh_pattern_line_to(pat, x,   y+h);
+	if (use_alternate_colors) {
+		cairo_mesh_pattern_set_corner_color_rgb(pat, 0, 0.0, 1.0, 1.0);
+		cairo_mesh_pattern_set_corner_color_rgb(pat, 1, 1.0, 0.0, 1.0);
+		cairo_mesh_pattern_set_corner_color_rgb(pat, 2, 1.0, 1.0, 0.0);
+		cairo_mesh_pattern_set_corner_color_rgb(pat, 3, 0.0, 0.0, 0.0);
+	} else {
+		cairo_mesh_pattern_set_corner_color_rgb(pat, 0, 1.0, 0.0, 0.0);
+		cairo_mesh_pattern_set_corner_color_rgb(pat, 1, 0.0, 1.0, 0.0);
+		cairo_mesh_pattern_set_corner_color_rgb(pat, 2, 0.0, 0.0, 1.0);
+		cairo_mesh_pattern_set_corner_color_rgb(pat, 3, 1.0, 1.0, 1.0);
+	}
+	cairo_mesh_pattern_end_patch(pat);
+
+	cairo_rectangle(cr, x, y, w, h);
+	cairo_set_source(cr, pat);
+	cairo_fill(cr);
+	cairo_pattern_destroy(pat);
+
+	cairo_destroy(cr);
+
+	cairo_surface_destroy(surface);
+
+	munmap(map, buf->bo->size);
+
+	gem_set_domain(data->drm_fd, buf->bo->handle,
+		       I915_GEM_DOMAIN_GTT, 0);
+}
+
+static void
+scratch_buf_copy(data_t *data,
+		 struct igt_buf *src, int sx, int sy, int w, int h,
+		 struct igt_buf *dst, int dx, int dy)
+{
+	int width = igt_buf_width(dst);
+	int height  = igt_buf_height(dst);
+	uint32_t *linear_dst, *linear_src;
+
+	igt_assert_eq(igt_buf_width(dst), igt_buf_width(src));
+	igt_assert_eq(igt_buf_height(dst), igt_buf_height(src));
+	igt_assert_eq(dst->bo->size, src->bo->size);
+
+	linear_dst = malloc(dst->bo->size);
+	linear_src = malloc(src->bo->size);
+
+	gem_read(data->drm_fd, dst->bo->handle, 0,
+		 linear_dst, dst->bo->size);
+	gem_read(data->drm_fd, src->bo->handle, 0,
+		 linear_src, src->bo->size);
+
+	w = min(w, min(width - sx, width - dx));
+	w = min(h, min(height - sy, height - dy));
+
+	for (int y = 0; y < h; y++) {
+		for (int x = 0; x < w; x++) {
+			linear_dst[(dy+y) * width + (dx+x)] =
+				linear_src[(sy+y) * width + (sx+x)];
+		}
+	}
+
+	gem_write(data->drm_fd, dst->bo->handle, 0,
+		  linear_dst, dst->bo->size);
+
+	free(linear_dst);
+	free(linear_src);
+}
+
 static void scratch_buf_init(data_t *data, struct igt_buf *buf,
-			     int width, int height, int stride, uint32_t color)
+			     int width, int height, int stride)
 {
 	drm_intel_bo *bo;
-	int i;
+	int size = height * stride;
 
-	bo = drm_intel_bo_alloc(data->bufmgr, "", SIZE, 4096);
-	for (i = 0; i < width * height; i++)
-		data->linear[i] = color;
-	gem_write(data->drm_fd, bo->handle, 0, data->linear,
-		  sizeof(data->linear));
+	bo = drm_intel_bo_alloc(data->bufmgr, "", size, 4096);
 
 	buf->bo = bo;
 	buf->stride = stride;
 	buf->tiling = I915_TILING_NONE;
-	buf->size = SIZE;
+	buf->size = size;
+
+	igt_assert(igt_buf_width(buf) == width);
+	igt_assert(igt_buf_height(buf) == height);
 }
 
 static void
-scratch_buf_check(data_t *data, struct igt_buf *buf, int x, int y,
-		  uint32_t color)
+scratch_buf_check(data_t *data,
+		  struct igt_buf *buf,
+		  struct igt_buf *ref,
+		  int x, int y)
 {
-	uint32_t val;
+	int width = igt_buf_width(buf);
+	uint32_t buf_val, ref_val;
+	uint32_t *linear;
+
+	igt_assert_eq(igt_buf_width(buf), igt_buf_width(ref));
+	igt_assert_eq(igt_buf_height(buf), igt_buf_height(ref));
+	igt_assert_eq(buf->bo->size, ref->bo->size);
+
+	linear = malloc(buf->bo->size);
 
 	gem_read(data->drm_fd, buf->bo->handle, 0,
-		 data->linear, sizeof(data->linear));
-	val = data->linear[y * WIDTH + x];
-	igt_assert_f(val == color,
+		 linear, buf->bo->size);
+	buf_val = linear[y * width + x];
+
+	gem_read(data->drm_fd, ref->bo->handle, 0,
+		 linear, ref->bo->size);
+	ref_val = linear[y * width + x];
+
+	igt_assert_f(buf_val == ref_val,
 		     "Expected 0x%08x, found 0x%08x at (%d,%d)\n",
-		     color, val, x, y);
+		     ref_val, buf_val, x, y);
+
+	free(linear);
+}
+
+static void
+scratch_buf_check_all(data_t *data,
+		      struct igt_buf *buf,
+		      struct igt_buf *ref)
+{
+	int width = igt_buf_width(buf);
+	int height  = igt_buf_height(buf);
+	uint32_t *linear_buf, *linear_ref;
+
+	igt_assert_eq(igt_buf_width(buf), igt_buf_width(ref));
+	igt_assert_eq(igt_buf_height(buf), igt_buf_height(ref));
+	igt_assert_eq(buf->bo->size, ref->bo->size);
+
+	linear_buf = malloc(buf->bo->size);
+	linear_ref = malloc(ref->bo->size);
+
+	gem_read(data->drm_fd, buf->bo->handle, 0,
+		 linear_buf, buf->bo->size);
+	gem_read(data->drm_fd, ref->bo->handle, 0,
+		 linear_ref, ref->bo->size);
+
+	for (int y = 0; y < height; y++) {
+		for (int x = 0; x < width; x++) {
+			uint32_t buf_val = linear_buf[y * width + x];
+			uint32_t ref_val = linear_ref[y * width + x];
+
+			igt_assert_f(buf_val == ref_val,
+				     "Expected 0x%08x, found 0x%08x at (%d,%d)\n",
+				     ref_val, buf_val, x, y);
+		}
+	}
+
+	free(linear_ref);
+	free(linear_buf);
 }
 
 static int opt_handler(int opt, int opt_index, void *data)
@@ -132,7 +278,7 @@ int main(int argc, char **argv)
 {
 	data_t data = {0, };
 	struct intel_batchbuffer *batch = NULL;
-	struct igt_buf src, dst;
+	struct igt_buf src, dst, ref;
 	igt_render_copyfunc_t render_copy = NULL;
 	int opt_dump_aub = igt_aub_dump_enabled();
 
@@ -154,15 +300,28 @@ int main(int argc, char **argv)
 		igt_assert(batch);
 	}
 
-	scratch_buf_init(&data, &src, WIDTH, HEIGHT, STRIDE, SRC_COLOR);
-	scratch_buf_init(&data, &dst, WIDTH, HEIGHT, STRIDE, DST_COLOR);
+	scratch_buf_init(&data, &src, WIDTH, HEIGHT, STRIDE);
+	scratch_buf_init(&data, &dst, WIDTH, HEIGHT, STRIDE);
+	scratch_buf_init(&data, &ref, WIDTH, HEIGHT, STRIDE);
+
+	scratch_buf_draw_pattern(&data, &src,
+				 0, 0, WIDTH, HEIGHT,
+				 0, 0, WIDTH, HEIGHT, true);
+	scratch_buf_draw_pattern(&data, &dst,
+				 0, 0, WIDTH, HEIGHT,
+				 0, 0, WIDTH, HEIGHT, false);
 
-	scratch_buf_check(&data, &src, WIDTH / 2, HEIGHT / 2, SRC_COLOR);
-	scratch_buf_check(&data, &dst, WIDTH / 2, HEIGHT / 2, DST_COLOR);
+	scratch_buf_copy(&data,
+			 &dst, 0, 0, WIDTH, HEIGHT,
+			 &ref, 0, 0);
+	scratch_buf_copy(&data,
+			 &src, WIDTH/4, WIDTH/4, WIDTH/2, HEIGHT/2,
+			 &ref, WIDTH/2, WIDTH/2);
 
 	if (opt_dump_png) {
 		scratch_buf_write_to_png(&src, "source.png");
 		scratch_buf_write_to_png(&dst, "destination.png");
+		scratch_buf_write_to_png(&ref, "reference.png");
 	}
 
 	if (opt_dump_aub) {
@@ -180,8 +339,8 @@ int main(int argc, char **argv)
 	 *	  -------
 	 */
 	render_copy(batch, NULL,
-		    &src, 0, 0, WIDTH, HEIGHT,
-		    &dst, WIDTH / 2, HEIGHT / 2);
+		    &src, WIDTH/4, HEIGHT/4, WIDTH/2, HEIGHT/2,
+		    &dst, WIDTH/2, HEIGHT/2);
 
 	if (opt_dump_png)
 		scratch_buf_write_to_png(&dst, "result.png");
@@ -193,25 +352,10 @@ int main(int argc, char **argv)
 			STRIDE, 0);
 		drm_intel_bufmgr_gem_set_aub_dump(data.bufmgr, false);
 	} else if (check_all_pixels) {
-		uint32_t val;
-		int i, j;
-		gem_read(data.drm_fd, dst.bo->handle, 0,
-			 data.linear, sizeof(data.linear));
-		for (i = 0; i < WIDTH; i++) {
-			for (j = 0; j < HEIGHT; j++) {
-				uint32_t color = DST_COLOR;
-				val = data.linear[j * WIDTH + i];
-				if (j >= HEIGHT/2 && i >= WIDTH/2)
-					color = SRC_COLOR;
-
-				igt_assert_f(val == color,
-					     "Expected 0x%08x, found 0x%08x at (%d,%d)\n",
-					     color, val, i, j);
-			}
-		}
+		scratch_buf_check_all(&data, &dst, &ref);
 	} else {
-		scratch_buf_check(&data, &dst, 10, 10, DST_COLOR);
-		scratch_buf_check(&data, &dst, WIDTH - 10, HEIGHT - 10, SRC_COLOR);
+		scratch_buf_check(&data, &dst, &ref, 10, 10);
+		scratch_buf_check(&data, &dst, &ref, WIDTH - 10, HEIGHT - 10);
 	}
 
 	igt_exit();
-- 
2.16.4

_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [igt-dev] ✓ Fi.CI.BAT: success for tests/gem_render_copy: Use a more elaborate pattern of pixels
  2018-06-29 16:23 [igt-dev] [PATCH i-g-t] tests/gem_render_copy: Use a more elaborate pattern of pixels Ville Syrjala
@ 2018-06-29 16:57 ` Patchwork
  2018-06-29 17:59 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 9+ messages in thread
From: Patchwork @ 2018-06-29 16:57 UTC (permalink / raw)
  To: Ville Syrjälä; +Cc: igt-dev

== Series Details ==

Series: tests/gem_render_copy: Use a more elaborate pattern of pixels
URL   : https://patchwork.freedesktop.org/series/45669/
State : success

== Summary ==

= CI Bug Log - changes from CI_DRM_4401 -> IGTPW_1513 =

== Summary - SUCCESS ==

  No regressions found.

  External URL: https://patchwork.freedesktop.org/api/1.0/series/45669/revisions/1/mbox/

== Known issues ==

  Here are the changes found in IGTPW_1513 that come from known issues:

  === IGT changes ===

    ==== Issues hit ====

    igt@gem_ctx_create@basic-files:
      fi-glk-dsi:         PASS -> DMESG-WARN (fdo#106954)

    igt@gem_exec_suspend@basic-s4-devices:
      fi-kbl-7500u:       PASS -> DMESG-WARN (fdo#105128)

    igt@prime_vgem@basic-fence-flip:
      fi-ilk-650:         PASS -> FAIL (fdo#104008)

    
  fdo#104008 https://bugs.freedesktop.org/show_bug.cgi?id=104008
  fdo#105128 https://bugs.freedesktop.org/show_bug.cgi?id=105128
  fdo#106954 https://bugs.freedesktop.org/show_bug.cgi?id=106954


== Participating hosts (43 -> 40) ==

  Additional (1): fi-cfl-8109u 
  Missing    (4): fi-ilk-m540 fi-byt-squawks fi-bsw-cyan fi-hsw-4200u 


== Build changes ==

    * IGT: IGT_4530 -> IGTPW_1513

  CI_DRM_4401: 4fe59a304a9a855a1c0e9a576c94d4cca239b427 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_1513: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_1513/
  IGT_4530: 0e98bf69f146eb72fe3a7c3b19a049b5786f0ca3 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_1513/issues.html
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [igt-dev] ✓ Fi.CI.IGT: success for tests/gem_render_copy: Use a more elaborate pattern of pixels
  2018-06-29 16:23 [igt-dev] [PATCH i-g-t] tests/gem_render_copy: Use a more elaborate pattern of pixels Ville Syrjala
  2018-06-29 16:57 ` [igt-dev] ✓ Fi.CI.BAT: success for " Patchwork
@ 2018-06-29 17:59 ` Patchwork
  2018-06-29 20:12 ` [igt-dev] [PATCH i-g-t] " Chris Wilson
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 9+ messages in thread
From: Patchwork @ 2018-06-29 17:59 UTC (permalink / raw)
  To: Ville Syrjälä; +Cc: igt-dev

== Series Details ==

Series: tests/gem_render_copy: Use a more elaborate pattern of pixels
URL   : https://patchwork.freedesktop.org/series/45669/
State : success

== Summary ==

= CI Bug Log - changes from IGT_4530_full -> IGTPW_1513_full =

== Summary - WARNING ==

  Minor unknown changes coming with IGTPW_1513_full need to be verified
  manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in IGTPW_1513_full, please notify your bug team to allow them
  to document this new failure mode, which will reduce false positives in CI.

  External URL: https://patchwork.freedesktop.org/api/1.0/series/45669/revisions/1/mbox/

== Possible new issues ==

  Here are the unknown changes that may have been introduced in IGTPW_1513_full:

  === IGT changes ===

    ==== Warnings ====

    igt@gem_linear_blits@interruptible:
      shard-kbl:          SKIP -> PASS +2
      shard-glk:          SKIP -> PASS
      shard-apl:          SKIP -> PASS

    
== Known issues ==

  Here are the changes found in IGTPW_1513_full that come from known issues:

  === IGT changes ===

    ==== Issues hit ====

    igt@kms_cursor_legacy@cursor-vs-flip-atomic-transitions-varying-size:
      shard-hsw:          PASS -> FAIL (fdo#103355)

    igt@kms_flip@2x-plain-flip-fb-recreate-interruptible:
      shard-glk:          PASS -> FAIL (fdo#100368) +1

    igt@kms_flip_tiling@flip-to-y-tiled:
      shard-glk:          PASS -> FAIL (fdo#104724)

    igt@kms_plane_multiple@atomic-pipe-a-tiling-x:
      shard-snb:          PASS -> FAIL (fdo#103166, fdo#104724)

    
    ==== Possible fixes ====

    igt@kms_cursor_legacy@cursora-vs-flipa-toggle:
      shard-glk:          DMESG-WARN (fdo#105763) -> PASS

    igt@kms_flip@2x-plain-flip-fb-recreate:
      shard-glk:          FAIL (fdo#100368) -> PASS

    igt@kms_flip@flip-vs-expired-vblank:
      shard-hsw:          FAIL (fdo#105363, fdo#102887) -> PASS

    igt@kms_flip_tiling@flip-to-x-tiled:
      shard-glk:          FAIL (fdo#104724, fdo#103822) -> PASS +1

    igt@kms_setmode@basic:
      shard-apl:          FAIL (fdo#99912) -> PASS

    igt@perf_pmu@busy-accuracy-98-vcs1:
      shard-snb:          INCOMPLETE (fdo#105411) -> SKIP

    
    ==== Warnings ====

    igt@drv_selftest@live_gtt:
      shard-glk:          FAIL (fdo#105347) -> INCOMPLETE (k.org#198133, fdo#103359)

    
  fdo#100368 https://bugs.freedesktop.org/show_bug.cgi?id=100368
  fdo#102887 https://bugs.freedesktop.org/show_bug.cgi?id=102887
  fdo#103166 https://bugs.freedesktop.org/show_bug.cgi?id=103166
  fdo#103355 https://bugs.freedesktop.org/show_bug.cgi?id=103355
  fdo#103359 https://bugs.freedesktop.org/show_bug.cgi?id=103359
  fdo#103822 https://bugs.freedesktop.org/show_bug.cgi?id=103822
  fdo#104724 https://bugs.freedesktop.org/show_bug.cgi?id=104724
  fdo#105347 https://bugs.freedesktop.org/show_bug.cgi?id=105347
  fdo#105363 https://bugs.freedesktop.org/show_bug.cgi?id=105363
  fdo#105411 https://bugs.freedesktop.org/show_bug.cgi?id=105411
  fdo#105763 https://bugs.freedesktop.org/show_bug.cgi?id=105763
  fdo#99912 https://bugs.freedesktop.org/show_bug.cgi?id=99912
  k.org#198133 https://bugzilla.kernel.org/show_bug.cgi?id=198133


== Participating hosts (5 -> 5) ==

  No changes in participating hosts


== Build changes ==

    * IGT: IGT_4530 -> IGTPW_1513
    * Linux: CI_DRM_4373 -> CI_DRM_4401

  CI_DRM_4373: be7193758db79443ad5dc45072a166746819ba7e @ git://anongit.freedesktop.org/gfx-ci/linux
  CI_DRM_4401: 4fe59a304a9a855a1c0e9a576c94d4cca239b427 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_1513: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_1513/
  IGT_4530: 0e98bf69f146eb72fe3a7c3b19a049b5786f0ca3 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_1513/shards.html
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [igt-dev] [PATCH i-g-t] tests/gem_render_copy: Use a more elaborate pattern of pixels
  2018-06-29 16:23 [igt-dev] [PATCH i-g-t] tests/gem_render_copy: Use a more elaborate pattern of pixels Ville Syrjala
  2018-06-29 16:57 ` [igt-dev] ✓ Fi.CI.BAT: success for " Patchwork
  2018-06-29 17:59 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
@ 2018-06-29 20:12 ` Chris Wilson
  2018-07-03 12:30 ` [igt-dev] [PATCH i-g-t v2] " Ville Syrjala
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 9+ messages in thread
From: Chris Wilson @ 2018-06-29 20:12 UTC (permalink / raw)
  To: Ville Syrjala, igt-dev

Quoting Ville Syrjala (2018-06-29 17:23:57)
> +static void scratch_buf_draw_pattern(data_t *data, struct igt_buf *buf,
> +                                    int x, int y, int w, int h,
> +                                    int cx, int cy, int cw, int ch,
> +                                    bool use_alternate_colors)
> +{
> +       cairo_surface_t *surface;
> +       cairo_pattern_t *pat;
> +       cairo_t *cr;
> +       void *map;
> +
> +       gem_set_domain(data->drm_fd, buf->bo->handle,
> +                      I915_GEM_DOMAIN_CPU, I915_GEM_DOMAIN_CPU);
> +
> +       map = gem_mmap__cpu(data->drm_fd, buf->bo->handle, 0,
> +                           buf->bo->size, PROT_READ | PROT_WRITE);
> +
> +       surface = cairo_image_surface_create_for_data(map,
> +                                                     CAIRO_FORMAT_RGB24,
> +                                                     igt_buf_width(buf),
> +                                                     igt_buf_height(buf),
> +                                                     buf->stride);
> +
> +       cr = cairo_create(surface);
> +
> +       cairo_rectangle(cr, cx, cy, cw, ch);
> +       cairo_clip(cr);
> +
> +       pat = cairo_pattern_create_mesh();
> +       cairo_mesh_pattern_begin_patch(pat);
> +       cairo_mesh_pattern_move_to(pat, x,   y);
> +       cairo_mesh_pattern_line_to(pat, x+w, y);
> +       cairo_mesh_pattern_line_to(pat, x+w, y+h);
> +       cairo_mesh_pattern_line_to(pat, x,   y+h);
> +       if (use_alternate_colors) {
> +               cairo_mesh_pattern_set_corner_color_rgb(pat, 0, 0.0, 1.0, 1.0);
> +               cairo_mesh_pattern_set_corner_color_rgb(pat, 1, 1.0, 0.0, 1.0);
> +               cairo_mesh_pattern_set_corner_color_rgb(pat, 2, 1.0, 1.0, 0.0);
> +               cairo_mesh_pattern_set_corner_color_rgb(pat, 3, 0.0, 0.0, 0.0);
> +       } else {
> +               cairo_mesh_pattern_set_corner_color_rgb(pat, 0, 1.0, 0.0, 0.0);
> +               cairo_mesh_pattern_set_corner_color_rgb(pat, 1, 0.0, 1.0, 0.0);
> +               cairo_mesh_pattern_set_corner_color_rgb(pat, 2, 0.0, 0.0, 1.0);
> +               cairo_mesh_pattern_set_corner_color_rgb(pat, 3, 1.0, 1.0, 1.0);
> +       }
> +       cairo_mesh_pattern_end_patch(pat);

I was expecting to see some new EU shaders. Disappoint! ;)

> +static void
> +scratch_buf_copy(data_t *data,
> +                struct igt_buf *src, int sx, int sy, int w, int h,
> +                struct igt_buf *dst, int dx, int dy)
> +{
> +       int width = igt_buf_width(dst);
> +       int height  = igt_buf_height(dst);
> +       uint32_t *linear_dst, *linear_src;
> +
> +       igt_assert_eq(igt_buf_width(dst), igt_buf_width(src));
> +       igt_assert_eq(igt_buf_height(dst), igt_buf_height(src));
> +       igt_assert_eq(dst->bo->size, src->bo->size);
> +
> +       linear_dst = malloc(dst->bo->size);
> +       linear_src = malloc(src->bo->size);
> +
> +       gem_read(data->drm_fd, dst->bo->handle, 0,
> +                linear_dst, dst->bo->size);
> +       gem_read(data->drm_fd, src->bo->handle, 0,
> +                linear_src, src->bo->size);

The danger here is for non-constant/unknown swizzling (L-shaped memory
layouts may end up with mixed swizzle modes). Safest to use GTT, and
memcpy_from_wc if available. What to do when no GTT? Then assume linear
is good enough?
-Chris
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [igt-dev] [PATCH i-g-t v2] tests/gem_render_copy: Use a more elaborate pattern of pixels
  2018-06-29 16:23 [igt-dev] [PATCH i-g-t] tests/gem_render_copy: Use a more elaborate pattern of pixels Ville Syrjala
                   ` (2 preceding siblings ...)
  2018-06-29 20:12 ` [igt-dev] [PATCH i-g-t] " Chris Wilson
@ 2018-07-03 12:30 ` Ville Syrjala
  2018-07-03 14:00   ` Chris Wilson
  2018-07-03 12:50 ` [igt-dev] ✓ Fi.CI.BAT: success for tests/gem_render_copy: Use a more elaborate pattern of pixels (rev2) Patchwork
  2018-07-03 19:04 ` [igt-dev] ✗ Fi.CI.IGT: failure " Patchwork
  5 siblings, 1 reply; 9+ messages in thread
From: Ville Syrjala @ 2018-07-03 12:30 UTC (permalink / raw)
  To: igt-dev

From: Ville Syrjälä <ville.syrjala@linux.intel.com>

Checking whether we can copy solid rectangles isn't particularly
robust. Eg. errors in texture coordinates/interpolation wouldn't
necessarily show up at all because all texels are identical.

Let's switch to a more elaborate pattern that should catch such
errors. And we'll also change the test to not start the copy
from position 0,0 in the texture.

We'll generate the reference image (against which the rendercopy
results are compared) by peforming an identical copy using the
cpu.

v2: Use gtt mmap instead of pread/pwrite (Chris)
    Offset the dst coordinates by -1,-1 to make sure
    the copy doesn't go past the intended region

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 tests/gem_render_copy.c | 248 +++++++++++++++++++++++++++++++++++++++---------
 1 file changed, 202 insertions(+), 46 deletions(-)

diff --git a/tests/gem_render_copy.c b/tests/gem_render_copy.c
index a036a9247e93..2efec0783585 100644
--- a/tests/gem_render_copy.c
+++ b/tests/gem_render_copy.c
@@ -30,6 +30,7 @@
  */
 
 #include "igt.h"
+#include "igt_x86.h"
 #include <stdbool.h>
 #include <unistd.h>
 #include <cairo.h>
@@ -52,16 +53,11 @@ IGT_TEST_DESCRIPTION("Basic test for the render_copy() function.");
 #define WIDTH 512
 #define STRIDE (WIDTH*4)
 #define HEIGHT 512
-#define SIZE (HEIGHT*STRIDE)
-
-#define SRC_COLOR	0xffff00ff
-#define DST_COLOR	0xfff0ff00
 
 typedef struct {
 	int drm_fd;
 	uint32_t devid;
 	drm_intel_bufmgr *bufmgr;
-	uint32_t linear[WIDTH * HEIGHT];
 } data_t;
 static int opt_dump_png = false;
 static int check_all_pixels = false;
@@ -83,36 +79,198 @@ static void scratch_buf_write_to_png(struct igt_buf *buf, const char *filename)
 	drm_intel_bo_unmap(buf->bo);
 }
 
+static void *linear_copy(data_t *data, struct igt_buf *buf)
+{
+	void *map, *linear;
+
+	igt_assert_eq(posix_memalign(&linear, 16, buf->bo->size), 0);
+
+	gem_set_domain(data->drm_fd, buf->bo->handle,
+		       I915_GEM_DOMAIN_GTT, 0);
+
+	map = gem_mmap__gtt(data->drm_fd, buf->bo->handle,
+			    buf->bo->size, PROT_READ);
+
+	igt_memcpy_from_wc(linear, map, buf->bo->size);
+
+	munmap(map, buf->bo->size);
+
+	return linear;
+}
+
+static void scratch_buf_draw_pattern(data_t *data, struct igt_buf *buf,
+				     int x, int y, int w, int h,
+				     int cx, int cy, int cw, int ch,
+				     bool use_alternate_colors)
+{
+	cairo_surface_t *surface;
+	cairo_pattern_t *pat;
+	cairo_t *cr;
+	void *map, *linear;
+
+	linear = linear_copy(data, buf);
+
+	surface = cairo_image_surface_create_for_data(linear,
+						      CAIRO_FORMAT_RGB24,
+						      igt_buf_width(buf),
+						      igt_buf_height(buf),
+						      buf->stride);
+
+	cr = cairo_create(surface);
+
+	cairo_rectangle(cr, cx, cy, cw, ch);
+	cairo_clip(cr);
+
+	pat = cairo_pattern_create_mesh();
+	cairo_mesh_pattern_begin_patch(pat);
+	cairo_mesh_pattern_move_to(pat, x,   y);
+	cairo_mesh_pattern_line_to(pat, x+w, y);
+	cairo_mesh_pattern_line_to(pat, x+w, y+h);
+	cairo_mesh_pattern_line_to(pat, x,   y+h);
+	if (use_alternate_colors) {
+		cairo_mesh_pattern_set_corner_color_rgb(pat, 0, 0.0, 1.0, 1.0);
+		cairo_mesh_pattern_set_corner_color_rgb(pat, 1, 1.0, 0.0, 1.0);
+		cairo_mesh_pattern_set_corner_color_rgb(pat, 2, 1.0, 1.0, 0.0);
+		cairo_mesh_pattern_set_corner_color_rgb(pat, 3, 0.0, 0.0, 0.0);
+	} else {
+		cairo_mesh_pattern_set_corner_color_rgb(pat, 0, 1.0, 0.0, 0.0);
+		cairo_mesh_pattern_set_corner_color_rgb(pat, 1, 0.0, 1.0, 0.0);
+		cairo_mesh_pattern_set_corner_color_rgb(pat, 2, 0.0, 0.0, 1.0);
+		cairo_mesh_pattern_set_corner_color_rgb(pat, 3, 1.0, 1.0, 1.0);
+	}
+	cairo_mesh_pattern_end_patch(pat);
+
+	cairo_rectangle(cr, x, y, w, h);
+	cairo_set_source(cr, pat);
+	cairo_fill(cr);
+	cairo_pattern_destroy(pat);
+
+	cairo_destroy(cr);
+
+	cairo_surface_destroy(surface);
+
+	gem_set_domain(data->drm_fd, buf->bo->handle,
+		       I915_GEM_DOMAIN_GTT, I915_GEM_DOMAIN_GTT);
+
+	map = gem_mmap__gtt(data->drm_fd, buf->bo->handle,
+			    buf->bo->size, PROT_READ | PROT_WRITE);
+
+	memcpy(map, linear, buf->bo->size);
+
+	munmap(map, buf->bo->size);
+
+	free(linear);
+}
+
+static void
+scratch_buf_copy(data_t *data,
+		 struct igt_buf *src, int sx, int sy, int w, int h,
+		 struct igt_buf *dst, int dx, int dy)
+{
+	int width = igt_buf_width(dst);
+	int height  = igt_buf_height(dst);
+	uint32_t *linear_dst, *linear_src;
+
+	igt_assert_eq(igt_buf_width(dst), igt_buf_width(src));
+	igt_assert_eq(igt_buf_height(dst), igt_buf_height(src));
+	igt_assert_eq(dst->bo->size, src->bo->size);
+
+	gem_set_domain(data->drm_fd, dst->bo->handle,
+		       I915_GEM_DOMAIN_GTT, I915_GEM_DOMAIN_GTT);
+	gem_set_domain(data->drm_fd, src->bo->handle,
+		       I915_GEM_DOMAIN_GTT, 0);
+
+	linear_dst = gem_mmap__gtt(data->drm_fd, dst->bo->handle,
+				   dst->bo->size, PROT_WRITE);
+	linear_src = gem_mmap__gtt(data->drm_fd, src->bo->handle,
+				   src->bo->size, PROT_READ);
+
+	w = min(w, min(width - sx, width - dx));
+	w = min(h, min(height - sy, height - dy));
+
+	for (int y = 0; y < h; y++) {
+		igt_memcpy_from_wc(&linear_dst[(dy+y) * width + dx],
+				   &linear_src[(sy+y) * width + sx],
+				   w * 4);
+	}
+
+	munmap(linear_dst, dst->bo->size);
+	munmap(linear_src, src->bo->size);
+}
+
 static void scratch_buf_init(data_t *data, struct igt_buf *buf,
-			     int width, int height, int stride, uint32_t color)
+			     int width, int height, int stride)
 {
 	drm_intel_bo *bo;
-	int i;
+	int size = height * stride;
 
-	bo = drm_intel_bo_alloc(data->bufmgr, "", SIZE, 4096);
-	for (i = 0; i < width * height; i++)
-		data->linear[i] = color;
-	gem_write(data->drm_fd, bo->handle, 0, data->linear,
-		  sizeof(data->linear));
+	bo = drm_intel_bo_alloc(data->bufmgr, "", size, 4096);
 
 	buf->bo = bo;
 	buf->stride = stride;
 	buf->tiling = I915_TILING_NONE;
-	buf->size = SIZE;
+	buf->size = size;
+
+	igt_assert(igt_buf_width(buf) == width);
+	igt_assert(igt_buf_height(buf) == height);
 }
 
 static void
-scratch_buf_check(data_t *data, struct igt_buf *buf, int x, int y,
-		  uint32_t color)
+scratch_buf_check(data_t *data,
+		  struct igt_buf *buf,
+		  struct igt_buf *ref,
+		  int x, int y)
 {
-	uint32_t val;
+	int width = igt_buf_width(buf);
+	uint32_t buf_val, ref_val;
+	uint32_t *linear;
+
+	igt_assert_eq(igt_buf_width(buf), igt_buf_width(ref));
+	igt_assert_eq(igt_buf_height(buf), igt_buf_height(ref));
+	igt_assert_eq(buf->bo->size, ref->bo->size);
+
+	linear = linear_copy(data, buf);
+	buf_val = linear[y * width + x];
+	free(linear);
+
+	linear = linear_copy(data, ref);
+	ref_val = linear[y * width + x];
+	free(linear);
 
-	gem_read(data->drm_fd, buf->bo->handle, 0,
-		 data->linear, sizeof(data->linear));
-	val = data->linear[y * WIDTH + x];
-	igt_assert_f(val == color,
+	igt_assert_f(buf_val == ref_val,
 		     "Expected 0x%08x, found 0x%08x at (%d,%d)\n",
-		     color, val, x, y);
+		     ref_val, buf_val, x, y);
+}
+
+static void
+scratch_buf_check_all(data_t *data,
+		      struct igt_buf *buf,
+		      struct igt_buf *ref)
+{
+	int width = igt_buf_width(buf);
+	int height  = igt_buf_height(buf);
+	uint32_t *linear_buf, *linear_ref;
+
+	igt_assert_eq(igt_buf_width(buf), igt_buf_width(ref));
+	igt_assert_eq(igt_buf_height(buf), igt_buf_height(ref));
+	igt_assert_eq(buf->bo->size, ref->bo->size);
+
+	linear_buf = linear_copy(data, buf);
+	linear_ref = linear_copy(data, ref);
+
+	for (int y = 0; y < height; y++) {
+		for (int x = 0; x < width; x++) {
+			uint32_t buf_val = linear_buf[y * width + x];
+			uint32_t ref_val = linear_ref[y * width + x];
+
+			igt_assert_f(buf_val == ref_val,
+				     "Expected 0x%08x, found 0x%08x at (%d,%d)\n",
+				     ref_val, buf_val, x, y);
+		}
+	}
+
+	free(linear_ref);
+	free(linear_buf);
 }
 
 static int opt_handler(int opt, int opt_index, void *data)
@@ -132,7 +290,7 @@ int main(int argc, char **argv)
 {
 	data_t data = {0, };
 	struct intel_batchbuffer *batch = NULL;
-	struct igt_buf src, dst;
+	struct igt_buf src, dst, ref;
 	igt_render_copyfunc_t render_copy = NULL;
 	int opt_dump_aub = igt_aub_dump_enabled();
 
@@ -154,15 +312,28 @@ int main(int argc, char **argv)
 		igt_assert(batch);
 	}
 
-	scratch_buf_init(&data, &src, WIDTH, HEIGHT, STRIDE, SRC_COLOR);
-	scratch_buf_init(&data, &dst, WIDTH, HEIGHT, STRIDE, DST_COLOR);
+	scratch_buf_init(&data, &src, WIDTH, HEIGHT, STRIDE);
+	scratch_buf_init(&data, &dst, WIDTH, HEIGHT, STRIDE);
+	scratch_buf_init(&data, &ref, WIDTH, HEIGHT, STRIDE);
+
+	scratch_buf_draw_pattern(&data, &src,
+				 0, 0, WIDTH, HEIGHT,
+				 0, 0, WIDTH, HEIGHT, true);
+	scratch_buf_draw_pattern(&data, &dst,
+				 0, 0, WIDTH, HEIGHT,
+				 0, 0, WIDTH, HEIGHT, false);
 
-	scratch_buf_check(&data, &src, WIDTH / 2, HEIGHT / 2, SRC_COLOR);
-	scratch_buf_check(&data, &dst, WIDTH / 2, HEIGHT / 2, DST_COLOR);
+	scratch_buf_copy(&data,
+			 &dst, 0, 0, WIDTH, HEIGHT,
+			 &ref, 0, 0);
+	scratch_buf_copy(&data,
+			 &src, WIDTH/4, WIDTH/4, WIDTH/2, HEIGHT/2,
+			 &ref, WIDTH/2-1, WIDTH/2-1);
 
 	if (opt_dump_png) {
 		scratch_buf_write_to_png(&src, "source.png");
 		scratch_buf_write_to_png(&dst, "destination.png");
+		scratch_buf_write_to_png(&ref, "reference.png");
 	}
 
 	if (opt_dump_aub) {
@@ -180,8 +351,8 @@ int main(int argc, char **argv)
 	 *	  -------
 	 */
 	render_copy(batch, NULL,
-		    &src, 0, 0, WIDTH, HEIGHT,
-		    &dst, WIDTH / 2, HEIGHT / 2);
+		    &src, WIDTH/4, HEIGHT/4, WIDTH/2, HEIGHT/2,
+		    &dst, WIDTH/2-1, HEIGHT/2-1);
 
 	if (opt_dump_png)
 		scratch_buf_write_to_png(&dst, "result.png");
@@ -193,25 +364,10 @@ int main(int argc, char **argv)
 			STRIDE, 0);
 		drm_intel_bufmgr_gem_set_aub_dump(data.bufmgr, false);
 	} else if (check_all_pixels) {
-		uint32_t val;
-		int i, j;
-		gem_read(data.drm_fd, dst.bo->handle, 0,
-			 data.linear, sizeof(data.linear));
-		for (i = 0; i < WIDTH; i++) {
-			for (j = 0; j < HEIGHT; j++) {
-				uint32_t color = DST_COLOR;
-				val = data.linear[j * WIDTH + i];
-				if (j >= HEIGHT/2 && i >= WIDTH/2)
-					color = SRC_COLOR;
-
-				igt_assert_f(val == color,
-					     "Expected 0x%08x, found 0x%08x at (%d,%d)\n",
-					     color, val, i, j);
-			}
-		}
+		scratch_buf_check_all(&data, &dst, &ref);
 	} else {
-		scratch_buf_check(&data, &dst, 10, 10, DST_COLOR);
-		scratch_buf_check(&data, &dst, WIDTH - 10, HEIGHT - 10, SRC_COLOR);
+		scratch_buf_check(&data, &dst, &ref, 10, 10);
+		scratch_buf_check(&data, &dst, &ref, WIDTH - 10, HEIGHT - 10);
 	}
 
 	igt_exit();
-- 
2.16.4

_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [igt-dev] ✓ Fi.CI.BAT: success for tests/gem_render_copy: Use a more elaborate pattern of pixels (rev2)
  2018-06-29 16:23 [igt-dev] [PATCH i-g-t] tests/gem_render_copy: Use a more elaborate pattern of pixels Ville Syrjala
                   ` (3 preceding siblings ...)
  2018-07-03 12:30 ` [igt-dev] [PATCH i-g-t v2] " Ville Syrjala
@ 2018-07-03 12:50 ` Patchwork
  2018-07-03 19:04 ` [igt-dev] ✗ Fi.CI.IGT: failure " Patchwork
  5 siblings, 0 replies; 9+ messages in thread
From: Patchwork @ 2018-07-03 12:50 UTC (permalink / raw)
  To: Ville Syrjälä; +Cc: igt-dev

== Series Details ==

Series: tests/gem_render_copy: Use a more elaborate pattern of pixels (rev2)
URL   : https://patchwork.freedesktop.org/series/45669/
State : success

== Summary ==

= CI Bug Log - changes from CI_DRM_4420 -> IGTPW_1526 =

== Summary - WARNING ==

  Minor unknown changes coming with IGTPW_1526 need to be verified
  manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in IGTPW_1526, please notify your bug team to allow them
  to document this new failure mode, which will reduce false positives in CI.

  External URL: https://patchwork.freedesktop.org/api/1.0/series/45669/revisions/2/mbox/

== Possible new issues ==

  Here are the unknown changes that may have been introduced in IGTPW_1526:

  === IGT changes ===

    ==== Warnings ====

    igt@gem_exec_gttfill@basic:
      fi-pnv-d510:        SKIP -> PASS

    igt@kms_pipe_crc_basic@read-crc-pipe-b:
      {fi-cfl-8109u}:     SKIP -> PASS +36

    
== Known issues ==

  Here are the changes found in IGTPW_1526 that come from known issues:

  === IGT changes ===

    ==== Issues hit ====

    igt@drv_module_reload@basic-no-display:
      {fi-skl-iommu}:     NOTRUN -> FAIL (fdo#106066) +2

    igt@kms_pipe_crc_basic@hang-read-crc-pipe-b:
      {fi-skl-iommu}:     NOTRUN -> FAIL (fdo#106686) +2

    igt@prime_vgem@basic-fence-flip:
      fi-ilk-650:         PASS -> FAIL (fdo#104008)

    
  {name}: This element is suppressed. This means it is ignored when computing
          the status of the difference (SUCCESS, WARNING, or FAILURE).

  fdo#104008 https://bugs.freedesktop.org/show_bug.cgi?id=104008
  fdo#106066 https://bugs.freedesktop.org/show_bug.cgi?id=106066
  fdo#106686 https://bugs.freedesktop.org/show_bug.cgi?id=106686


== Participating hosts (44 -> 41) ==

  Additional (2): fi-glk-j4005 fi-skl-iommu 
  Missing    (5): fi-ctg-p8600 fi-ilk-m540 fi-byt-squawks fi-bsw-cyan fi-hsw-4200u 


== Build changes ==

    * IGT: IGT_4532 -> IGTPW_1526

  CI_DRM_4420: d9596d1a02b553958c684ef2ea0d3e64e8f68efe @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_1526: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_1526/
  IGT_4532: 840d12e2f050b784552197403d6575a57b6e896d @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_1526/issues.html
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [igt-dev] [PATCH i-g-t v2] tests/gem_render_copy: Use a more elaborate pattern of pixels
  2018-07-03 12:30 ` [igt-dev] [PATCH i-g-t v2] " Ville Syrjala
@ 2018-07-03 14:00   ` Chris Wilson
  0 siblings, 0 replies; 9+ messages in thread
From: Chris Wilson @ 2018-07-03 14:00 UTC (permalink / raw)
  To: Ville Syrjala, igt-dev

Quoting Ville Syrjala (2018-07-03 13:30:22)
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> 
> Checking whether we can copy solid rectangles isn't particularly
> robust. Eg. errors in texture coordinates/interpolation wouldn't
> necessarily show up at all because all texels are identical.
> 
> Let's switch to a more elaborate pattern that should catch such
> errors. And we'll also change the test to not start the copy
> from position 0,0 in the texture.
> 
> We'll generate the reference image (against which the rendercopy
> results are compared) by peforming an identical copy using the
> cpu.
> 
> v2: Use gtt mmap instead of pread/pwrite (Chris)
>     Offset the dst coordinates by -1,-1 to make sure
>     the copy doesn't go past the intended region
> 
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

No alarm bells ringing,
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
-Chris
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [igt-dev] ✗ Fi.CI.IGT: failure for tests/gem_render_copy: Use a more elaborate pattern of pixels (rev2)
  2018-06-29 16:23 [igt-dev] [PATCH i-g-t] tests/gem_render_copy: Use a more elaborate pattern of pixels Ville Syrjala
                   ` (4 preceding siblings ...)
  2018-07-03 12:50 ` [igt-dev] ✓ Fi.CI.BAT: success for tests/gem_render_copy: Use a more elaborate pattern of pixels (rev2) Patchwork
@ 2018-07-03 19:04 ` Patchwork
  2018-07-04 14:45   ` Ville Syrjälä
  5 siblings, 1 reply; 9+ messages in thread
From: Patchwork @ 2018-07-03 19:04 UTC (permalink / raw)
  To: Ville Syrjälä; +Cc: igt-dev

== Series Details ==

Series: tests/gem_render_copy: Use a more elaborate pattern of pixels (rev2)
URL   : https://patchwork.freedesktop.org/series/45669/
State : failure

== Summary ==

= CI Bug Log - changes from IGT_4532_full -> IGTPW_1526_full =

== Summary - FAILURE ==

  Serious unknown changes coming with IGTPW_1526_full absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in IGTPW_1526_full, please notify your bug team to allow them
  to document this new failure mode, which will reduce false positives in CI.

  External URL: https://patchwork.freedesktop.org/api/1.0/series/45669/revisions/2/mbox/

== Possible new issues ==

  Here are the unknown changes that may have been introduced in IGTPW_1526_full:

  === IGT changes ===

    ==== Possible regressions ====

    igt@kms_cursor_legacy@pipe-b-torture-bo:
      shard-snb:          PASS -> DMESG-WARN
      shard-kbl:          PASS -> DMESG-WARN

    
    ==== Warnings ====

    igt@gem_exec_schedule@deep-bsd2:
      shard-kbl:          PASS -> SKIP

    
== Known issues ==

  Here are the changes found in IGTPW_1526_full that come from known issues:

  === IGT changes ===

    ==== Issues hit ====

    igt@drv_selftest@live_gtt:
      shard-glk:          PASS -> FAIL (fdo#105347)

    igt@kms_available_modes_crc@available_mode_test_crc:
      shard-snb:          PASS -> FAIL (fdo#106641)

    igt@kms_flip@2x-plain-flip-fb-recreate-interruptible:
      shard-hsw:          PASS -> FAIL (fdo#100368)
      shard-glk:          PASS -> FAIL (fdo#100368)

    igt@kms_flip@modeset-vs-vblank-race-interruptible:
      shard-glk:          PASS -> FAIL (fdo#103060)

    igt@kms_plane@plane-panning-bottom-right-suspend-pipe-b-planes:
      shard-glk:          PASS -> INCOMPLETE (fdo#103359, k.org#198133)

    
    ==== Possible fixes ====

    igt@gem_exec_big:
      shard-hsw:          INCOMPLETE (fdo#103540) -> PASS

    igt@gem_tiled_fence_blits@normal:
      shard-snb:          INCOMPLETE (fdo#105411) -> PASS

    igt@gem_workarounds@suspend-resume-context:
      shard-kbl:          INCOMPLETE (fdo#103665) -> PASS

    igt@kms_flip@2x-flip-vs-expired-vblank-interruptible:
      shard-glk:          FAIL (fdo#105363) -> PASS +1

    igt@kms_flip@flip-vs-absolute-wf_vblank-interruptible:
      shard-glk:          FAIL (fdo#100368) -> PASS

    igt@kms_rotation_crc@sprite-rotation-180:
      shard-snb:          FAIL (fdo#103925, fdo#104724) -> PASS

    
  fdo#100368 https://bugs.freedesktop.org/show_bug.cgi?id=100368
  fdo#103060 https://bugs.freedesktop.org/show_bug.cgi?id=103060
  fdo#103359 https://bugs.freedesktop.org/show_bug.cgi?id=103359
  fdo#103540 https://bugs.freedesktop.org/show_bug.cgi?id=103540
  fdo#103665 https://bugs.freedesktop.org/show_bug.cgi?id=103665
  fdo#103925 https://bugs.freedesktop.org/show_bug.cgi?id=103925
  fdo#104724 https://bugs.freedesktop.org/show_bug.cgi?id=104724
  fdo#105347 https://bugs.freedesktop.org/show_bug.cgi?id=105347
  fdo#105363 https://bugs.freedesktop.org/show_bug.cgi?id=105363
  fdo#105411 https://bugs.freedesktop.org/show_bug.cgi?id=105411
  fdo#106641 https://bugs.freedesktop.org/show_bug.cgi?id=106641
  k.org#198133 https://bugzilla.kernel.org/show_bug.cgi?id=198133


== Participating hosts (5 -> 5) ==

  No changes in participating hosts


== Build changes ==

    * IGT: IGT_4532 -> IGTPW_1526
    * Linux: CI_DRM_4404 -> CI_DRM_4420

  CI_DRM_4404: ceaab659002c938f1788b7458d5081fadc3c1ddc @ git://anongit.freedesktop.org/gfx-ci/linux
  CI_DRM_4420: d9596d1a02b553958c684ef2ea0d3e64e8f68efe @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_1526: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_1526/
  IGT_4532: 840d12e2f050b784552197403d6575a57b6e896d @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_1526/shards.html
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [igt-dev] ✗ Fi.CI.IGT: failure for tests/gem_render_copy: Use a more elaborate pattern of pixels (rev2)
  2018-07-03 19:04 ` [igt-dev] ✗ Fi.CI.IGT: failure " Patchwork
@ 2018-07-04 14:45   ` Ville Syrjälä
  0 siblings, 0 replies; 9+ messages in thread
From: Ville Syrjälä @ 2018-07-04 14:45 UTC (permalink / raw)
  To: igt-dev

On Tue, Jul 03, 2018 at 07:04:00PM -0000, Patchwork wrote:
> == Series Details ==
> 
> Series: tests/gem_render_copy: Use a more elaborate pattern of pixels (rev2)
> URL   : https://patchwork.freedesktop.org/series/45669/
> State : failure
> 
> == Summary ==
> 
> = CI Bug Log - changes from IGT_4532_full -> IGTPW_1526_full =
> 
> == Summary - FAILURE ==
> 
>   Serious unknown changes coming with IGTPW_1526_full absolutely need to be
>   verified manually.
>   
>   If you think the reported changes have nothing to do with the changes
>   introduced in IGTPW_1526_full, please notify your bug team to allow them
>   to document this new failure mode, which will reduce false positives in CI.
> 
>   External URL: https://patchwork.freedesktop.org/api/1.0/series/45669/revisions/2/mbox/
> 
> == Possible new issues ==
> 
>   Here are the unknown changes that may have been introduced in IGTPW_1526_full:
> 
>   === IGT changes ===
> 
>     ==== Possible regressions ====
> 
>     igt@kms_cursor_legacy@pipe-b-torture-bo:
>       shard-snb:          PASS -> DMESG-WARN
>       shard-kbl:          PASS -> DMESG-WARN

[   45.024192] [drm:drm_atomic_helper_setup_commit] *ERROR* [CRTC:55:pipe B] cleanup_done timed out

Presumably fallout from
commit 8d52e447807b ("drm/i915: Defer modeset cleanup to a secondary task")

> 
>     
>     ==== Warnings ====
> 
>     igt@gem_exec_schedule@deep-bsd2:
>       shard-kbl:          PASS -> SKIP
> 
>     
> == Known issues ==
> 
>   Here are the changes found in IGTPW_1526_full that come from known issues:
> 
>   === IGT changes ===
> 
>     ==== Issues hit ====
> 
>     igt@drv_selftest@live_gtt:
>       shard-glk:          PASS -> FAIL (fdo#105347)
> 
>     igt@kms_available_modes_crc@available_mode_test_crc:
>       shard-snb:          PASS -> FAIL (fdo#106641)
> 
>     igt@kms_flip@2x-plain-flip-fb-recreate-interruptible:
>       shard-hsw:          PASS -> FAIL (fdo#100368)
>       shard-glk:          PASS -> FAIL (fdo#100368)
> 
>     igt@kms_flip@modeset-vs-vblank-race-interruptible:
>       shard-glk:          PASS -> FAIL (fdo#103060)
> 
>     igt@kms_plane@plane-panning-bottom-right-suspend-pipe-b-planes:
>       shard-glk:          PASS -> INCOMPLETE (fdo#103359, k.org#198133)
> 
>     
>     ==== Possible fixes ====
> 
>     igt@gem_exec_big:
>       shard-hsw:          INCOMPLETE (fdo#103540) -> PASS
> 
>     igt@gem_tiled_fence_blits@normal:
>       shard-snb:          INCOMPLETE (fdo#105411) -> PASS
> 
>     igt@gem_workarounds@suspend-resume-context:
>       shard-kbl:          INCOMPLETE (fdo#103665) -> PASS
> 
>     igt@kms_flip@2x-flip-vs-expired-vblank-interruptible:
>       shard-glk:          FAIL (fdo#105363) -> PASS +1
> 
>     igt@kms_flip@flip-vs-absolute-wf_vblank-interruptible:
>       shard-glk:          FAIL (fdo#100368) -> PASS
> 
>     igt@kms_rotation_crc@sprite-rotation-180:
>       shard-snb:          FAIL (fdo#103925, fdo#104724) -> PASS
> 
>     
>   fdo#100368 https://bugs.freedesktop.org/show_bug.cgi?id=100368
>   fdo#103060 https://bugs.freedesktop.org/show_bug.cgi?id=103060
>   fdo#103359 https://bugs.freedesktop.org/show_bug.cgi?id=103359
>   fdo#103540 https://bugs.freedesktop.org/show_bug.cgi?id=103540
>   fdo#103665 https://bugs.freedesktop.org/show_bug.cgi?id=103665
>   fdo#103925 https://bugs.freedesktop.org/show_bug.cgi?id=103925
>   fdo#104724 https://bugs.freedesktop.org/show_bug.cgi?id=104724
>   fdo#105347 https://bugs.freedesktop.org/show_bug.cgi?id=105347
>   fdo#105363 https://bugs.freedesktop.org/show_bug.cgi?id=105363
>   fdo#105411 https://bugs.freedesktop.org/show_bug.cgi?id=105411
>   fdo#106641 https://bugs.freedesktop.org/show_bug.cgi?id=106641
>   k.org#198133 https://bugzilla.kernel.org/show_bug.cgi?id=198133
> 
> 
> == Participating hosts (5 -> 5) ==
> 
>   No changes in participating hosts
> 
> 
> == Build changes ==
> 
>     * IGT: IGT_4532 -> IGTPW_1526
>     * Linux: CI_DRM_4404 -> CI_DRM_4420
> 
>   CI_DRM_4404: ceaab659002c938f1788b7458d5081fadc3c1ddc @ git://anongit.freedesktop.org/gfx-ci/linux
>   CI_DRM_4420: d9596d1a02b553958c684ef2ea0d3e64e8f68efe @ git://anongit.freedesktop.org/gfx-ci/linux
>   IGTPW_1526: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_1526/
>   IGT_4532: 840d12e2f050b784552197403d6575a57b6e896d @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
> 
> == Logs ==
> 
> For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_1526/shards.html

-- 
Ville Syrjälä
Intel
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2018-07-04 14:45 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-06-29 16:23 [igt-dev] [PATCH i-g-t] tests/gem_render_copy: Use a more elaborate pattern of pixels Ville Syrjala
2018-06-29 16:57 ` [igt-dev] ✓ Fi.CI.BAT: success for " Patchwork
2018-06-29 17:59 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
2018-06-29 20:12 ` [igt-dev] [PATCH i-g-t] " Chris Wilson
2018-07-03 12:30 ` [igt-dev] [PATCH i-g-t v2] " Ville Syrjala
2018-07-03 14:00   ` Chris Wilson
2018-07-03 12:50 ` [igt-dev] ✓ Fi.CI.BAT: success for tests/gem_render_copy: Use a more elaborate pattern of pixels (rev2) Patchwork
2018-07-03 19:04 ` [igt-dev] ✗ Fi.CI.IGT: failure " Patchwork
2018-07-04 14:45   ` Ville Syrjälä

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.