[PATCH i-g-t] tests/kms_big_fb: Test patch (not for merge)

Vidya Srinivas vidya.srinivas at intel.com
Wed Aug 4 15:38:52 UTC 2021


Trying to fix CRC issue with async flip on 5.4 kernel

Signed-off-by: Vidya Srinivas <vidya.srinivas at intel.com>
---
 tests/kms_big_fb.c | 19 +++++++++++--------
 1 file changed, 11 insertions(+), 8 deletions(-)

diff --git a/tests/kms_big_fb.c b/tests/kms_big_fb.c
index c6f374bdd073..942b4a2251d4 100644
--- a/tests/kms_big_fb.c
+++ b/tests/kms_big_fb.c
@@ -313,10 +313,10 @@ static bool test_plane(data_t *data)
 	} coords[] = {
 		/* bunch of coordinates pulled out of thin air */
 		{ 0, 0, },
-		{ w * 4 / 7, h / 5, },
-		{ w * 3 / 7, h / 3, },
+		{ w * 4 / 4, h / 2, },
+		{ w * 3 / 4, h / 2, },
 		{ w / 2, h / 2, },
-		{ w / 3, h * 3 / 4, },
+		{ w / 2, h * 2 / 4, },
 		{ w, h, },
 	};
 
@@ -462,6 +462,7 @@ static bool test_pipe(data_t *data)
 	igt_display_commit2(&data->display, data->display.is_atomic ?
 			    COMMIT_ATOMIC : COMMIT_UNIVERSAL);
 
+	igt_pipe_crc_free(data->pipe_crc);
 	data->pipe_crc = igt_pipe_crc_new(data->drm_fd, data->pipe,
 					  INTEL_PIPE_CRC_SOURCE_AUTO);
 
@@ -474,7 +475,6 @@ static bool test_pipe(data_t *data)
 	if (data->format == DRM_FORMAT_C8)
 		unset_lut(data);
 
-	igt_pipe_crc_free(data->pipe_crc);
 
 	igt_output_set_pipe(data->output, PIPE_ANY);
 
@@ -519,6 +519,7 @@ max_hw_stride_async_flip_test(data_t *data)
 		 data->hw_stride);
 	generate_pattern(data, &data->big_fb_flip[1], 640, 480);
 
+	igt_pipe_crc_free(data->pipe_crc);
 	data->pipe_crc = igt_pipe_crc_new(data->drm_fd, data->pipe,
 					  INTEL_PIPE_CRC_SOURCE_AUTO);
 	igt_pipe_crc_start(data->pipe_crc);
@@ -549,7 +550,6 @@ max_hw_stride_async_flip_test(data_t *data)
 			} while (ret == -EBUSY);
 			igt_assert(ret == 0);
 		}
-
 		igt_pipe_crc_get_for_frame(data->drm_fd, data->pipe_crc,
 					   startframe, &compare_crc);
 		igt_pipe_crc_get_for_frame(data->drm_fd, data->pipe_crc,
@@ -564,7 +564,7 @@ max_hw_stride_async_flip_test(data_t *data)
 	}
 	igt_reset_timeout();
 
-	igt_pipe_crc_free(data->pipe_crc);
+	igt_pipe_crc_stop(data->pipe_crc);
 	igt_output_set_pipe(data->output, PIPE_NONE);
 	igt_remove_fb(data->drm_fd, &data->big_fb);
 	igt_remove_fb(data->drm_fd, &data->big_fb_flip[0]);
@@ -852,7 +852,6 @@ igt_main
 			data.render_copy = igt_get_render_copyfunc(data.devid);
 
 		data.bops = buf_ops_create(data.drm_fd);
-		data.ibb = intel_bb_create(data.drm_fd, 4096);
 
 		data.planeclearrgb[0] = 0.0;
 		data.planeclearrgb[1] = 0.0;
@@ -978,7 +977,9 @@ igt_main
 						igt_require(data.format == DRM_FORMAT_C8 ||
 							igt_fb_supported_format(data.format));
 						igt_require(igt_display_has_format_mod(&data.display, data.format, data.modifier));
+						data.ibb = intel_bb_create(data.drm_fd, 4096);
 						test_scanout(&data);
+						intel_bb_destroy(data.ibb);
 					}
 
 					// async flip doesn't support linear fbs.
@@ -993,8 +994,10 @@ igt_main
 								igt_fb_supported_format(data.format));
 							igt_require(igt_display_has_format_mod(&data.display, data.format, data.modifier));
 							igt_require_f(data.async_flip_support, "Async Flip is not supported\n");
-							data.max_hw_fb_width = min(data.hw_stride / (formats[j].bpp >> 3), data.max_fb_width);
+							data.max_hw_fb_width = max(data.hw_stride / (formats[j].bpp >> 3), data.max_fb_width);
+							data.ibb = intel_bb_create(data.drm_fd, 4096);
 							test_scanout(&data);
+							intel_bb_destroy(data.ibb);
 					}
 					data.async_flip_test = false;
 				}
-- 
2.32.0



More information about the Intel-gfx-trybot mailing list