[PATCH i-g-t 2/2] tests/kms_cursor_crc: hax add debug info

Juha-Pekka Heikkila juhapekka.heikkila at gmail.com
Fri Aug 13 16:09:05 UTC 2021


figure out what fails..

Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikkila at gmail.com>
---
 tests/kms_cursor_crc.c | 35 ++++++++++++++++++++++++++++-------
 1 file changed, 28 insertions(+), 7 deletions(-)

diff --git a/tests/kms_cursor_crc.c b/tests/kms_cursor_crc.c
index 351a2e930..39922764b 100644
--- a/tests/kms_cursor_crc.c
+++ b/tests/kms_cursor_crc.c
@@ -72,6 +72,7 @@ typedef struct {
 	cairo_surface_t *surface;
 	uint32_t devid;
 	bool hwimageistestimage;
+	int failed_crc;
 } data_t;
 
 #define TEST_DPMS (1<<0)
@@ -229,6 +230,8 @@ static void do_single_test(data_t *data, int x, int y, bool hw_test,
 			igt_assert_crc_equal(hwcrc, &crc_after);
 		}
 	} else {
+		static int round = 0;
+		char* crcstr;
 		/* Now render the same in software and collect crc */
 		swbufidx = (data->primary->drm_plane->fb_id ==
 			    data->primary_fb[SWCOMPARISONBUFFER1].fb_id) ?
@@ -242,7 +245,17 @@ static void do_single_test(data_t *data, int x, int y, bool hw_test,
 				display->pipes[data->pipe].crtc_offset);
 
 		igt_pipe_crc_get_current(data->drm_fd, pipe_crc, &crc);
-		igt_assert_crc_equal(&crc, hwcrc);
+
+		igt_debug("round %d\n", round++);
+		crcstr = igt_crc_to_string(hwcrc);
+		igt_debug("hw crc %s\n", crcstr);
+		free(crcstr);
+		crcstr = igt_crc_to_string(&crc);
+		igt_debug("sw crc %s\n", crcstr);
+		free(crcstr);
+
+		if (!igt_check_crc_equal(&crc, hwcrc))
+			data->failed_crc++;
 	}
 }
 
@@ -311,6 +324,8 @@ static void test_crc_onscreen(data_t *data)
 	cursor_disable(data);
 	for (int i = 0; i < ARRAY_SIZE(tests); i++)
 		do_test(data, &tests[i].coords, tests[i].crc, false);
+
+	igt_assert_f(data->failed_crc == 0, "at least one crc mismatch!\n");
 }
 
 static void test_crc_offscreen(data_t *data)
@@ -372,6 +387,8 @@ static void test_crc_offscreen(data_t *data)
 		igt_assert_crc_equal(&tests[0].crc[0], &tests[i].crc[3]);
 	}	
 
+	igt_assert_f(data->failed_crc == 0, "at least one crc mismatch!\n");
+
 	/* Make sure we get -ERANGE on integer overflow */
 	do_fail_test(data, INT_MAX - cursor_w + 1, INT_MAX - cursor_h + 1, -ERANGE);
 }
@@ -392,13 +409,13 @@ static void test_crc_sliding(data_t *data)
 	for (i = 0; i < ARRAY_SIZE(crc); i++) {
 		switch (i % 3) {
 		case 0:
-			do_single_test(data, i, 0, true, &crc[i]);
+			do_single_test(data, i / 3, 0, true, &crc[i]);
 			break;
 		case 1:
-			do_single_test(data, 0, i, true, &crc[i]);
+			do_single_test(data, 0, i / 3, true, &crc[i]);
 			break;
 		case 2:
-			do_single_test(data, i, i, true, &crc[i]);
+			do_single_test(data, i / 3, i / 3, true, &crc[i]);
 			break;
 		default:
 			igt_assert(false);
@@ -410,18 +427,21 @@ static void test_crc_sliding(data_t *data)
 	for (i = 0; i < ARRAY_SIZE(crc); i++) {
 		switch (i % 3) {
 		case 0:
-			do_single_test(data, i, 0, false, &crc[i]);
+			do_single_test(data, i / 3, 0, false, &crc[i]);
 			break;
 		case 1:
-			do_single_test(data, 0, i, false, &crc[i]);
+			do_single_test(data, 0, i / 3, false, &crc[i]);
 			break;
 		case 2:
-			do_single_test(data, i, i, false, &crc[i]);
+			do_single_test(data, i / 3, i / 3, false, &crc[i]);
 			break;
 		default:
 			igt_assert(false);
 		}
 	}
+
+	igt_assert_f(data->failed_crc == 0, "at least one crc mismatch!\n");
+
 }
 
 static void test_crc_random(data_t *data)
@@ -448,6 +468,7 @@ static void test_crc_random(data_t *data)
 	for (i = 0; i < max; i++)
 		do_single_test(data, x[i], y[i], false, &crc[i]);
 
+	igt_assert_f(data->failed_crc == 0, "at least one crc mismatch! failed crcs %d\n", data->failed_crc);
 }
 
 static void cleanup_crtc(data_t *data)
-- 
2.28.0



More information about the Intel-gfx-trybot mailing list