[igt-dev] [PATCH i-g-t 2/3] tests/kms_pipe_crc_basic: Add NV12 CRC sanitycheck tests

Swati Sharma swati2.sharma at intel.com
Mon May 15 12:03:33 UTC 2023


New CRC sanitycheck test cases are added with NV12 format (white
and solid rgb).
Existing test case(with format XRGB) is modified to validate CRC
with solid rgb in addition to white color fb)

Signed-off-by: Swati Sharma <swati2.sharma at intel.com>
Signed-off-by: Jeevan B <jeevan.b at intel.com>
---
 tests/kms_pipe_crc_basic.c | 198 ++++++++++++++++++++++++++++++++++---
 1 file changed, 182 insertions(+), 16 deletions(-)

diff --git a/tests/kms_pipe_crc_basic.c b/tests/kms_pipe_crc_basic.c
index 84c73fd7..a340d5b1 100644
--- a/tests/kms_pipe_crc_basic.c
+++ b/tests/kms_pipe_crc_basic.c
@@ -239,13 +239,15 @@ static void test_read_crc(data_t *data, enum pipe pipe,
  * CRC-sanity test, to make sure there would be no CRC mismatches
  *
  * - Create two framebuffers (FB0 & FB1) with same color info
+ *   with different formats (RGB/NV12)
  * - Flip FB0 with the Primary plane & collect the CRC as ref CRC.
  * - Flip FB1 with the Primary plane, collect the CRC & compare with
  *   the ref CRC.
  *
  *   No CRC mismatch should happen
  */
-static void test_compare_crc(data_t *data, enum pipe pipe, igt_output_t *output)
+static void test_compare_crc(data_t *data, enum pipe pipe, igt_output_t *output,
+			     uint32_t format, int color)
 {
 	igt_display_t *display = &data->display;
 	igt_plane_t *primary;
@@ -260,18 +262,60 @@ static void test_compare_crc(data_t *data, enum pipe pipe, igt_output_t *output)
 	mode = igt_output_get_mode(output);
 
 	/* Create two framebuffers with the same color info. */
-	igt_create_color_fb(data->drm_fd,
-			mode->hdisplay, mode->vdisplay,
-			DRM_FORMAT_XRGB8888,
-			DRM_FORMAT_MOD_LINEAR,
-			1.0, 1.0, 1.0,
-			&fb0);
-	igt_create_color_fb(data->drm_fd,
-			mode->hdisplay, mode->vdisplay,
-			DRM_FORMAT_XRGB8888,
-			DRM_FORMAT_MOD_LINEAR,
-			1.0, 1.0, 1.0,
-			&fb1);
+	switch (color) {
+	case 1:
+		igt_create_color_fb(data->drm_fd,
+				mode->hdisplay, mode->vdisplay,
+				format, DRM_FORMAT_MOD_LINEAR,
+				1.0, 0.0, 0.0,
+				&fb0);
+
+		igt_create_color_fb(data->drm_fd,
+				mode->hdisplay, mode->vdisplay,
+				format, DRM_FORMAT_MOD_LINEAR,
+				1.0, 0.0, 0.0,
+				&fb1);
+		break;
+	case 2:
+		igt_create_color_fb(data->drm_fd,
+				mode->hdisplay, mode->vdisplay,
+				format, DRM_FORMAT_MOD_LINEAR,
+				0.0, 1.0, 0.0,
+				&fb0);
+
+		igt_create_color_fb(data->drm_fd,
+				mode->hdisplay, mode->vdisplay,
+				format, DRM_FORMAT_MOD_LINEAR,
+				0.0, 1.0, 0.0,
+				&fb1);
+		break;
+	case 3:
+		igt_create_color_fb(data->drm_fd,
+				mode->hdisplay, mode->vdisplay,
+				format, DRM_FORMAT_MOD_LINEAR,
+				0.0, 0.0, 1.0,
+				&fb0);
+
+		igt_create_color_fb(data->drm_fd,
+				mode->hdisplay, mode->vdisplay,
+				format, DRM_FORMAT_MOD_LINEAR,
+				0.0, 0.0, 1.0,
+				&fb1);
+		break;
+	case 0:
+	default:
+		igt_create_color_fb(data->drm_fd,
+				mode->hdisplay, mode->vdisplay,
+				format, DRM_FORMAT_MOD_LINEAR,
+				1.0, 1.0, 1.0,
+				&fb0);
+
+		igt_create_color_fb(data->drm_fd,
+				mode->hdisplay, mode->vdisplay,
+				format, DRM_FORMAT_MOD_LINEAR,
+				1.0, 1.0, 1.0,
+				&fb1);
+	}
 
 	/* Flip FB0 with the Primary plane & collect the CRC as ref CRC. */
 	primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
@@ -475,8 +519,77 @@ igt_main_args("e", NULL, help_str, opt_handler, NULL)
 		}
 	}
 
-	igt_describe("Basic sanity check for CRC mismatches");
-	igt_subtest_with_dynamic("compare-crc-sanitycheck") {
+	igt_describe("Basic sanity check for CRC mismatches with XRGB format "
+		     "and white color fb.");
+	igt_subtest_with_dynamic("compare-crc-sanitycheck-xrgb") {
+		for_each_pipe_with_single_output(&data.display, pipe, output) {
+			if (simulation_constraint(pipe))
+				continue;
+
+			if(!pipe_output_combo_valid(&data.display, pipe, output))
+				continue;
+
+			igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), output->name)
+				test_compare_crc(&data, pipe, output, DRM_FORMAT_XRGB8888, 0);
+
+			break;
+		}
+	}
+
+	igt_describe("Basic sanity check for CRC mismatches with XRGB format "
+		     "and red solid color fb.");
+	igt_subtest_with_dynamic("compare-crc-sanitycheck-xrgb-red") {
+			for_each_pipe_with_single_output(&data.display, pipe, output) {
+				if (simulation_constraint(pipe))
+					continue;
+
+				if(!pipe_output_combo_valid(&data.display, pipe, output))
+					continue;
+
+				igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), output->name)
+					test_compare_crc(&data, pipe, output, DRM_FORMAT_XRGB8888, 1);
+
+			break;
+		}
+	}
+
+	igt_describe("Basic sanity check for CRC mismatches with XRGB format "
+		     "and green solid color fb.");
+	igt_subtest_with_dynamic("compare-crc-sanitycheck-xrgb-green") {
+		for_each_pipe_with_single_output(&data.display, pipe, output) {
+			if (simulation_constraint(pipe))
+				continue;
+
+			if(!pipe_output_combo_valid(&data.display, pipe, output))
+				continue;
+
+			igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), output->name)
+				test_compare_crc(&data, pipe, output, DRM_FORMAT_XRGB8888, 2);
+
+			break;
+		}
+	}
+
+	igt_describe("Basic sanity check for CRC mismatches with XRGB format "
+		     "and blue solid color fb.");
+	igt_subtest_with_dynamic("compare-crc-sanitycheck-xrgb-blue") {
+		for_each_pipe_with_single_output(&data.display, pipe, output) {
+			if (simulation_constraint(pipe))
+				continue;
+
+			if(!pipe_output_combo_valid(&data.display, pipe, output))
+				continue;
+
+			igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), output->name)
+				test_compare_crc(&data, pipe, output, DRM_FORMAT_XRGB8888, 3);
+
+			break;
+		}
+	}
+
+	igt_describe("Basic sanity check for CRC mismatches with NV12 format "
+		     "and white color fb.");
+	igt_subtest_with_dynamic("compare-crc-sanitycheck-nv12") {
 		for_each_pipe_with_single_output(&data.display, pipe, output) {
 			if (simulation_constraint(pipe))
 				continue;
@@ -485,7 +598,60 @@ igt_main_args("e", NULL, help_str, opt_handler, NULL)
 				continue;
 
 			igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), output->name)
-				test_compare_crc(&data, pipe, output);
+				test_compare_crc(&data, pipe, output, DRM_FORMAT_NV12, 0);
+
+			break;
+		}
+	}
+
+	igt_describe("Basic sanity check for CRC mismatches with NV12 format "
+		     "and red solid color fb.");
+	igt_subtest_with_dynamic("compare-crc-sanitycheck-nv12-red") {
+			for_each_pipe_with_single_output(&data.display, pipe, output) {
+				if (simulation_constraint(pipe))
+					continue;
+
+				if(!pipe_output_combo_valid(&data.display, pipe, output))
+					continue;
+
+				igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), output->name)
+					test_compare_crc(&data, pipe, output, DRM_FORMAT_NV12, 1);
+
+			break;
+		}
+	}
+
+	igt_describe("Basic sanity check for CRC mismatches with NV12 format "
+		     "and green solid color fb.");
+	igt_subtest_with_dynamic("compare-crc-sanitycheck-nv12-green") {
+		for_each_pipe_with_single_output(&data.display, pipe, output) {
+			if (simulation_constraint(pipe))
+				continue;
+
+			if(!pipe_output_combo_valid(&data.display, pipe, output))
+				continue;
+
+			igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), output->name)
+				test_compare_crc(&data, pipe, output, DRM_FORMAT_NV12, 2);
+
+			break;
+		}
+	}
+
+	igt_describe("Basic sanity check for CRC mismatches with NV12 format "
+		     "and blue solid color fb.");
+	igt_subtest_with_dynamic("compare-crc-sanitycheck-nv12-blue") {
+		for_each_pipe_with_single_output(&data.display, pipe, output) {
+			if (simulation_constraint(pipe))
+				continue;
+
+			if(!pipe_output_combo_valid(&data.display, pipe, output))
+				continue;
+
+			igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), output->name)
+				test_compare_crc(&data, pipe, output, DRM_FORMAT_NV12, 3);
+
+			break;
 		}
 	}
 
-- 
2.25.1



More information about the igt-dev mailing list