Thread (3 messages) 3 messages, 2 authors, 2021-01-09

[igt-dev] [PATCH i-g-t] tests/kms_rotation_crc: fix crc buffer overflow for slow platforms

flat view

From: Juha-Pekka Heikkila <hidden>
Date: 2021-01-09 12:07:05
Subsystem: the rest · Maintainer: Linus Torvalds

on bad tiling tests there was nothing reading running crcs
which could fill up crc ringbuffer. Fix this by draining
crc buffer per round. Also unify all platforms execution
path by taking reference crcs per pipe.

Signed-off-by: Juha-Pekka Heikkila <redacted>
---
 tests/kms_rotation_crc.c | 16 ++++++----------
 1 file changed, 6 insertions(+), 10 deletions(-)
diff --git a/tests/kms_rotation_crc.c b/tests/kms_rotation_crc.c
index be27103fa..33a97ccaa 100644
--- a/tests/kms_rotation_crc.c
+++ b/tests/kms_rotation_crc.c
@@ -272,11 +272,7 @@ static void prepare_fbs(data_t *data, igt_output_t *output,
 	 */
 	igt_require(igt_display_has_format_mod(display, pixel_format, tiling));
 
-	/*
-	 * HSW will need to have those CRCs calculated each time, it
-	 * seems to behave different from other platforms.
-	 */
-	if (!data->crc_rect[rect].valid || IS_HASWELL(data->devid)) {
+	if (!data->crc_rect[rect].valid) {
 		/*
 		* Create a reference software rotated flip framebuffer.
 		*/
@@ -345,6 +341,7 @@ static void test_single_case(data_t *data, enum pipe pipe,
 
 	ret = igt_display_try_commit2(display, COMMIT_ATOMIC);
 	if (test_bad_format) {
+		igt_pipe_crc_drain(data->pipe_crc);
 		igt_assert_eq(ret, -EINVAL);
 		return;
 	}
@@ -408,10 +405,6 @@ static void test_plane_rotation(data_t *data, int plane_type, bool test_bad_form
 	igt_display_t *display = &data->display;
 	igt_output_t *output;
 	enum pipe pipe;
-	int c;
-
-	for (c = 0; c < num_rectangle_types; c++)
-		data->crc_rect[c].valid = false;
 
 	if (plane_type == DRM_PLANE_TYPE_CURSOR)
 		igt_require(display->has_cursor_plane);
@@ -420,7 +413,10 @@ static void test_plane_rotation(data_t *data, int plane_type, bool test_bad_form
 
 	for_each_pipe_with_valid_output(display, pipe, output) {
 		igt_plane_t *plane;
-		int i, j;
+		int i, j, c;
+
+		for (c = 0; c < num_rectangle_types; c++)
+			data->crc_rect[c].valid = false;
 
 		if (IS_CHERRYVIEW(data->devid) && pipe != PIPE_B)
 			continue;
-- 
2.28.0

_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help