All of lore.kernel.org
 help / color / mirror / Atom feed
* [igt-dev] [PATCH i-g-t v2 0/8] Writeback fixes and improvements
@ 2022-03-28 14:55 Maxime Ripard
  2022-03-28 14:55 ` [igt-dev] [PATCH i-g-t v2 1/8] lib/igt_frame: Rename summary fd variable Maxime Ripard
                   ` (9 more replies)
  0 siblings, 10 replies; 19+ messages in thread
From: Maxime Ripard @ 2022-03-28 14:55 UTC (permalink / raw)
  To: igt-dev, Petri Latvala, Arkadiusz Hiler; +Cc: Pekka Paalanen, Maxime Ripard

Hi,

Here's a series addressing the writeback-check-output test not passing
on vc4. This is due to the fact that the writeback controller will force
the X component to 0, while we expect the output and input buffers to be
identical, and the input buffer has 0xff.

This series tackles this by adding some support to dump the faulty
frames in PNG and raw, which proved to be useful while debugging this
series. Then, we rework the hash function to ignore the X component of
our buffer and only hash the pixels themselves.

Finally, we change the input buffer X value to a garbage, different from
0 and 0xff, value to make sure the hardware properly ignores the
component and doesn't treat it as alpha.

Let me know what you think,
Maxime

Changes from v1:
  - Rebased on master
  - Added maintainers to the recipients

Maxime Ripard (8):
  lib/igt_frame: Rename summary fd variable
  lib/igt_frame: Move frame dump logging to function
  lib/igt_frame: Move frame path creation to function
  lib/igt_frame: Add function to dump frames in RGB and raw
  tests/kms_writeback: Use endianness accessor to fill pixels
  tests/kms_writeback: Dump the frames if the don't match
  lib/igt_fb: Ignore the X component when computing CRC
  tests/kms_writeback: Use a garbage X value to create fill our test
    buffer

 lib/igt_core.h        |   9 +++
 lib/igt_fb.c          |  20 ++++--
 lib/igt_frame.c       | 137 ++++++++++++++++++++++++++++++++++++------
 lib/igt_frame.h       |   4 ++
 tests/kms_writeback.c |  40 +++++++++++-
 5 files changed, 185 insertions(+), 25 deletions(-)

-- 
2.35.1


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

* [igt-dev] [PATCH i-g-t v2 1/8] lib/igt_frame: Rename summary fd variable
  2022-03-28 14:55 [igt-dev] [PATCH i-g-t v2 0/8] Writeback fixes and improvements Maxime Ripard
@ 2022-03-28 14:55 ` Maxime Ripard
  2022-03-28 14:55 ` [igt-dev] [PATCH i-g-t v2 2/8] lib/igt_frame: Move frame dump logging to function Maxime Ripard
                   ` (8 subsequent siblings)
  9 siblings, 0 replies; 19+ messages in thread
From: Maxime Ripard @ 2022-03-28 14:55 UTC (permalink / raw)
  To: igt-dev, Petri Latvala, Arkadiusz Hiler; +Cc: Pekka Paalanen, Maxime Ripard

The igt_write_frame_to_png() function takes a file descriptor to a
summary text file to write the path to the PNG it will dump the frame
to.

Since we have multiple files involved, rename the generic fd variable to
summary_fd.

Signed-off-by: Maxime Ripard <maxime@cerno.tech>
---
 lib/igt_frame.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/lib/igt_frame.c b/lib/igt_frame.c
index 45523a79f601..03aeb24d6edb 100644
--- a/lib/igt_frame.c
+++ b/lib/igt_frame.c
@@ -57,7 +57,7 @@ bool igt_frame_dump_is_enabled(void)
 	return igt_frame_dump_path != NULL;
 }
 
-static void igt_write_frame_to_png(cairo_surface_t *surface, int fd,
+static void igt_write_frame_to_png(cairo_surface_t *surface, int summary_fd,
 				   const char *qualifier, const char *suffix)
 {
 	char path[PATH_MAX];
@@ -85,11 +85,11 @@ static void igt_write_frame_to_png(cairo_surface_t *surface, int fd,
 
 	index = strlen(path);
 
-	if (fd >= 0 && index < (PATH_MAX - 1)) {
+	if (summary_fd >= 0 && index < (PATH_MAX - 1)) {
 		path[index++] = '\n';
 		path[index] = '\0';
 
-		write(fd, path, strlen(path));
+		write(summary_fd, path, strlen(path));
 	}
 }
 
-- 
2.35.1

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

* [igt-dev] [PATCH i-g-t v2 2/8] lib/igt_frame: Move frame dump logging to function
  2022-03-28 14:55 [igt-dev] [PATCH i-g-t v2 0/8] Writeback fixes and improvements Maxime Ripard
  2022-03-28 14:55 ` [igt-dev] [PATCH i-g-t v2 1/8] lib/igt_frame: Rename summary fd variable Maxime Ripard
@ 2022-03-28 14:55 ` Maxime Ripard
  2022-03-28 14:55 ` [igt-dev] [PATCH i-g-t v2 3/8] lib/igt_frame: Move frame path creation " Maxime Ripard
                   ` (7 subsequent siblings)
  9 siblings, 0 replies; 19+ messages in thread
From: Maxime Ripard @ 2022-03-28 14:55 UTC (permalink / raw)
  To: igt-dev, Petri Latvala, Arkadiusz Hiler; +Cc: Pekka Paalanen, Maxime Ripard

The igt_write_frame_to_png() has some logic to log into a text file the
path to the PNG file it will generate. Since we'll need it in a future
version, let's move it to a separate function.

Signed-off-by: Maxime Ripard <maxime@cerno.tech>
---
 lib/igt_frame.c | 21 +++++++++++++--------
 1 file changed, 13 insertions(+), 8 deletions(-)

diff --git a/lib/igt_frame.c b/lib/igt_frame.c
index 03aeb24d6edb..530ccbc32df2 100644
--- a/lib/igt_frame.c
+++ b/lib/igt_frame.c
@@ -57,6 +57,18 @@ bool igt_frame_dump_is_enabled(void)
 	return igt_frame_dump_path != NULL;
 }
 
+static void igt_log_frame_path(int summary_fd, char *path)
+{
+	int index = strlen(path);
+
+	if (summary_fd >= 0 && index < (PATH_MAX - 1)) {
+		path[index++] = '\n';
+		path[index] = '\0';
+
+		write(summary_fd, path, strlen(path));
+	}
+}
+
 static void igt_write_frame_to_png(cairo_surface_t *surface, int summary_fd,
 				   const char *qualifier, const char *suffix)
 {
@@ -83,14 +95,7 @@ static void igt_write_frame_to_png(cairo_surface_t *surface, int summary_fd,
 
 	igt_assert_eq(status, CAIRO_STATUS_SUCCESS);
 
-	index = strlen(path);
-
-	if (summary_fd >= 0 && index < (PATH_MAX - 1)) {
-		path[index++] = '\n';
-		path[index] = '\0';
-
-		write(summary_fd, path, strlen(path));
-	}
+	igt_log_frame_path(summary_fd, path);
 }
 
 /**
-- 
2.35.1

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

* [igt-dev] [PATCH i-g-t v2 3/8] lib/igt_frame: Move frame path creation to function
  2022-03-28 14:55 [igt-dev] [PATCH i-g-t v2 0/8] Writeback fixes and improvements Maxime Ripard
  2022-03-28 14:55 ` [igt-dev] [PATCH i-g-t v2 1/8] lib/igt_frame: Rename summary fd variable Maxime Ripard
  2022-03-28 14:55 ` [igt-dev] [PATCH i-g-t v2 2/8] lib/igt_frame: Move frame dump logging to function Maxime Ripard
@ 2022-03-28 14:55 ` Maxime Ripard
  2022-03-28 14:55 ` [igt-dev] [PATCH i-g-t v2 4/8] lib/igt_frame: Add function to dump frames in RGB and raw Maxime Ripard
                   ` (6 subsequent siblings)
  9 siblings, 0 replies; 19+ messages in thread
From: Maxime Ripard @ 2022-03-28 14:55 UTC (permalink / raw)
  To: igt-dev, Petri Latvala, Arkadiusz Hiler; +Cc: Pekka Paalanen, Maxime Ripard

The igt_write_frame_to_png() has some logic to create the PNG filename
Since we'll need the same logic in a future function, let's move it to a
separate function.

Signed-off-by: Maxime Ripard <maxime@cerno.tech>
---
 lib/igt_frame.c | 42 ++++++++++++++++++++++++++++--------------
 1 file changed, 28 insertions(+), 14 deletions(-)

diff --git a/lib/igt_frame.c b/lib/igt_frame.c
index 530ccbc32df2..ba29ac028e1b 100644
--- a/lib/igt_frame.c
+++ b/lib/igt_frame.c
@@ -57,6 +57,30 @@ bool igt_frame_dump_is_enabled(void)
 	return igt_frame_dump_path != NULL;
 }
 
+static char *igt_get_frame_path(const char *qualifier, const char *suffix,
+				const char *extension)
+{
+	char *path;
+	const char *test_name;
+	const char *subtest_name;
+	test_name = igt_test_name();
+	subtest_name = igt_subtest_name();
+
+	path = malloc(PATH_MAX);
+	igt_assert(path);
+
+	if (suffix)
+		snprintf(path, PATH_MAX, "%s/frame-%s-%s-%s-%s.%s",
+			 igt_frame_dump_path, test_name, subtest_name, qualifier,
+			 suffix, extension);
+	else
+		snprintf(path, PATH_MAX, "%s/frame-%s-%s-%s.%s",
+			 igt_frame_dump_path, test_name, subtest_name, qualifier,
+			 extension);
+
+	return path;
+}
+
 static void igt_log_frame_path(int summary_fd, char *path)
 {
 	int index = strlen(path);
@@ -72,22 +96,11 @@ static void igt_log_frame_path(int summary_fd, char *path)
 static void igt_write_frame_to_png(cairo_surface_t *surface, int summary_fd,
 				   const char *qualifier, const char *suffix)
 {
-	char path[PATH_MAX];
-	const char *test_name;
-	const char *subtest_name;
+	char *path;
 	cairo_status_t status;
-	int index;
 
-	test_name = igt_test_name();
-	subtest_name = igt_subtest_name();
-
-	if (suffix)
-		snprintf(path, PATH_MAX, "%s/frame-%s-%s-%s-%s.png",
-			 igt_frame_dump_path, test_name, subtest_name, qualifier,
-			 suffix);
-	else
-		snprintf(path, PATH_MAX, "%s/frame-%s-%s-%s.png",
-			 igt_frame_dump_path, test_name, subtest_name, qualifier);
+	path = igt_get_frame_path(qualifier, suffix, "png");
+	igt_assert(path);
 
 	igt_debug("Dumping %s frame to %s...\n", qualifier, path);
 
@@ -96,6 +109,7 @@ static void igt_write_frame_to_png(cairo_surface_t *surface, int summary_fd,
 	igt_assert_eq(status, CAIRO_STATUS_SUCCESS);
 
 	igt_log_frame_path(summary_fd, path);
+	free(path);
 }
 
 /**
-- 
2.35.1

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

* [igt-dev] [PATCH i-g-t v2 4/8] lib/igt_frame: Add function to dump frames in RGB and raw
  2022-03-28 14:55 [igt-dev] [PATCH i-g-t v2 0/8] Writeback fixes and improvements Maxime Ripard
                   ` (2 preceding siblings ...)
  2022-03-28 14:55 ` [igt-dev] [PATCH i-g-t v2 3/8] lib/igt_frame: Move frame path creation " Maxime Ripard
@ 2022-03-28 14:55 ` Maxime Ripard
  2022-04-29 12:46   ` Pekka Paalanen
  2022-03-28 14:55 ` [igt-dev] [PATCH i-g-t v2 5/8] tests/kms_writeback: Use endianness accessor to fill pixels Maxime Ripard
                   ` (5 subsequent siblings)
  9 siblings, 1 reply; 19+ messages in thread
From: Maxime Ripard @ 2022-03-28 14:55 UTC (permalink / raw)
  To: igt-dev, Petri Latvala, Arkadiusz Hiler; +Cc: Pekka Paalanen, Maxime Ripard

The igt_write_frame_to_png() already allows to dump the content of a
cairo surface into a PNG image. However, it can be useful to have the
raw content of the buffer as well, so let's create a function that will
dump both a PNG image and its raw buffer.

Signed-off-by: Maxime Ripard <maxime@cerno.tech>
---
 lib/igt_frame.c | 82 +++++++++++++++++++++++++++++++++++++++++++++++++
 lib/igt_frame.h |  4 +++
 2 files changed, 86 insertions(+)

diff --git a/lib/igt_frame.c b/lib/igt_frame.c
index ba29ac028e1b..f53ba3a381ef 100644
--- a/lib/igt_frame.c
+++ b/lib/igt_frame.c
@@ -112,6 +112,40 @@ static void igt_write_frame_to_png(cairo_surface_t *surface, int summary_fd,
 	free(path);
 }
 
+static void igt_write_frame_to_raw(cairo_surface_t *surface, int summary_fd,
+				   const char *qualifier, const char *suffix)
+{
+	int height, stride, size;
+	char *path;
+	void *ptr;
+	int out_fd = -1;
+
+	path = igt_get_frame_path(qualifier, suffix, "raw");
+	igt_assert(path);
+
+	igt_debug("Dumping %s frame to %s...\n", qualifier, path);
+
+	out_fd = open(path, O_WRONLY | O_CREAT | O_TRUNC, 0644);
+	igt_assert(out_fd >= 0);
+
+	ptr = cairo_image_surface_get_data(surface);
+	igt_assert(ptr);
+
+	stride = cairo_image_surface_get_stride(surface);
+	igt_assert(stride > 0);
+
+	height = cairo_image_surface_get_height(surface);
+	igt_assert(height > 0);
+
+	size = stride * height;
+	write(out_fd, ptr, size);
+
+	close(out_fd);
+
+	igt_log_frame_path(summary_fd, path);
+	free(path);
+}
+
 /**
  * igt_write_compared_frames_to_png:
  * @reference: The reference cairo surface
@@ -158,6 +192,54 @@ void igt_write_compared_frames_to_png(cairo_surface_t *reference,
 	close(fd);
 }
 
+/**
+ * igt_write_compared_frames:
+ * @reference: The reference cairo surface
+ * @capture: The captured cairo surface
+ * @reference_suffix: The suffix to give to the reference png file
+ * @capture_suffix: The suffix to give to the capture png file
+ *
+ * Dump previously compared frames to png and raw files.
+ */
+void igt_write_compared_frames(cairo_surface_t *reference,
+			       cairo_surface_t *capture,
+			       const char *reference_suffix,
+			       const char *capture_suffix)
+{
+	char *id;
+	const char *test_name;
+	const char *subtest_name;
+	char path[PATH_MAX];
+	int fd = -1;
+
+	if (!igt_frame_dump_is_enabled())
+		return;
+
+	id = getenv("IGT_FRAME_DUMP_ID");
+
+	test_name = igt_test_name();
+	subtest_name = igt_subtest_name();
+
+	if (id)
+		snprintf(path, PATH_MAX, "%s/frame-%s-%s-%s.txt",
+			 igt_frame_dump_path, test_name, subtest_name, id);
+	else
+		snprintf(path, PATH_MAX, "%s/frame-%s-%s.txt",
+			 igt_frame_dump_path, test_name, subtest_name);
+
+	fd = open(path, O_WRONLY | O_CREAT | O_TRUNC, 0644);
+	igt_assert(fd >= 0);
+
+	igt_debug("Writing dump report to %s...\n", path);
+
+	igt_write_frame_to_raw(reference, fd, "reference", reference_suffix);
+	igt_write_frame_to_png(reference, fd, "reference", reference_suffix);
+	igt_write_frame_to_raw(capture, fd, "capture", capture_suffix);
+	igt_write_frame_to_png(capture, fd, "capture", capture_suffix);
+
+	close(fd);
+}
+
 /**
  * igt_check_analog_frame_match:
  * @reference: The reference cairo surface
diff --git a/lib/igt_frame.h b/lib/igt_frame.h
index f44f57d7ce73..51cbc2bd68b4 100644
--- a/lib/igt_frame.h
+++ b/lib/igt_frame.h
@@ -36,6 +36,10 @@ void igt_write_compared_frames_to_png(cairo_surface_t *reference,
 				      cairo_surface_t *capture,
 				      const char *reference_suffix,
 				      const char *capture_suffix);
+void igt_write_compared_frames(cairo_surface_t *reference,
+			       cairo_surface_t *capture,
+			       const char *reference_suffix,
+			       const char *capture_suffix);
 bool igt_check_analog_frame_match(cairo_surface_t *reference,
 				  cairo_surface_t *capture);
 bool igt_check_checkerboard_frame_match(cairo_surface_t *reference,
-- 
2.35.1

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

* [igt-dev] [PATCH i-g-t v2 5/8] tests/kms_writeback: Use endianness accessor to fill pixels
  2022-03-28 14:55 [igt-dev] [PATCH i-g-t v2 0/8] Writeback fixes and improvements Maxime Ripard
                   ` (3 preceding siblings ...)
  2022-03-28 14:55 ` [igt-dev] [PATCH i-g-t v2 4/8] lib/igt_frame: Add function to dump frames in RGB and raw Maxime Ripard
@ 2022-03-28 14:55 ` Maxime Ripard
  2022-03-28 14:55 ` [igt-dev] [PATCH i-g-t v2 6/8] tests/kms_writeback: Dump the frames if the don't match Maxime Ripard
                   ` (4 subsequent siblings)
  9 siblings, 0 replies; 19+ messages in thread
From: Maxime Ripard @ 2022-03-28 14:55 UTC (permalink / raw)
  To: igt-dev, Petri Latvala, Arkadiusz Hiler; +Cc: Pekka Paalanen, Maxime Ripard

The fill_fb() function in the kms_writeback test suite will fill an
XRGB8888 buffer using a pattern passed an an argument. However, the
pattern is native endian, while XRGB8888 is little-endian.

Add an accessor and use it to fill the framebuffer with our pattern.

Signed-off-by: Maxime Ripard <maxime@cerno.tech>
---
 lib/igt_core.h        | 9 +++++++++
 tests/kms_writeback.c | 2 +-
 2 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/lib/igt_core.h b/lib/igt_core.h
index 78dc6202ced4..12b1a912c1d7 100644
--- a/lib/igt_core.h
+++ b/lib/igt_core.h
@@ -31,6 +31,7 @@
 #define IGT_CORE_H
 
 #include <assert.h>
+#include <byteswap.h>
 #include <setjmp.h>
 #include <stdbool.h>
 #include <stdint.h>
@@ -1446,6 +1447,14 @@ void igt_kmsg(const char *format, ...);
 #define READ_ONCE(x) (*(volatile typeof(x) *)(&(x)))
 #define WRITE_ONCE(x, v) do *(volatile typeof(x) *)(&(x)) = (v); while (0)
 
+#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
+#define cpu_to_le32(x)  bswap_32(x)
+#define le32_to_cpu(x)  bswap_32(x)
+#else
+#define cpu_to_le32(x)  (x)
+#define le32_to_cpu(x)  (x)
+#endif
+
 #define MSEC_PER_SEC (1000)
 #define USEC_PER_SEC (1000*MSEC_PER_SEC)
 #define NSEC_PER_SEC (1000*USEC_PER_SEC)
diff --git a/tests/kms_writeback.c b/tests/kms_writeback.c
index 21d62faabf6b..faa790cc0f72 100644
--- a/tests/kms_writeback.c
+++ b/tests/kms_writeback.c
@@ -239,7 +239,7 @@ static void fill_fb(igt_fb_t *fb, uint32_t pixel)
 
 	pixel_count = fb->strides[0] * fb->height / sizeof(uint32_t);
 	for (i = 0; i < pixel_count; i++)
-		ptr[i] = pixel;
+		ptr[i] = cpu_to_le32(pixel);
 
 	igt_fb_unmap_buffer(fb, ptr);
 }
-- 
2.35.1

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

* [igt-dev] [PATCH i-g-t v2 6/8] tests/kms_writeback: Dump the frames if the don't match
  2022-03-28 14:55 [igt-dev] [PATCH i-g-t v2 0/8] Writeback fixes and improvements Maxime Ripard
                   ` (4 preceding siblings ...)
  2022-03-28 14:55 ` [igt-dev] [PATCH i-g-t v2 5/8] tests/kms_writeback: Use endianness accessor to fill pixels Maxime Ripard
@ 2022-03-28 14:55 ` Maxime Ripard
  2022-04-29 12:55   ` Pekka Paalanen
  2022-03-28 14:55 ` [igt-dev] [PATCH i-g-t v2 7/8] lib/igt_fb: Ignore the X component when computing CRC Maxime Ripard
                   ` (3 subsequent siblings)
  9 siblings, 1 reply; 19+ messages in thread
From: Maxime Ripard @ 2022-03-28 14:55 UTC (permalink / raw)
  To: igt-dev, Petri Latvala, Arkadiusz Hiler; +Cc: Pekka Paalanen, Maxime Ripard

The writeback tests will make sure the reference and captured frames
match. If they don't however, we don't get anything but their hash which
isn't really helpful.

Add a function similar to chamelium_assert_crc_eq_or_dump() to dump the
PNG and raw buffers of those two frames if they don't match and frame
dumping has been enabled.

Signed-off-by: Maxime Ripard <maxime@cerno.tech>
---
 tests/kms_writeback.c | 36 +++++++++++++++++++++++++++++++++++-
 1 file changed, 35 insertions(+), 1 deletion(-)

diff --git a/tests/kms_writeback.c b/tests/kms_writeback.c
index faa790cc0f72..2366692865b7 100644
--- a/tests/kms_writeback.c
+++ b/tests/kms_writeback.c
@@ -256,6 +256,39 @@ static void get_and_wait_out_fence(igt_output_t *output)
 	output->writeback_out_fence_fd = -1;
 }
 
+static void writeback_assert_crtc_eq_or_dump(igt_crc_t *reference_crc,
+					     igt_fb_t *reference_fb,
+					     igt_crc_t *capture_crc,
+					     igt_fb_t *capture_fb)
+{
+	bool eq;
+
+	eq = igt_check_crc_equal(reference_crc, capture_crc);
+	if (!eq) {
+		cairo_surface_t *reference, *capture;
+		char *reference_suffix, *capture_suffix;
+
+		reference = igt_get_cairo_surface(reference_fb->fd, reference_fb);
+		igt_assert(reference);
+
+		capture = igt_get_cairo_surface(capture_fb->fd, capture_fb);
+		igt_assert(capture);
+
+		reference_suffix = igt_crc_to_string_extended(reference_crc, '-', 2);
+		capture_suffix = igt_crc_to_string_extended(capture_crc, '-', 2);
+
+		/* Write reference and capture frames to png. */
+		igt_write_compared_frames(reference, capture,
+					  reference_suffix,
+					  capture_suffix);
+
+		free(reference_suffix);
+		free(capture_suffix);
+	}
+
+	igt_assert(eq);
+}
+
 static void writeback_sequence(igt_output_t *output, igt_plane_t *plane,
 				igt_fb_t *in_fb, igt_fb_t *out_fbs[], int n_commits)
 {
@@ -303,7 +336,8 @@ static void writeback_sequence(igt_output_t *output, igt_plane_t *plane,
 		if (out_fbs[i]) {
 			igt_crc_t out_after;
 			igt_fb_get_fnv1a_crc(out_fbs[i], &out_after);
-			igt_assert_crc_equal(&out_expected, &out_after);
+			writeback_assert_crtc_eq_or_dump(&out_expected, in_fb,
+							 &out_after, out_fbs[i]);
 
 			/* And clear it, for the next time */
 			fill_fb(out_fbs[i], clear_color);
-- 
2.35.1

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

* [igt-dev] [PATCH i-g-t v2 7/8] lib/igt_fb: Ignore the X component when computing CRC
  2022-03-28 14:55 [igt-dev] [PATCH i-g-t v2 0/8] Writeback fixes and improvements Maxime Ripard
                   ` (5 preceding siblings ...)
  2022-03-28 14:55 ` [igt-dev] [PATCH i-g-t v2 6/8] tests/kms_writeback: Dump the frames if the don't match Maxime Ripard
@ 2022-03-28 14:55 ` Maxime Ripard
  2022-04-29 12:58   ` Pekka Paalanen
  2022-03-28 14:55 ` [igt-dev] [PATCH i-g-t v2 8/8] tests/kms_writeback: Use a garbage X value to create fill our test buffer Maxime Ripard
                   ` (2 subsequent siblings)
  9 siblings, 1 reply; 19+ messages in thread
From: Maxime Ripard @ 2022-03-28 14:55 UTC (permalink / raw)
  To: igt-dev, Petri Latvala, Arkadiusz Hiler; +Cc: Pekka Paalanen, Maxime Ripard

The igt_fb_get_fnv1a_crc() function will compute a FNV-1a hash over the
content of the framebuffer. The sole user of this function is the
writeback test suite, which will use it to compare an XRGB8888 buffer
used in input to an XRGB8888 buffer filled by the writeback connector.

However, that function uses each bytes of each buffers to compute the
hash, and therefore the writeback code assumes that the hardware will
preserve the content of the X component through the writeback pipeline,
which isn't true for all hardware. VC4 doesn't for example.

Since that function is only ever used for XRGB8888 buffers, let's just
set the most significant to 0 (which is the X padding) for each pixel
when computing the hash, and thus ignore whatever the hardware will
return here.

Signed-off-by: Maxime Ripard <maxime@cerno.tech>
---
 lib/igt_fb.c | 20 ++++++++++++++++----
 1 file changed, 16 insertions(+), 4 deletions(-)

diff --git a/lib/igt_fb.c b/lib/igt_fb.c
index eafbe7fd41cd..66c52bb83876 100644
--- a/lib/igt_fb.c
+++ b/lib/igt_fb.c
@@ -4392,15 +4392,19 @@ int igt_fb_get_fnv1a_crc(struct igt_fb *fb, igt_crc_t *crc)
 {
 	const uint32_t FNV1a_OFFSET_BIAS = 2166136261;
 	const uint32_t FNV1a_PRIME = 16777619;
+	uint32_t *line = NULL;
 	uint32_t hash;
 	void *map;
-	char *ptr, *line = NULL;
+	char *ptr;
 	int x, y, cpp = igt_drm_format_to_bpp(fb->drm_format) / 8;
 	uint32_t stride = calc_plane_stride(fb, 0);
 
 	if (fb->num_planes != 1)
 		return -EINVAL;
 
+	if (fb->drm_format != DRM_FORMAT_XRGB8888)
+		return -EINVAL;
+
 	ptr = igt_fb_map_buffer(fb->fd, fb);
 	igt_assert(ptr);
 	map = ptr;
@@ -4422,9 +4426,17 @@ int igt_fb_get_fnv1a_crc(struct igt_fb *fb, igt_crc_t *crc)
 
 		igt_memcpy_from_wc(line, ptr, fb->width * cpp);
 
-		for (x = 0; x < fb->width * cpp; x++) {
-			hash ^= line[x];
-			hash *= FNV1a_PRIME;
+		for (x = 0; x < fb->width; x++) {
+			unsigned int i;
+			uint32_t pixel = le32_to_cpu(line[x]);
+			pixel &= 0x00ffffff;
+
+			for (i = 0; i < sizeof(pixel); i++) {
+				uint8_t component = (pixel >> (i * 8)) & 0xff;
+
+				hash ^= component;
+				hash *= FNV1a_PRIME;
+			}
 		}
 	}
 
-- 
2.35.1

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

* [igt-dev] [PATCH i-g-t v2 8/8] tests/kms_writeback: Use a garbage X value to create fill our test buffer
  2022-03-28 14:55 [igt-dev] [PATCH i-g-t v2 0/8] Writeback fixes and improvements Maxime Ripard
                   ` (6 preceding siblings ...)
  2022-03-28 14:55 ` [igt-dev] [PATCH i-g-t v2 7/8] lib/igt_fb: Ignore the X component when computing CRC Maxime Ripard
@ 2022-03-28 14:55 ` Maxime Ripard
  2022-04-29 13:01   ` Pekka Paalanen
  2022-03-28 16:07 ` [igt-dev] ✓ Fi.CI.BAT: success for Writeback fixes and improvements (rev2) Patchwork
  2022-03-28 19:08 ` [igt-dev] ✗ Fi.CI.IGT: failure " Patchwork
  9 siblings, 1 reply; 19+ messages in thread
From: Maxime Ripard @ 2022-03-28 14:55 UTC (permalink / raw)
  To: igt-dev, Petri Latvala, Arkadiusz Hiler; +Cc: Pekka Paalanen, Maxime Ripard

Since we use buffers in XRGB8888, whatever value we have in X should be
ignored by the drivers and the hardware. However, since we always use
0xff in our test, whether that is the case or not cannot be determined.

Let's use a garbage value (but consistent across test runs) to make sure
it doesn't have any impact on the writeback output.

Signed-off-by: Maxime Ripard <maxime@cerno.tech>
---
 tests/kms_writeback.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tests/kms_writeback.c b/tests/kms_writeback.c
index 2366692865b7..4efd99713479 100644
--- a/tests/kms_writeback.c
+++ b/tests/kms_writeback.c
@@ -293,7 +293,7 @@ static void writeback_sequence(igt_output_t *output, igt_plane_t *plane,
 				igt_fb_t *in_fb, igt_fb_t *out_fbs[], int n_commits)
 {
 	int i = 0;
-	uint32_t in_fb_colors[2] = { 0xffff0000, 0xff00ff00 };
+	uint32_t in_fb_colors[2] = { 0x42ff0000, 0x4200ff00 };
 	uint32_t clear_color = 0xffffffff;
 
 	igt_crc_t cleared_crc, out_expected;
-- 
2.35.1

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

* [igt-dev] ✓ Fi.CI.BAT: success for Writeback fixes and improvements (rev2)
  2022-03-28 14:55 [igt-dev] [PATCH i-g-t v2 0/8] Writeback fixes and improvements Maxime Ripard
                   ` (7 preceding siblings ...)
  2022-03-28 14:55 ` [igt-dev] [PATCH i-g-t v2 8/8] tests/kms_writeback: Use a garbage X value to create fill our test buffer Maxime Ripard
@ 2022-03-28 16:07 ` Patchwork
  2022-03-28 19:08 ` [igt-dev] ✗ Fi.CI.IGT: failure " Patchwork
  9 siblings, 0 replies; 19+ messages in thread
From: Patchwork @ 2022-03-28 16:07 UTC (permalink / raw)
  To: Maxime Ripard; +Cc: igt-dev

[-- Attachment #1: Type: text/plain, Size: 13071 bytes --]

== Series Details ==

Series: Writeback fixes and improvements (rev2)
URL   : https://patchwork.freedesktop.org/series/101159/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_11412 -> IGTPW_6839
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  External URL: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/index.html

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

  Missing    (3): bat-adlm-1 fi-bsw-cyan fi-bdw-samus 

Known issues
------------

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

### IGT changes ###

#### Issues hit ####

  * igt@core_hotunplug@unbind-rebind:
    - fi-bsw-n3050:       NOTRUN -> [INCOMPLETE][1] ([i915#5441])
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/fi-bsw-n3050/igt@core_hotunplug@unbind-rebind.html
    - fi-tgl-1115g4:      NOTRUN -> [INCOMPLETE][2] ([i915#1373] / [i915#5441])
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/fi-tgl-1115g4/igt@core_hotunplug@unbind-rebind.html
    - fi-bsw-nick:        NOTRUN -> [INCOMPLETE][3] ([i915#5441])
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/fi-bsw-nick/igt@core_hotunplug@unbind-rebind.html

  * igt@gem_render_linear_blits@basic:
    - fi-bwr-2160:        [PASS][4] -> [INCOMPLETE][5] ([i915#5441])
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11412/fi-bwr-2160/igt@gem_render_linear_blits@basic.html
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/fi-bwr-2160/igt@gem_render_linear_blits@basic.html
    - fi-snb-2600:        [PASS][6] -> [INCOMPLETE][7] ([i915#5441])
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11412/fi-snb-2600/igt@gem_render_linear_blits@basic.html
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/fi-snb-2600/igt@gem_render_linear_blits@basic.html

  * igt@gem_render_tiled_blits@basic:
    - fi-skl-6700k2:      [PASS][8] -> [INCOMPLETE][9] ([i915#5441])
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11412/fi-skl-6700k2/igt@gem_render_tiled_blits@basic.html
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/fi-skl-6700k2/igt@gem_render_tiled_blits@basic.html
    - fi-cfl-8109u:       [PASS][10] -> [INCOMPLETE][11] ([i915#5441])
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11412/fi-cfl-8109u/igt@gem_render_tiled_blits@basic.html
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/fi-cfl-8109u/igt@gem_render_tiled_blits@basic.html
    - fi-kbl-7567u:       [PASS][12] -> [INCOMPLETE][13] ([i915#5441])
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11412/fi-kbl-7567u/igt@gem_render_tiled_blits@basic.html
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/fi-kbl-7567u/igt@gem_render_tiled_blits@basic.html

  * igt@gem_tiled_blits@basic:
    - fi-hsw-4770:        [PASS][14] -> [INCOMPLETE][15] ([i915#5441])
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11412/fi-hsw-4770/igt@gem_tiled_blits@basic.html
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/fi-hsw-4770/igt@gem_tiled_blits@basic.html
    - fi-ilk-650:         [PASS][16] -> [INCOMPLETE][17] ([i915#5441])
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11412/fi-ilk-650/igt@gem_tiled_blits@basic.html
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/fi-ilk-650/igt@gem_tiled_blits@basic.html

  * igt@i915_pm_backlight@basic-brightness:
    - fi-tgl-1115g4:      NOTRUN -> [SKIP][18] ([i915#1155])
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/fi-tgl-1115g4/igt@i915_pm_backlight@basic-brightness.html

  * igt@i915_selftest@live@hangcheck:
    - bat-dg1-6:          NOTRUN -> [DMESG-FAIL][19] ([i915#4494] / [i915#4957])
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/bat-dg1-6/igt@i915_selftest@live@hangcheck.html

  * igt@kms_chamelium@common-hpd-after-suspend:
    - fi-tgl-1115g4:      NOTRUN -> [SKIP][20] ([fdo#111827]) +8 similar issues
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/fi-tgl-1115g4/igt@kms_chamelium@common-hpd-after-suspend.html

  * igt@kms_chamelium@dp-crc-fast:
    - fi-bsw-nick:        NOTRUN -> [SKIP][21] ([fdo#109271] / [fdo#111827]) +8 similar issues
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/fi-bsw-nick/igt@kms_chamelium@dp-crc-fast.html

  * igt@kms_chamelium@hdmi-crc-fast:
    - fi-bsw-n3050:       NOTRUN -> [SKIP][22] ([fdo#109271] / [fdo#111827]) +8 similar issues
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/fi-bsw-n3050/igt@kms_chamelium@hdmi-crc-fast.html

  * igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic:
    - fi-tgl-1115g4:      NOTRUN -> [SKIP][23] ([i915#4103]) +1 similar issue
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/fi-tgl-1115g4/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic.html

  * igt@kms_force_connector_basic@force-load-detect:
    - fi-tgl-1115g4:      NOTRUN -> [SKIP][24] ([fdo#109285])
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/fi-tgl-1115g4/igt@kms_force_connector_basic@force-load-detect.html

  * igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-c:
    - fi-bsw-nick:        NOTRUN -> [SKIP][25] ([fdo#109271] / [i915#5341])
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/fi-bsw-nick/igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-c.html
    - fi-blb-e6850:       NOTRUN -> [SKIP][26] ([fdo#109271] / [i915#5341])
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/fi-blb-e6850/igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-c.html

  * igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-d:
    - fi-blb-e6850:       NOTRUN -> [SKIP][27] ([fdo#109271]) +45 similar issues
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/fi-blb-e6850/igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-d.html

  * igt@kms_pipe_crc_basic@hang-read-crc-pipe-a:
    - fi-bsw-n3050:       NOTRUN -> [SKIP][28] ([fdo#109271]) +22 similar issues
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/fi-bsw-n3050/igt@kms_pipe_crc_basic@hang-read-crc-pipe-a.html

  * igt@kms_psr@primary_mmap_gtt:
    - fi-tgl-1115g4:      NOTRUN -> [SKIP][29] ([fdo#110189]) +3 similar issues
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/fi-tgl-1115g4/igt@kms_psr@primary_mmap_gtt.html

  * igt@kms_setmode@basic-clone-single-crtc:
    - fi-tgl-1115g4:      NOTRUN -> [SKIP][30] ([i915#3555])
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/fi-tgl-1115g4/igt@kms_setmode@basic-clone-single-crtc.html

  * igt@prime_vgem@basic-fence-flip:
    - fi-bsw-nick:        NOTRUN -> [SKIP][31] ([fdo#109271]) +37 similar issues
   [31]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/fi-bsw-nick/igt@prime_vgem@basic-fence-flip.html

  * igt@prime_vgem@basic-userptr:
    - fi-tgl-1115g4:      NOTRUN -> [SKIP][32] ([i915#3301])
   [32]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/fi-tgl-1115g4/igt@prime_vgem@basic-userptr.html

  * igt@runner@aborted:
    - fi-bwr-2160:        NOTRUN -> [FAIL][33] ([i915#4312])
   [33]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/fi-bwr-2160/igt@runner@aborted.html
    - fi-hsw-4770:        NOTRUN -> [FAIL][34] ([i915#4312])
   [34]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/fi-hsw-4770/igt@runner@aborted.html

  
#### Possible fixes ####

  * igt@gem_render_linear_blits@basic:
    - fi-bsw-nick:        [INCOMPLETE][35] ([i915#5441]) -> [PASS][36]
   [35]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11412/fi-bsw-nick/igt@gem_render_linear_blits@basic.html
   [36]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/fi-bsw-nick/igt@gem_render_linear_blits@basic.html

  * igt@gem_render_tiled_blits@basic:
    - fi-bsw-n3050:       [INCOMPLETE][37] ([i915#5441]) -> [PASS][38]
   [37]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11412/fi-bsw-n3050/igt@gem_render_tiled_blits@basic.html
   [38]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/fi-bsw-n3050/igt@gem_render_tiled_blits@basic.html
    - fi-tgl-1115g4:      [INCOMPLETE][39] ([i915#5441]) -> [PASS][40]
   [39]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11412/fi-tgl-1115g4/igt@gem_render_tiled_blits@basic.html
   [40]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/fi-tgl-1115g4/igt@gem_render_tiled_blits@basic.html

  * igt@gem_tiled_blits@basic:
    - {bat-jsl-1}:        [INCOMPLETE][41] ([i915#5441]) -> [PASS][42]
   [41]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11412/bat-jsl-1/igt@gem_tiled_blits@basic.html
   [42]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/bat-jsl-1/igt@gem_tiled_blits@basic.html
    - {bat-adlp-6}:       [INCOMPLETE][43] ([i915#5441]) -> [PASS][44]
   [43]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11412/bat-adlp-6/igt@gem_tiled_blits@basic.html
   [44]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/bat-adlp-6/igt@gem_tiled_blits@basic.html
    - fi-blb-e6850:       [INCOMPLETE][45] ([i915#5441]) -> [PASS][46]
   [45]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11412/fi-blb-e6850/igt@gem_tiled_blits@basic.html
   [46]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/fi-blb-e6850/igt@gem_tiled_blits@basic.html
    - {bat-rpls-2}:       [INCOMPLETE][47] ([i915#5441]) -> [PASS][48]
   [47]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11412/bat-rpls-2/igt@gem_tiled_blits@basic.html
   [48]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/bat-rpls-2/igt@gem_tiled_blits@basic.html
    - {fi-hsw-g3258}:     [INCOMPLETE][49] ([i915#5441]) -> [PASS][50]
   [49]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11412/fi-hsw-g3258/igt@gem_tiled_blits@basic.html
   [50]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/fi-hsw-g3258/igt@gem_tiled_blits@basic.html

  * igt@i915_selftest@live@gt_engines:
    - bat-dg1-6:          [INCOMPLETE][51] ([i915#4418]) -> [PASS][52]
   [51]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11412/bat-dg1-6/igt@i915_selftest@live@gt_engines.html
   [52]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/bat-dg1-6/igt@i915_selftest@live@gt_engines.html

  
#### Warnings ####

  * igt@runner@aborted:
    - fi-bsw-n3050:       [FAIL][53] ([i915#3428] / [i915#4312]) -> [FAIL][54] ([i915#4312])
   [53]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11412/fi-bsw-n3050/igt@runner@aborted.html
   [54]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/fi-bsw-n3050/igt@runner@aborted.html

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

  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [fdo#109285]: https://bugs.freedesktop.org/show_bug.cgi?id=109285
  [fdo#109315]: https://bugs.freedesktop.org/show_bug.cgi?id=109315
  [fdo#110189]: https://bugs.freedesktop.org/show_bug.cgi?id=110189
  [fdo#111827]: https://bugs.freedesktop.org/show_bug.cgi?id=111827
  [i915#1072]: https://gitlab.freedesktop.org/drm/intel/issues/1072
  [i915#1155]: https://gitlab.freedesktop.org/drm/intel/issues/1155
  [i915#1373]: https://gitlab.freedesktop.org/drm/intel/issues/1373
  [i915#3003]: https://gitlab.freedesktop.org/drm/intel/issues/3003
  [i915#3012]: https://gitlab.freedesktop.org/drm/intel/issues/3012
  [i915#3282]: https://gitlab.freedesktop.org/drm/intel/issues/3282
  [i915#3291]: https://gitlab.freedesktop.org/drm/intel/issues/3291
  [i915#3301]: https://gitlab.freedesktop.org/drm/intel/issues/3301
  [i915#3428]: https://gitlab.freedesktop.org/drm/intel/issues/3428
  [i915#3555]: https://gitlab.freedesktop.org/drm/intel/issues/3555
  [i915#3708]: https://gitlab.freedesktop.org/drm/intel/issues/3708
  [i915#4103]: https://gitlab.freedesktop.org/drm/intel/issues/4103
  [i915#4312]: https://gitlab.freedesktop.org/drm/intel/issues/4312
  [i915#4418]: https://gitlab.freedesktop.org/drm/intel/issues/4418
  [i915#4494]: https://gitlab.freedesktop.org/drm/intel/issues/4494
  [i915#4957]: https://gitlab.freedesktop.org/drm/intel/issues/4957
  [i915#4983]: https://gitlab.freedesktop.org/drm/intel/issues/4983
  [i915#5127]: https://gitlab.freedesktop.org/drm/intel/issues/5127
  [i915#5195]: https://gitlab.freedesktop.org/drm/intel/issues/5195
  [i915#5323]: https://gitlab.freedesktop.org/drm/intel/issues/5323
  [i915#533]: https://gitlab.freedesktop.org/drm/intel/issues/533
  [i915#5338]: https://gitlab.freedesktop.org/drm/intel/issues/5338
  [i915#5341]: https://gitlab.freedesktop.org/drm/intel/issues/5341
  [i915#5441]: https://gitlab.freedesktop.org/drm/intel/issues/5441


Build changes
-------------

  * CI: CI-20190529 -> None
  * IGT: IGT_6397 -> IGTPW_6839

  CI-20190529: 20190529
  CI_DRM_11412: 7509f334229f855174248a4f7cdcffde928fda7e @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_6839: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/index.html
  IGT_6397: 37ec3b8ffd2c36e5a4c9d2c0d22577920212dc42 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/index.html

[-- Attachment #2: Type: text/html, Size: 15544 bytes --]

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

* [igt-dev] ✗ Fi.CI.IGT: failure for Writeback fixes and improvements (rev2)
  2022-03-28 14:55 [igt-dev] [PATCH i-g-t v2 0/8] Writeback fixes and improvements Maxime Ripard
                   ` (8 preceding siblings ...)
  2022-03-28 16:07 ` [igt-dev] ✓ Fi.CI.BAT: success for Writeback fixes and improvements (rev2) Patchwork
@ 2022-03-28 19:08 ` Patchwork
  2022-03-30  7:30   ` Maxime Ripard
  9 siblings, 1 reply; 19+ messages in thread
From: Patchwork @ 2022-03-28 19:08 UTC (permalink / raw)
  To: Maxime Ripard; +Cc: igt-dev

[-- Attachment #1: Type: text/plain, Size: 30258 bytes --]

== Series Details ==

Series: Writeback fixes and improvements (rev2)
URL   : https://patchwork.freedesktop.org/series/101159/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_11412_full -> IGTPW_6839_full
====================================================

Summary
-------

  **FAILURE**

  Serious unknown changes coming with IGTPW_6839_full absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in IGTPW_6839_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://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/index.html

Participating hosts (11 -> 7)
------------------------------

  Missing    (4): pig-skl-6260u shard-skl pig-kbl-iris pig-glk-j5005 

Possible new issues
-------------------

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

### IGT changes ###

#### Possible regressions ####

  * igt@gem_create@create-clear:
    - shard-tglb:         NOTRUN -> [INCOMPLETE][1]
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-tglb7/igt@gem_create@create-clear.html

  
Known issues
------------

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

### IGT changes ###

#### Issues hit ####

  * igt@core_hotunplug@unbind-rebind:
    - shard-snb:          NOTRUN -> [INCOMPLETE][2] ([i915#5441]) +7 similar issues
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-snb5/igt@core_hotunplug@unbind-rebind.html
    - shard-apl:          NOTRUN -> [INCOMPLETE][3] ([i915#1373] / [i915#1982] / [i915#5441])
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-apl8/igt@core_hotunplug@unbind-rebind.html

  * igt@feature_discovery@chamelium:
    - shard-tglb:         NOTRUN -> [SKIP][4] ([fdo#111827])
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-tglb5/igt@feature_discovery@chamelium.html

  * igt@feature_discovery@display-3x:
    - shard-iclb:         NOTRUN -> [SKIP][5] ([i915#1839])
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-iclb8/igt@feature_discovery@display-3x.html

  * igt@gem_ccs@ctrl-surf-copy:
    - shard-tglb:         NOTRUN -> [SKIP][6] ([i915#3555] / [i915#5325])
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-tglb1/igt@gem_ccs@ctrl-surf-copy.html

  * igt@gem_ccs@suspend-resume:
    - shard-iclb:         NOTRUN -> [SKIP][7] ([i915#5327]) +1 similar issue
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-iclb8/igt@gem_ccs@suspend-resume.html

  * igt@gem_ctx_persistence@legacy-engines-mixed:
    - shard-snb:          NOTRUN -> [SKIP][8] ([fdo#109271] / [i915#1099]) +7 similar issues
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-snb2/igt@gem_ctx_persistence@legacy-engines-mixed.html

  * igt@gem_exec_balancer@parallel:
    - shard-kbl:          NOTRUN -> [DMESG-WARN][9] ([i915#5076]) +2 similar issues
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-kbl1/igt@gem_exec_balancer@parallel.html

  * igt@gem_exec_balancer@parallel-bb-first:
    - shard-iclb:         NOTRUN -> [DMESG-WARN][10] ([i915#5076])
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-iclb1/igt@gem_exec_balancer@parallel-bb-first.html

  * igt@gem_exec_balancer@parallel-keep-submit-fence:
    - shard-iclb:         NOTRUN -> [SKIP][11] ([i915#4525])
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-iclb8/igt@gem_exec_balancer@parallel-keep-submit-fence.html
    - shard-tglb:         NOTRUN -> [DMESG-WARN][12] ([i915#5076])
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-tglb1/igt@gem_exec_balancer@parallel-keep-submit-fence.html

  * igt@gem_exec_fair@basic-deadline:
    - shard-glk:          NOTRUN -> [FAIL][13] ([i915#2846])
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-glk8/igt@gem_exec_fair@basic-deadline.html
    - shard-apl:          NOTRUN -> [FAIL][14] ([i915#2846])
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-apl3/igt@gem_exec_fair@basic-deadline.html

  * igt@gem_exec_fair@basic-none-rrul@rcs0:
    - shard-iclb:         NOTRUN -> [FAIL][15] ([i915#2842]) +6 similar issues
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-iclb6/igt@gem_exec_fair@basic-none-rrul@rcs0.html
    - shard-glk:          NOTRUN -> [FAIL][16] ([i915#2842]) +3 similar issues
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-glk5/igt@gem_exec_fair@basic-none-rrul@rcs0.html
    - shard-kbl:          NOTRUN -> [FAIL][17] ([i915#2842])
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-kbl4/igt@gem_exec_fair@basic-none-rrul@rcs0.html

  * igt@gem_exec_fair@basic-none-vip@rcs0:
    - shard-tglb:         NOTRUN -> [FAIL][18] ([i915#2842]) +3 similar issues
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-tglb2/igt@gem_exec_fair@basic-none-vip@rcs0.html

  * igt@gem_exec_fair@basic-none@vcs0:
    - shard-apl:          NOTRUN -> [FAIL][19] ([i915#2842])
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-apl7/igt@gem_exec_fair@basic-none@vcs0.html

  * igt@gem_exec_params@no-vebox:
    - shard-iclb:         NOTRUN -> [SKIP][20] ([fdo#109283])
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-iclb8/igt@gem_exec_params@no-vebox.html

  * igt@gem_lmem_swapping@basic:
    - shard-iclb:         NOTRUN -> [SKIP][21] ([i915#4613]) +1 similar issue
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-iclb5/igt@gem_lmem_swapping@basic.html
    - shard-tglb:         NOTRUN -> [SKIP][22] ([i915#4613]) +2 similar issues
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-tglb5/igt@gem_lmem_swapping@basic.html

  * igt@gem_lmem_swapping@heavy-multi:
    - shard-apl:          NOTRUN -> [SKIP][23] ([fdo#109271] / [i915#4613]) +2 similar issues
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-apl6/igt@gem_lmem_swapping@heavy-multi.html

  * igt@gem_lmem_swapping@parallel-multi:
    - shard-glk:          NOTRUN -> [SKIP][24] ([fdo#109271] / [i915#4613]) +3 similar issues
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-glk4/igt@gem_lmem_swapping@parallel-multi.html

  * igt@gem_lmem_swapping@parallel-random:
    - shard-kbl:          NOTRUN -> [SKIP][25] ([fdo#109271] / [i915#4613]) +5 similar issues
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-kbl3/igt@gem_lmem_swapping@parallel-random.html

  * igt@gem_ppgtt@blt-vs-render-ctx0:
    - shard-tglb:         NOTRUN -> [DMESG-FAIL][26] ([i915#5441])
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-tglb7/igt@gem_ppgtt@blt-vs-render-ctx0.html

  * igt@gem_pread@exhaustion:
    - shard-tglb:         NOTRUN -> [WARN][27] ([i915#2658])
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-tglb6/igt@gem_pread@exhaustion.html
    - shard-snb:          NOTRUN -> [WARN][28] ([i915#2658])
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-snb4/igt@gem_pread@exhaustion.html

  * igt@gem_pxp@protected-encrypted-src-copy-not-readible:
    - shard-tglb:         NOTRUN -> [SKIP][29] ([i915#4270]) +2 similar issues
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-tglb6/igt@gem_pxp@protected-encrypted-src-copy-not-readible.html

  * igt@gem_pxp@reject-modify-context-protection-off-3:
    - shard-iclb:         NOTRUN -> [SKIP][30] ([i915#4270]) +1 similar issue
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-iclb5/igt@gem_pxp@reject-modify-context-protection-off-3.html

  * igt@gem_render_copy@x-tiled-to-vebox-yf-tiled:
    - shard-iclb:         NOTRUN -> [SKIP][31] ([i915#768]) +2 similar issues
   [31]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-iclb5/igt@gem_render_copy@x-tiled-to-vebox-yf-tiled.html

  * igt@gem_render_copy@yf-tiled-mc-ccs-to-vebox-y-tiled:
    - shard-glk:          NOTRUN -> [SKIP][32] ([fdo#109271]) +216 similar issues
   [32]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-glk7/igt@gem_render_copy@yf-tiled-mc-ccs-to-vebox-y-tiled.html

  * igt@gem_tiled_partial_pwrite_pread@writes:
    - shard-tglb:         NOTRUN -> [INCOMPLETE][33] ([i915#5441]) +12 similar issues
   [33]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-tglb6/igt@gem_tiled_partial_pwrite_pread@writes.html
    - shard-glk:          NOTRUN -> [INCOMPLETE][34] ([i915#5441]) +2 similar issues
   [34]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-glk6/igt@gem_tiled_partial_pwrite_pread@writes.html

  * igt@gem_tiled_partial_pwrite_pread@writes-after-reads:
    - shard-apl:          NOTRUN -> [INCOMPLETE][35] ([i915#5441]) +1 similar issue
   [35]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-apl1/igt@gem_tiled_partial_pwrite_pread@writes-after-reads.html

  * igt@gem_userptr_blits@readonly-unsync:
    - shard-iclb:         NOTRUN -> [SKIP][36] ([i915#3297])
   [36]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-iclb2/igt@gem_userptr_blits@readonly-unsync.html

  * igt@gem_userptr_blits@unsync-overlap:
    - shard-tglb:         NOTRUN -> [SKIP][37] ([i915#3297]) +1 similar issue
   [37]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-tglb7/igt@gem_userptr_blits@unsync-overlap.html

  * igt@gen3_render_linear_blits:
    - shard-tglb:         NOTRUN -> [SKIP][38] ([fdo#109289]) +7 similar issues
   [38]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-tglb1/igt@gen3_render_linear_blits.html

  * igt@gen7_exec_parse@bitmasks:
    - shard-iclb:         NOTRUN -> [SKIP][39] ([fdo#109289]) +5 similar issues
   [39]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-iclb4/igt@gen7_exec_parse@bitmasks.html

  * igt@gen9_exec_parse@allowed-all:
    - shard-iclb:         NOTRUN -> [SKIP][40] ([i915#2856]) +2 similar issues
   [40]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-iclb4/igt@gen9_exec_parse@allowed-all.html

  * igt@gen9_exec_parse@shadow-peek:
    - shard-tglb:         NOTRUN -> [SKIP][41] ([i915#2527] / [i915#2856]) +3 similar issues
   [41]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-tglb5/igt@gen9_exec_parse@shadow-peek.html

  * igt@i915_hangman@engine-engine-hang:
    - shard-snb:          NOTRUN -> [SKIP][42] ([fdo#109271]) +673 similar issues
   [42]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-snb5/igt@i915_hangman@engine-engine-hang.html

  * igt@i915_pm_lpsp@screens-disabled:
    - shard-tglb:         NOTRUN -> [SKIP][43] ([i915#1902])
   [43]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-tglb7/igt@i915_pm_lpsp@screens-disabled.html

  * igt@i915_pm_rc6_residency@rc6-idle:
    - shard-tglb:         NOTRUN -> [WARN][44] ([i915#2681] / [i915#2684])
   [44]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-tglb2/igt@i915_pm_rc6_residency@rc6-idle.html

  * igt@i915_pm_rpm@modeset-non-lpsp-stress:
    - shard-tglb:         NOTRUN -> [SKIP][45] ([fdo#111644] / [i915#1397] / [i915#2411]) +2 similar issues
   [45]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-tglb5/igt@i915_pm_rpm@modeset-non-lpsp-stress.html

  * igt@i915_pm_rpm@modeset-non-lpsp-stress-no-wait:
    - shard-iclb:         NOTRUN -> [SKIP][46] ([fdo#110892]) +1 similar issue
   [46]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-iclb2/igt@i915_pm_rpm@modeset-non-lpsp-stress-no-wait.html

  * igt@i915_selftest@live@hangcheck:
    - shard-snb:          NOTRUN -> [INCOMPLETE][47] ([i915#3921])
   [47]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-snb5/igt@i915_selftest@live@hangcheck.html

  * igt@kms_atomic@atomic_plane_damage:
    - shard-iclb:         NOTRUN -> [SKIP][48] ([i915#4765])
   [48]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-iclb8/igt@kms_atomic@atomic_plane_damage.html

  * igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-0:
    - shard-tglb:         NOTRUN -> [SKIP][49] ([i915#5286]) +9 similar issues
   [49]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-tglb6/igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-0.html

  * igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0-async-flip:
    - shard-iclb:         NOTRUN -> [SKIP][50] ([i915#5286]) +4 similar issues
   [50]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-iclb6/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0-async-flip.html

  * igt@kms_big_fb@linear-8bpp-rotate-90:
    - shard-tglb:         NOTRUN -> [SKIP][51] ([fdo#111614]) +8 similar issues
   [51]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-tglb2/igt@kms_big_fb@linear-8bpp-rotate-90.html

  * igt@kms_big_fb@linear-max-hw-stride-32bpp-rotate-180:
    - shard-iclb:         [PASS][52] -> [INCOMPLETE][53] ([i915#5441]) +1 similar issue
   [52]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11412/shard-iclb3/igt@kms_big_fb@linear-max-hw-stride-32bpp-rotate-180.html
   [53]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-iclb2/igt@kms_big_fb@linear-max-hw-stride-32bpp-rotate-180.html

  * igt@kms_big_fb@x-tiled-16bpp-rotate-180:
    - shard-snb:          [PASS][54] -> [INCOMPLETE][55] ([i915#5441])
   [54]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11412/shard-snb5/igt@kms_big_fb@x-tiled-16bpp-rotate-180.html
   [55]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-snb4/igt@kms_big_fb@x-tiled-16bpp-rotate-180.html
    - shard-iclb:         NOTRUN -> [INCOMPLETE][56] ([i915#1373] / [i915#5441])
   [56]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-iclb2/igt@kms_big_fb@x-tiled-16bpp-rotate-180.html

  * igt@kms_big_fb@x-tiled-16bpp-rotate-270:
    - shard-iclb:         NOTRUN -> [SKIP][57] ([fdo#110725] / [fdo#111614]) +5 similar issues
   [57]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-iclb3/igt@kms_big_fb@x-tiled-16bpp-rotate-270.html

  * igt@kms_big_fb@y-tiled-16bpp-rotate-270:
    - shard-iclb:         NOTRUN -> [INCOMPLETE][58] ([i915#5441]) +12 similar issues
   [58]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-iclb1/igt@kms_big_fb@y-tiled-16bpp-rotate-270.html

  * igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0:
    - shard-kbl:          [PASS][59] -> [INCOMPLETE][60] ([i915#5441])
   [59]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11412/shard-kbl7/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0.html
   [60]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-kbl3/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0.html

  * igt@kms_big_fb@yf-tiled-16bpp-rotate-0:
    - shard-kbl:          NOTRUN -> [INCOMPLETE][61] ([i915#5441] / [i915#794])
   [61]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-kbl6/igt@kms_big_fb@yf-tiled-16bpp-rotate-0.html

  * igt@kms_big_fb@yf-tiled-32bpp-rotate-270:
    - shard-tglb:         NOTRUN -> [SKIP][62] ([fdo#111615]) +15 similar issues
   [62]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-tglb5/igt@kms_big_fb@yf-tiled-32bpp-rotate-270.html

  * igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-0-async-flip:
    - shard-kbl:          NOTRUN -> [INCOMPLETE][63] ([i915#5441]) +10 similar issues
   [63]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-kbl1/igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-0-async-flip.html

  * igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-0-hflip:
    - shard-apl:          NOTRUN -> [SKIP][64] ([fdo#109271] / [i915#3777]) +4 similar issues
   [64]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-apl6/igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-0-hflip.html
    - shard-glk:          NOTRUN -> [SKIP][65] ([fdo#109271] / [i915#3777]) +3 similar issues
   [65]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-glk9/igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-0-hflip.html

  * igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-0-hflip-async-flip:
    - shard-kbl:          NOTRUN -> [SKIP][66] ([fdo#109271] / [i915#3777]) +3 similar issues
   [66]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-kbl3/igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-0-hflip-async-flip.html

  * igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-0:
    - shard-apl:          NOTRUN -> [SKIP][67] ([fdo#109271]) +245 similar issues
   [67]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-apl3/igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-0.html
    - shard-iclb:         NOTRUN -> [SKIP][68] ([fdo#110723]) +3 similar issues
   [68]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-iclb5/igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-0.html

  * igt@kms_big_joiner@basic:
    - shard-tglb:         NOTRUN -> [SKIP][69] ([i915#2705]) +1 similar issue
   [69]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-tglb3/igt@kms_big_joiner@basic.html

  * igt@kms_ccs@pipe-a-bad-pixel-format-y_tiled_gen12_mc_ccs:
    - shard-tglb:         NOTRUN -> [SKIP][70] ([i915#3689] / [i915#3886]) +3 similar issues
   [70]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-tglb1/igt@kms_ccs@pipe-a-bad-pixel-format-y_tiled_gen12_mc_ccs.html

  * igt@kms_ccs@pipe-a-crc-sprite-planes-basic-y_tiled_gen12_mc_ccs:
    - shard-glk:          NOTRUN -> [SKIP][71] ([fdo#109271] / [i915#3886]) +14 similar issues
   [71]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-glk8/igt@kms_ccs@pipe-a-crc-sprite-planes-basic-y_tiled_gen12_mc_ccs.html
    - shard-apl:          NOTRUN -> [SKIP][72] ([fdo#109271] / [i915#3886]) +13 similar issues
   [72]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-apl3/igt@kms_ccs@pipe-a-crc-sprite-planes-basic-y_tiled_gen12_mc_ccs.html

  * igt@kms_ccs@pipe-a-missing-ccs-buffer-y_tiled_ccs:
    - shard-tglb:         NOTRUN -> [SKIP][73] ([i915#3689]) +3 similar issues
   [73]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-tglb5/igt@kms_ccs@pipe-a-missing-ccs-buffer-y_tiled_ccs.html

  * igt@kms_ccs@pipe-b-missing-ccs-buffer-y_tiled_gen12_rc_ccs_cc:
    - shard-kbl:          NOTRUN -> [SKIP][74] ([fdo#109271] / [i915#3886]) +16 similar issues
   [74]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-kbl3/igt@kms_ccs@pipe-b-missing-ccs-buffer-y_tiled_gen12_rc_ccs_cc.html

  * igt@kms_ccs@pipe-b-random-ccs-data-y_tiled_gen12_mc_ccs:
    - shard-iclb:         NOTRUN -> [SKIP][75] ([fdo#109278] / [i915#3886]) +7 similar issues
   [75]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-iclb2/igt@kms_ccs@pipe-b-random-ccs-data-y_tiled_gen12_mc_ccs.html

  * igt@kms_ccs@pipe-d-missing-ccs-buffer-yf_tiled_ccs:
    - shard-tglb:         NOTRUN -> [SKIP][76] ([fdo#111615] / [i915#3689]) +8 similar issues
   [76]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-tglb3/igt@kms_ccs@pipe-d-missing-ccs-buffer-yf_tiled_ccs.html

  * igt@kms_chamelium@hdmi-edid-change-during-suspend:
    - shard-apl:          NOTRUN -> [SKIP][77] ([fdo#109271] / [fdo#111827]) +19 similar issues
   [77]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-apl3/igt@kms_chamelium@hdmi-edid-change-during-suspend.html

  * igt@kms_chamelium@hdmi-mode-timings:
    - shard-snb:          NOTRUN -> [SKIP][78] ([fdo#109271] / [fdo#111827]) +28 similar issues
   [78]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-snb2/igt@kms_chamelium@hdmi-mode-timings.html
    - shard-kbl:          NOTRUN -> [SKIP][79] ([fdo#109271] / [fdo#111827]) +22 similar issues
   [79]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-kbl3/igt@kms_chamelium@hdmi-mode-timings.html

  * igt@kms_chamelium@vga-hpd-with-enabled-mode:
    - shard-iclb:         NOTRUN -> [SKIP][80] ([fdo#109284] / [fdo#111827]) +12 similar issues
   [80]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-iclb3/igt@kms_chamelium@vga-hpd-with-enabled-mode.html

  * igt@kms_color@pipe-c-deep-color:
    - shard-tglb:         NOTRUN -> [SKIP][81] ([i915#3555]) +1 similar issue
   [81]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-tglb2/igt@kms_color@pipe-c-deep-color.html
    - shard-iclb:         NOTRUN -> [SKIP][82] ([fdo#109278] / [i915#3555])
   [82]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-iclb5/igt@kms_color@pipe-c-deep-color.html

  * igt@kms_color@pipe-d-ctm-negative:
    - shard-iclb:         NOTRUN -> [SKIP][83] ([fdo#109278] / [i915#1149]) +4 similar issues
   [83]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-iclb6/igt@kms_color@pipe-d-ctm-negative.html

  * igt@kms_color_chamelium@pipe-d-ctm-negative:
    - shard-iclb:         NOTRUN -> [SKIP][84] ([fdo#109278] / [fdo#109284] / [fdo#111827]) +1 similar issue
   [84]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-iclb4/igt@kms_color_chamelium@pipe-d-ctm-negative.html

  * igt@kms_color_chamelium@pipe-d-degamma:
    - shard-glk:          NOTRUN -> [SKIP][85] ([fdo#109271] / [fdo#111827]) +22 similar issues
   [85]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-glk5/igt@kms_color_chamelium@pipe-d-degamma.html
    - shard-tglb:         NOTRUN -> [SKIP][86] ([fdo#109284] / [fdo#111827]) +20 similar issues
   [86]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-tglb5/igt@kms_color_chamelium@pipe-d-degamma.html

  * igt@kms_content_protection@atomic:
    - shard-kbl:          NOTRUN -> [TIMEOUT][87] ([i915#1319]) +2 similar issues
   [87]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-kbl7/igt@kms_content_protection@atomic.html

  * igt@kms_content_protection@dp-mst-type-0:
    - shard-tglb:         NOTRUN -> [SKIP][88] ([i915#3116] / [i915#3299]) +1 similar issue
   [88]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-tglb5/igt@kms_content_protection@dp-mst-type-0.html
    - shard-iclb:         NOTRUN -> [SKIP][89] ([i915#3116])
   [89]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-iclb5/igt@kms_content_protection@dp-mst-type-0.html

  * igt@kms_content_protection@legacy:
    - shard-iclb:         NOTRUN -> [SKIP][90] ([fdo#109300] / [fdo#111066]) +3 similar issues
   [90]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-iclb8/igt@kms_content_protection@legacy.html

  * igt@kms_content_protection@lic:
    - shard-apl:          NOTRUN -> [TIMEOUT][91] ([i915#1319]) +1 similar issue
   [91]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-apl8/igt@kms_content_protection@lic.html

  * igt@kms_content_protection@uevent:
    - shard-kbl:          NOTRUN -> [FAIL][92] ([i915#2105])
   [92]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-kbl1/igt@kms_content_protection@uevent.html
    - shard-tglb:         NOTRUN -> [SKIP][93] ([i915#1063]) +2 similar issues
   [93]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-tglb3/igt@kms_content_protection@uevent.html
    - shard-apl:          NOTRUN -> [FAIL][94] ([i915#2105])
   [94]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-apl3/igt@kms_content_protection@uevent.html

  * igt@kms_cursor_crc@pipe-a-cursor-suspend:
    - shard-snb:          NOTRUN -> [DMESG-WARN][95] ([i915#5090])
   [95]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-snb2/igt@kms_cursor_crc@pipe-a-cursor-suspend.html
    - shard-apl:          NOTRUN -> [DMESG-WARN][96] ([i915#180])
   [96]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-apl1/igt@kms_cursor_crc@pipe-a-cursor-suspend.html

  * igt@kms_cursor_crc@pipe-b-cursor-32x32-rapid-movement:
    - shard-tglb:         NOTRUN -> [SKIP][97] ([i915#3319])
   [97]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-tglb7/igt@kms_cursor_crc@pipe-b-cursor-32x32-rapid-movement.html

  * igt@kms_cursor_crc@pipe-b-cursor-512x512-onscreen:
    - shard-iclb:         NOTRUN -> [SKIP][98] ([fdo#109278] / [fdo#109279]) +5 similar issues
   [98]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-iclb8/igt@kms_cursor_crc@pipe-b-cursor-512x512-onscreen.html

  * igt@kms_cursor_crc@pipe-c-cursor-512x512-random:
    - shard-tglb:         NOTRUN -> [SKIP][99] ([fdo#109279] / [i915#3359]) +9 similar issues
   [99]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-tglb3/igt@kms_cursor_crc@pipe-c-cursor-512x512-random.html

  * igt@kms_cursor_crc@pipe-d-cursor-32x10-offscreen:
    - shard-iclb:         NOTRUN -> [SKIP][100] ([fdo#109278]) +60 similar issues
   [100]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-iclb6/igt@kms_cursor_crc@pipe-d-cursor-32x10-offscreen.html

  * igt@kms_cursor_crc@pipe-d-cursor-512x170-rapid-movement:
    - shard-tglb:         NOTRUN -> [SKIP][101] ([i915#3359]) +12 similar issues
   [101]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-tglb1/igt@kms_cursor_crc@pipe-d-cursor-512x170-rapid-movement.html

  * igt@kms_cursor_crc@pipe-d-cursor-suspend:
    - shard-kbl:          NOTRUN -> [SKIP][102] ([fdo#109271]) +345 similar issues
   [102]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-kbl3/igt@kms_cursor_crc@pipe-d-cursor-suspend.html

  * igt@kms_cursor_legacy@cursora-vs-flipb-legacy:
    - shard-iclb:         NOTRUN -> [SKIP][103] ([fdo#109274] / [fdo#109278]) +5 similar issues
   [103]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-iclb5/igt@kms_cursor_legacy@cursora-vs-flipb-legacy.html

  * igt@kms_cursor_legacy@pipe-d-torture-bo:
    - shard-kbl:          NOTRUN -> [SKIP][104] ([fdo#109271] / [i915#533]) +1 similar issue
   [104]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-kbl1/igt@kms_cursor_legacy@pipe-d-torture-bo.html
    - shard-apl:          NOTRUN -> [SKIP][105] ([fdo#109271] / [i915#533])
   [105]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-apl7/igt@kms_cursor_legacy@pipe-d-torture-bo.html
    - shard-glk:          NOTRUN -> [SKIP][106] ([fdo#109271] / [i915#533])
   [106]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-glk3/igt@kms_cursor_legacy@pipe-d-torture-bo.html

  * igt@kms_cursor_legacy@short-busy-flip-before-cursor-toggle:
    - shard-tglb:         NOTRUN -> [SKIP][107] ([i915#4103]) +3 similar issues
   [107]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-tglb6/igt@kms_cursor_legacy@short-busy-flip-before-cursor-toggle.html

  * igt@kms_dp_tiled_display@basic-test-pattern-with-chamelium:
    - shard-tglb:         NOTRUN -> [SKIP][108] ([i915#3528])
   [108]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-tglb5/igt@kms_dp_tiled_display@basic-test-pattern-with-chamelium.html

  * igt@kms_draw_crc@draw-method-xrgb2101010-blt-4tiled:
    - shard-tglb:         NOTRUN -> [SKIP][109] ([i915#5287]) +7 similar issues
   [109]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-tglb2/igt@kms_draw_crc@draw-method-xrgb2101010-blt-4tiled.html

  * igt@kms_draw_crc@draw-method-xrgb2101010-pwrite-4tiled:
    - shard-iclb:         NOTRUN -> [SKIP][110] ([i915#5287]) +4 similar issues
   [110]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-iclb4/igt@kms_draw_crc@draw-method-xrgb2101010-pwrite-4tiled.html

  * igt@kms_flip@2x-absolute-wf_vblank:
    - shard-tglb:         NOTRUN -> [SKIP][111] ([fdo#109274] / [fdo#111825] / [i915#3966])
   [111]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-tglb7/igt@kms_flip@2x-absolute-wf_vblank.html

  * igt@kms_flip@2x-flip-vs-expired-vblank-interruptible@ac-hdmi-a1-hdmi-a2:
    - shard-glk:          [PASS][112] -> [FAIL][113] ([i915#79])
   [112]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11412/shard-glk5/igt@kms_flip@2x-flip-vs-expired-vblank-interruptible@ac-hdmi-a1-hdmi-a2.html
   [113]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-glk2/igt@kms_flip@2x-flip-vs-expired-vblank-interruptible@ac-hdmi-a1-hdmi-a2.html

  * igt@kms_flip@2x-modeset-vs-vblank-race-interruptible:
    - shard-iclb:         NOTRUN -> [SKIP][114] ([fdo#109274]) +11 similar issues
   [114]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-iclb2/igt@kms_flip@2x-modeset-vs-vblank-race-interruptible.html

  * igt@kms_flip@2x-plain-flip-ts-check:
    - shard-tglb:         NOTRUN -> [SKIP][115] ([fdo#109274] / [fdo#111825]) +20 similar issues
   [115]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-tglb6/igt@kms_flip@2x-plain-flip-ts-check.html

  * igt@kms_flip@flip-vs-expired-vblank@b-dp1:
    - shard-apl:          [PASS][116] -> [FAIL][117] ([i915#79])
   [116]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11412/shard-apl6/igt@kms_flip@flip-vs-expired-vblank@b-dp1.html
   [117]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-apl2/igt@kms_flip@flip-vs-expired-vblank@b-dp1.html

  * igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-downscaling:
    - shard-tglb:         NOTRUN -> [SKIP][118] ([i915#2587]) +1 similar issue
   [118]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-tglb3/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-downscaling.html

  * igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling:
    - shard-iclb:         NOTRUN -> [SKIP][119] ([i915#2587]) +2 similar issues
   [119]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-iclb5/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling.html

  * igt@kms_frontbuffer_tracking@fbc-tiling-4:
    - shard-iclb:         NOTRUN -> [SKIP][120] ([i915#5438])
   [120]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-iclb1/igt@kms_frontbuffer_tracking@fbc-tiling-4.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-shrfb-pgflip-blt:
    - shard-iclb:         NOTRUN -> [SKIP][121] ([fdo#109280]) +35 similar issues
   [121]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-iclb1/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-shrfb-pgflip-blt.html

  * igt@kms_frontbuffer_tracking@psr-2p-scndscrn-cur-indfb-move:
    - shard-tglb:         NOTRUN -> [SKIP][122] ([fdo#109280] / [fdo#111825]) +47 similar issues
   [122]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-tglb7/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-cur-indfb-move.html

  * igt@kms_multipipe_modeset@basic-max-pipe-crc-chec

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/index.html

[-- Attachment #2: Type: text/html, Size: 34016 bytes --]

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

* Re: [igt-dev] ✗ Fi.CI.IGT: failure for Writeback fixes and improvements (rev2)
  2022-03-28 19:08 ` [igt-dev] ✗ Fi.CI.IGT: failure " Patchwork
@ 2022-03-30  7:30   ` Maxime Ripard
  0 siblings, 0 replies; 19+ messages in thread
From: Maxime Ripard @ 2022-03-30  7:30 UTC (permalink / raw)
  To: igt-dev

[-- Attachment #1: Type: text/plain, Size: 1474 bytes --]

Hi,

On Mon, Mar 28, 2022 at 07:08:42PM -0000, Patchwork wrote:
> == Series Details ==
> 
> Series: Writeback fixes and improvements (rev2)
> URL   : https://patchwork.freedesktop.org/series/101159/
> State : failure
> 
> == Summary ==
> 
> CI Bug Log - changes from CI_DRM_11412_full -> IGTPW_6839_full
> ====================================================
> 
> Summary
> -------
> 
>   **FAILURE**
> 
>   Serious unknown changes coming with IGTPW_6839_full absolutely need to be
>   verified manually.
>   
>   If you think the reported changes have nothing to do with the changes
>   introduced in IGTPW_6839_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://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/index.html
> 
> Participating hosts (11 -> 7)
> ------------------------------
> 
>   Missing    (4): pig-skl-6260u shard-skl pig-kbl-iris pig-glk-j5005 
> 
> Possible new issues
> -------------------
> 
>   Here are the unknown changes that may have been introduced in IGTPW_6839_full:
> 
> ### IGT changes ###
> 
> #### Possible regressions ####
> 
>   * igt@gem_create@create-clear:
>     - shard-tglb:         NOTRUN -> [INCOMPLETE][1]
>    [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6839/shard-tglb7/igt@gem_create@create-clear.html

It looks like this test runner has a faulty hard disk.

Maxime

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

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

* Re: [igt-dev] [PATCH i-g-t v2 4/8] lib/igt_frame: Add function to dump frames in RGB and raw
  2022-03-28 14:55 ` [igt-dev] [PATCH i-g-t v2 4/8] lib/igt_frame: Add function to dump frames in RGB and raw Maxime Ripard
@ 2022-04-29 12:46   ` Pekka Paalanen
  2022-05-04 14:56     ` Maxime Ripard
  0 siblings, 1 reply; 19+ messages in thread
From: Pekka Paalanen @ 2022-04-29 12:46 UTC (permalink / raw)
  To: Maxime Ripard; +Cc: igt-dev, Petri Latvala

[-- Attachment #1: Type: text/plain, Size: 5053 bytes --]

On Mon, 28 Mar 2022 16:55:05 +0200
Maxime Ripard <maxime@cerno.tech> wrote:

> The igt_write_frame_to_png() already allows to dump the content of a
> cairo surface into a PNG image. However, it can be useful to have the
> raw content of the buffer as well, so let's create a function that will
> dump both a PNG image and its raw buffer.
> 
> Signed-off-by: Maxime Ripard <maxime@cerno.tech>

Hi,

when exactly is the raw dump useful? Do you need it for checking alpha?
Or for YUV formats? Or for multi-planar formats? Or for greater than 8
bpc or floating point formats?

How do you make use of the raw dump?

PNG can store alpha channel as well, and if that's not convenient
alongsize RGB, you could save another image where alpha has been
converted to gray scale.

PNG can also go up to 16 bpc I think?

PAM file format (netpbm type P7) might also be an option, looks like it
can do up to RGBA 16 bpc, and is trivial to generate.
http://netpbm.sourceforge.net/doc/pam.html

It's not much different from a raw dump, but contains enough metadata
for tools to understand the image.


Thanks,
pq

> ---
>  lib/igt_frame.c | 82 +++++++++++++++++++++++++++++++++++++++++++++++++
>  lib/igt_frame.h |  4 +++
>  2 files changed, 86 insertions(+)
> 
> diff --git a/lib/igt_frame.c b/lib/igt_frame.c
> index ba29ac028e1b..f53ba3a381ef 100644
> --- a/lib/igt_frame.c
> +++ b/lib/igt_frame.c
> @@ -112,6 +112,40 @@ static void igt_write_frame_to_png(cairo_surface_t *surface, int summary_fd,
>  	free(path);
>  }
>  
> +static void igt_write_frame_to_raw(cairo_surface_t *surface, int summary_fd,
> +				   const char *qualifier, const char *suffix)
> +{
> +	int height, stride, size;
> +	char *path;
> +	void *ptr;
> +	int out_fd = -1;
> +
> +	path = igt_get_frame_path(qualifier, suffix, "raw");
> +	igt_assert(path);
> +
> +	igt_debug("Dumping %s frame to %s...\n", qualifier, path);
> +
> +	out_fd = open(path, O_WRONLY | O_CREAT | O_TRUNC, 0644);
> +	igt_assert(out_fd >= 0);
> +
> +	ptr = cairo_image_surface_get_data(surface);
> +	igt_assert(ptr);
> +
> +	stride = cairo_image_surface_get_stride(surface);
> +	igt_assert(stride > 0);
> +
> +	height = cairo_image_surface_get_height(surface);
> +	igt_assert(height > 0);
> +
> +	size = stride * height;
> +	write(out_fd, ptr, size);
> +
> +	close(out_fd);
> +
> +	igt_log_frame_path(summary_fd, path);
> +	free(path);
> +}
> +
>  /**
>   * igt_write_compared_frames_to_png:
>   * @reference: The reference cairo surface
> @@ -158,6 +192,54 @@ void igt_write_compared_frames_to_png(cairo_surface_t *reference,
>  	close(fd);
>  }
>  
> +/**
> + * igt_write_compared_frames:
> + * @reference: The reference cairo surface
> + * @capture: The captured cairo surface
> + * @reference_suffix: The suffix to give to the reference png file
> + * @capture_suffix: The suffix to give to the capture png file
> + *
> + * Dump previously compared frames to png and raw files.
> + */
> +void igt_write_compared_frames(cairo_surface_t *reference,
> +			       cairo_surface_t *capture,
> +			       const char *reference_suffix,
> +			       const char *capture_suffix)
> +{
> +	char *id;
> +	const char *test_name;
> +	const char *subtest_name;
> +	char path[PATH_MAX];
> +	int fd = -1;
> +
> +	if (!igt_frame_dump_is_enabled())
> +		return;
> +
> +	id = getenv("IGT_FRAME_DUMP_ID");
> +
> +	test_name = igt_test_name();
> +	subtest_name = igt_subtest_name();
> +
> +	if (id)
> +		snprintf(path, PATH_MAX, "%s/frame-%s-%s-%s.txt",
> +			 igt_frame_dump_path, test_name, subtest_name, id);
> +	else
> +		snprintf(path, PATH_MAX, "%s/frame-%s-%s.txt",
> +			 igt_frame_dump_path, test_name, subtest_name);
> +
> +	fd = open(path, O_WRONLY | O_CREAT | O_TRUNC, 0644);
> +	igt_assert(fd >= 0);
> +
> +	igt_debug("Writing dump report to %s...\n", path);
> +
> +	igt_write_frame_to_raw(reference, fd, "reference", reference_suffix);
> +	igt_write_frame_to_png(reference, fd, "reference", reference_suffix);
> +	igt_write_frame_to_raw(capture, fd, "capture", capture_suffix);
> +	igt_write_frame_to_png(capture, fd, "capture", capture_suffix);
> +
> +	close(fd);
> +}
> +
>  /**
>   * igt_check_analog_frame_match:
>   * @reference: The reference cairo surface
> diff --git a/lib/igt_frame.h b/lib/igt_frame.h
> index f44f57d7ce73..51cbc2bd68b4 100644
> --- a/lib/igt_frame.h
> +++ b/lib/igt_frame.h
> @@ -36,6 +36,10 @@ void igt_write_compared_frames_to_png(cairo_surface_t *reference,
>  				      cairo_surface_t *capture,
>  				      const char *reference_suffix,
>  				      const char *capture_suffix);
> +void igt_write_compared_frames(cairo_surface_t *reference,
> +			       cairo_surface_t *capture,
> +			       const char *reference_suffix,
> +			       const char *capture_suffix);
>  bool igt_check_analog_frame_match(cairo_surface_t *reference,
>  				  cairo_surface_t *capture);
>  bool igt_check_checkerboard_frame_match(cairo_surface_t *reference,


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

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

* Re: [igt-dev] [PATCH i-g-t v2 6/8] tests/kms_writeback: Dump the frames if the don't match
  2022-03-28 14:55 ` [igt-dev] [PATCH i-g-t v2 6/8] tests/kms_writeback: Dump the frames if the don't match Maxime Ripard
@ 2022-04-29 12:55   ` Pekka Paalanen
  2022-05-04 14:57     ` Maxime Ripard
  0 siblings, 1 reply; 19+ messages in thread
From: Pekka Paalanen @ 2022-04-29 12:55 UTC (permalink / raw)
  To: Maxime Ripard; +Cc: igt-dev, Petri Latvala

[-- Attachment #1: Type: text/plain, Size: 2802 bytes --]

On Mon, 28 Mar 2022 16:55:07 +0200
Maxime Ripard <maxime@cerno.tech> wrote:

> The writeback tests will make sure the reference and captured frames
> match. If they don't however, we don't get anything but their hash which
> isn't really helpful.
> 
> Add a function similar to chamelium_assert_crc_eq_or_dump() to dump the
> PNG and raw buffers of those two frames if they don't match and frame
> dumping has been enabled.
> 
> Signed-off-by: Maxime Ripard <maxime@cerno.tech>

Hi,

FWIW, in Weston we write out also the error visualization image with the
mismatching areas highlighted:
https://gitlab.freedesktop.org/wayland/weston/-/blob/69a59359fa8590074717e211d332c1077d8f277f/tests/weston-test-client-helper.c#L1405-1433


Thanks,
pq

> ---
>  tests/kms_writeback.c | 36 +++++++++++++++++++++++++++++++++++-
>  1 file changed, 35 insertions(+), 1 deletion(-)
> 
> diff --git a/tests/kms_writeback.c b/tests/kms_writeback.c
> index faa790cc0f72..2366692865b7 100644
> --- a/tests/kms_writeback.c
> +++ b/tests/kms_writeback.c
> @@ -256,6 +256,39 @@ static void get_and_wait_out_fence(igt_output_t *output)
>  	output->writeback_out_fence_fd = -1;
>  }
>  
> +static void writeback_assert_crtc_eq_or_dump(igt_crc_t *reference_crc,
> +					     igt_fb_t *reference_fb,
> +					     igt_crc_t *capture_crc,
> +					     igt_fb_t *capture_fb)
> +{
> +	bool eq;
> +
> +	eq = igt_check_crc_equal(reference_crc, capture_crc);
> +	if (!eq) {
> +		cairo_surface_t *reference, *capture;
> +		char *reference_suffix, *capture_suffix;
> +
> +		reference = igt_get_cairo_surface(reference_fb->fd, reference_fb);
> +		igt_assert(reference);
> +
> +		capture = igt_get_cairo_surface(capture_fb->fd, capture_fb);
> +		igt_assert(capture);
> +
> +		reference_suffix = igt_crc_to_string_extended(reference_crc, '-', 2);
> +		capture_suffix = igt_crc_to_string_extended(capture_crc, '-', 2);
> +
> +		/* Write reference and capture frames to png. */
> +		igt_write_compared_frames(reference, capture,
> +					  reference_suffix,
> +					  capture_suffix);
> +
> +		free(reference_suffix);
> +		free(capture_suffix);
> +	}
> +
> +	igt_assert(eq);
> +}
> +
>  static void writeback_sequence(igt_output_t *output, igt_plane_t *plane,
>  				igt_fb_t *in_fb, igt_fb_t *out_fbs[], int n_commits)
>  {
> @@ -303,7 +336,8 @@ static void writeback_sequence(igt_output_t *output, igt_plane_t *plane,
>  		if (out_fbs[i]) {
>  			igt_crc_t out_after;
>  			igt_fb_get_fnv1a_crc(out_fbs[i], &out_after);
> -			igt_assert_crc_equal(&out_expected, &out_after);
> +			writeback_assert_crtc_eq_or_dump(&out_expected, in_fb,
> +							 &out_after, out_fbs[i]);
>  
>  			/* And clear it, for the next time */
>  			fill_fb(out_fbs[i], clear_color);


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

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

* Re: [igt-dev] [PATCH i-g-t v2 7/8] lib/igt_fb: Ignore the X component when computing CRC
  2022-03-28 14:55 ` [igt-dev] [PATCH i-g-t v2 7/8] lib/igt_fb: Ignore the X component when computing CRC Maxime Ripard
@ 2022-04-29 12:58   ` Pekka Paalanen
  0 siblings, 0 replies; 19+ messages in thread
From: Pekka Paalanen @ 2022-04-29 12:58 UTC (permalink / raw)
  To: Maxime Ripard; +Cc: igt-dev, Petri Latvala

[-- Attachment #1: Type: text/plain, Size: 2569 bytes --]

On Mon, 28 Mar 2022 16:55:08 +0200
Maxime Ripard <maxime@cerno.tech> wrote:

> The igt_fb_get_fnv1a_crc() function will compute a FNV-1a hash over the
> content of the framebuffer. The sole user of this function is the
> writeback test suite, which will use it to compare an XRGB8888 buffer
> used in input to an XRGB8888 buffer filled by the writeback connector.
> 
> However, that function uses each bytes of each buffers to compute the
> hash, and therefore the writeback code assumes that the hardware will
> preserve the content of the X component through the writeback pipeline,
> which isn't true for all hardware. VC4 doesn't for example.
> 
> Since that function is only ever used for XRGB8888 buffers, let's just
> set the most significant to 0 (which is the X padding) for each pixel
> when computing the hash, and thus ignore whatever the hardware will
> return here.
> 
> Signed-off-by: Maxime Ripard <maxime@cerno.tech>

Acked-by: Pekka Paalanen <pekka.paalanen@collabora.com>

Yes, this is absolutely a requirement when handling any pixel format
with X-channel.


Thanks,
pq

> ---
>  lib/igt_fb.c | 20 ++++++++++++++++----
>  1 file changed, 16 insertions(+), 4 deletions(-)
> 
> diff --git a/lib/igt_fb.c b/lib/igt_fb.c
> index eafbe7fd41cd..66c52bb83876 100644
> --- a/lib/igt_fb.c
> +++ b/lib/igt_fb.c
> @@ -4392,15 +4392,19 @@ int igt_fb_get_fnv1a_crc(struct igt_fb *fb, igt_crc_t *crc)
>  {
>  	const uint32_t FNV1a_OFFSET_BIAS = 2166136261;
>  	const uint32_t FNV1a_PRIME = 16777619;
> +	uint32_t *line = NULL;
>  	uint32_t hash;
>  	void *map;
> -	char *ptr, *line = NULL;
> +	char *ptr;
>  	int x, y, cpp = igt_drm_format_to_bpp(fb->drm_format) / 8;
>  	uint32_t stride = calc_plane_stride(fb, 0);
>  
>  	if (fb->num_planes != 1)
>  		return -EINVAL;
>  
> +	if (fb->drm_format != DRM_FORMAT_XRGB8888)
> +		return -EINVAL;
> +
>  	ptr = igt_fb_map_buffer(fb->fd, fb);
>  	igt_assert(ptr);
>  	map = ptr;
> @@ -4422,9 +4426,17 @@ int igt_fb_get_fnv1a_crc(struct igt_fb *fb, igt_crc_t *crc)
>  
>  		igt_memcpy_from_wc(line, ptr, fb->width * cpp);
>  
> -		for (x = 0; x < fb->width * cpp; x++) {
> -			hash ^= line[x];
> -			hash *= FNV1a_PRIME;
> +		for (x = 0; x < fb->width; x++) {
> +			unsigned int i;
> +			uint32_t pixel = le32_to_cpu(line[x]);
> +			pixel &= 0x00ffffff;
> +
> +			for (i = 0; i < sizeof(pixel); i++) {
> +				uint8_t component = (pixel >> (i * 8)) & 0xff;
> +
> +				hash ^= component;
> +				hash *= FNV1a_PRIME;
> +			}
>  		}
>  	}
>  


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

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

* Re: [igt-dev] [PATCH i-g-t v2 8/8] tests/kms_writeback: Use a garbage X value to create fill our test buffer
  2022-03-28 14:55 ` [igt-dev] [PATCH i-g-t v2 8/8] tests/kms_writeback: Use a garbage X value to create fill our test buffer Maxime Ripard
@ 2022-04-29 13:01   ` Pekka Paalanen
  0 siblings, 0 replies; 19+ messages in thread
From: Pekka Paalanen @ 2022-04-29 13:01 UTC (permalink / raw)
  To: Maxime Ripard; +Cc: igt-dev, Petri Latvala

[-- Attachment #1: Type: text/plain, Size: 1435 bytes --]

On Mon, 28 Mar 2022 16:55:09 +0200
Maxime Ripard <maxime@cerno.tech> wrote:

> Since we use buffers in XRGB8888, whatever value we have in X should be
> ignored by the drivers and the hardware. However, since we always use
> 0xff in our test, whether that is the case or not cannot be determined.
> 
> Let's use a garbage value (but consistent across test runs) to make sure
> it doesn't have any impact on the writeback output.
> 
> Signed-off-by: Maxime Ripard <maxime@cerno.tech>

Acked-by: Pekka Paalanen <pekka.paalanen@collabora.com>

Yup, this is definitely a good idea.

I proposed to do the same in VKMS when writing out to XRGB writeback
buffer after blending, but Igor had the same problem as you with IGT. I
hope this series solves it.


Thanks,
pq

> ---
>  tests/kms_writeback.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/tests/kms_writeback.c b/tests/kms_writeback.c
> index 2366692865b7..4efd99713479 100644
> --- a/tests/kms_writeback.c
> +++ b/tests/kms_writeback.c
> @@ -293,7 +293,7 @@ static void writeback_sequence(igt_output_t *output, igt_plane_t *plane,
>  				igt_fb_t *in_fb, igt_fb_t *out_fbs[], int n_commits)
>  {
>  	int i = 0;
> -	uint32_t in_fb_colors[2] = { 0xffff0000, 0xff00ff00 };
> +	uint32_t in_fb_colors[2] = { 0x42ff0000, 0x4200ff00 };
>  	uint32_t clear_color = 0xffffffff;
>  
>  	igt_crc_t cleared_crc, out_expected;


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

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

* Re: [igt-dev] [PATCH i-g-t v2 4/8] lib/igt_frame: Add function to dump frames in RGB and raw
  2022-04-29 12:46   ` Pekka Paalanen
@ 2022-05-04 14:56     ` Maxime Ripard
  2022-05-05  7:21       ` Pekka Paalanen
  0 siblings, 1 reply; 19+ messages in thread
From: Maxime Ripard @ 2022-05-04 14:56 UTC (permalink / raw)
  To: Pekka Paalanen; +Cc: igt-dev, Petri Latvala

Hi Pekka,

Thanks for reviewing those patches

On Fri, Apr 29, 2022 at 03:46:45PM +0300, Pekka Paalanen wrote:
> On Mon, 28 Mar 2022 16:55:05 +0200
> Maxime Ripard <maxime@cerno.tech> wrote:
> 
> > The igt_write_frame_to_png() already allows to dump the content of a
> > cairo surface into a PNG image. However, it can be useful to have the
> > raw content of the buffer as well, so let's create a function that will
> > dump both a PNG image and its raw buffer.
> > 
> > Signed-off-by: Maxime Ripard <maxime@cerno.tech>
> 
> Hi,
> 
> when exactly is the raw dump useful? Do you need it for checking alpha?
> Or for YUV formats? Or for multi-planar formats? Or for greater than 8
> bpc or floating point formats?

Anything, really :)

When I started debugging this, the only feedback I got from IGT was the
hash it computed from the image, which isn't particularly useful for
debugging.

> How do you make use of the raw dump?

I'm using http://rawpixels.net/

> PNG can store alpha channel as well, and if that's not convenient
> alongsize RGB, you could save another image where alpha has been
> converted to gray scale.
> 
> PNG can also go up to 16 bpc I think?
> 
> PAM file format (netpbm type P7) might also be an option, looks like it
> can do up to RGBA 16 bpc, and is trivial to generate.
> http://netpbm.sourceforge.net/doc/pam.html
> 
> It's not much different from a raw dump, but contains enough metadata
> for tools to understand the image.

TIL :)

But I'd assume all those formats are still RGB, right? So if we ever go
to check other formats, we'll get back into the same situation.

That being said, I don't have a strong opinion for that patch (and the
next one). I've found it to be useful when debugging, but I'd definitely
understand if that's not something we want in IGT.

Maxime

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

* Re: [igt-dev] [PATCH i-g-t v2 6/8] tests/kms_writeback: Dump the frames if the don't match
  2022-04-29 12:55   ` Pekka Paalanen
@ 2022-05-04 14:57     ` Maxime Ripard
  0 siblings, 0 replies; 19+ messages in thread
From: Maxime Ripard @ 2022-05-04 14:57 UTC (permalink / raw)
  To: Pekka Paalanen; +Cc: igt-dev, Petri Latvala

On Fri, Apr 29, 2022 at 03:55:15PM +0300, Pekka Paalanen wrote:
> On Mon, 28 Mar 2022 16:55:07 +0200
> Maxime Ripard <maxime@cerno.tech> wrote:
> 
> > The writeback tests will make sure the reference and captured frames
> > match. If they don't however, we don't get anything but their hash which
> > isn't really helpful.
> > 
> > Add a function similar to chamelium_assert_crc_eq_or_dump() to dump the
> > PNG and raw buffers of those two frames if they don't match and frame
> > dumping has been enabled.
> > 
> > Signed-off-by: Maxime Ripard <maxime@cerno.tech>
>
> FWIW, in Weston we write out also the error visualization image with the
> mismatching areas highlighted:
> https://gitlab.freedesktop.org/wayland/weston/-/blob/69a59359fa8590074717e211d332c1077d8f277f/tests/weston-test-client-helper.c#L1405-1433

That's cool, I wonder if we could leverage this for the chamelium as
well.

maxime

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

* Re: [igt-dev] [PATCH i-g-t v2 4/8] lib/igt_frame: Add function to dump frames in RGB and raw
  2022-05-04 14:56     ` Maxime Ripard
@ 2022-05-05  7:21       ` Pekka Paalanen
  0 siblings, 0 replies; 19+ messages in thread
From: Pekka Paalanen @ 2022-05-05  7:21 UTC (permalink / raw)
  To: Maxime Ripard; +Cc: igt-dev, Petri Latvala

[-- Attachment #1: Type: text/plain, Size: 2453 bytes --]

On Wed, 4 May 2022 16:56:31 +0200
Maxime Ripard <maxime@cerno.tech> wrote:

> Hi Pekka,
> 
> Thanks for reviewing those patches
> 
> On Fri, Apr 29, 2022 at 03:46:45PM +0300, Pekka Paalanen wrote:
> > On Mon, 28 Mar 2022 16:55:05 +0200
> > Maxime Ripard <maxime@cerno.tech> wrote:
> >   
> > > The igt_write_frame_to_png() already allows to dump the content of a
> > > cairo surface into a PNG image. However, it can be useful to have the
> > > raw content of the buffer as well, so let's create a function that will
> > > dump both a PNG image and its raw buffer.
> > > 
> > > Signed-off-by: Maxime Ripard <maxime@cerno.tech>  
> > 
> > Hi,
> > 
> > when exactly is the raw dump useful? Do you need it for checking alpha?
> > Or for YUV formats? Or for multi-planar formats? Or for greater than 8
> > bpc or floating point formats?  
> 
> Anything, really :)
> 
> When I started debugging this, the only feedback I got from IGT was the
> hash it computed from the image, which isn't particularly useful for
> debugging.
> 
> > How do you make use of the raw dump?  
> 
> I'm using http://rawpixels.net/
> 
> > PNG can store alpha channel as well, and if that's not convenient
> > alongsize RGB, you could save another image where alpha has been
> > converted to gray scale.
> > 
> > PNG can also go up to 16 bpc I think?
> > 
> > PAM file format (netpbm type P7) might also be an option, looks like it
> > can do up to RGBA 16 bpc, and is trivial to generate.
> > http://netpbm.sourceforge.net/doc/pam.html
> > 
> > It's not much different from a raw dump, but contains enough metadata
> > for tools to understand the image.  
> 
> TIL :)
> 
> But I'd assume all those formats are still RGB, right? So if we ever go
> to check other formats, we'll get back into the same situation.

Yes, they are all RGB(A).

I think you have to get rid of Cairo first, before non-RGB can even be
a problem in file saving.

Cairo does not even do 16 bpc RGB(A):
https://www.cairographics.org/manual/cairo-Image-Surfaces.html#cairo-format-t
It only goes up to 10 bpc.

> That being said, I don't have a strong opinion for that patch (and the
> next one). I've found it to be useful when debugging, but I'd definitely
> understand if that's not something we want in IGT.

I'm not opposing this patch, I just wanted to know how it's useful.
Something to add to the commit message maybe?


Thanks,
pq

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

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

end of thread, other threads:[~2022-05-05  7:21 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-03-28 14:55 [igt-dev] [PATCH i-g-t v2 0/8] Writeback fixes and improvements Maxime Ripard
2022-03-28 14:55 ` [igt-dev] [PATCH i-g-t v2 1/8] lib/igt_frame: Rename summary fd variable Maxime Ripard
2022-03-28 14:55 ` [igt-dev] [PATCH i-g-t v2 2/8] lib/igt_frame: Move frame dump logging to function Maxime Ripard
2022-03-28 14:55 ` [igt-dev] [PATCH i-g-t v2 3/8] lib/igt_frame: Move frame path creation " Maxime Ripard
2022-03-28 14:55 ` [igt-dev] [PATCH i-g-t v2 4/8] lib/igt_frame: Add function to dump frames in RGB and raw Maxime Ripard
2022-04-29 12:46   ` Pekka Paalanen
2022-05-04 14:56     ` Maxime Ripard
2022-05-05  7:21       ` Pekka Paalanen
2022-03-28 14:55 ` [igt-dev] [PATCH i-g-t v2 5/8] tests/kms_writeback: Use endianness accessor to fill pixels Maxime Ripard
2022-03-28 14:55 ` [igt-dev] [PATCH i-g-t v2 6/8] tests/kms_writeback: Dump the frames if the don't match Maxime Ripard
2022-04-29 12:55   ` Pekka Paalanen
2022-05-04 14:57     ` Maxime Ripard
2022-03-28 14:55 ` [igt-dev] [PATCH i-g-t v2 7/8] lib/igt_fb: Ignore the X component when computing CRC Maxime Ripard
2022-04-29 12:58   ` Pekka Paalanen
2022-03-28 14:55 ` [igt-dev] [PATCH i-g-t v2 8/8] tests/kms_writeback: Use a garbage X value to create fill our test buffer Maxime Ripard
2022-04-29 13:01   ` Pekka Paalanen
2022-03-28 16:07 ` [igt-dev] ✓ Fi.CI.BAT: success for Writeback fixes and improvements (rev2) Patchwork
2022-03-28 19:08 ` [igt-dev] ✗ Fi.CI.IGT: failure " Patchwork
2022-03-30  7:30   ` Maxime Ripard

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.