[Intel-gfx] [PATCH i-g-t] igt/kms_rotation_crc: Add RGB565 90 degree test for gen>9

Juha-Pekka Heikkila juhapekka.heikkila at gmail.com
Tue Nov 21 14:02:38 UTC 2017


Gen10 onwards 90 and 270 degree rotations are supported for RGB565 format.

v2 (Ville Syrjälä):
As a side effect to keep bad-pixel-format test valid on all supported
platforms it need to use DRM_FORMAT_C8 now.

While at it clean up kms_rotation_crc test a bit, take out
test_plane_rotation_ytiled_obj() function as
test_plane_rotation() can basically do the same.

v3 (Ville Syrjälä):
repurpose test_plane_rotation_ytiled_obj() function for
bad pixel testing with DRM_FORMAT_C8 as igt doesn't
support this format.

Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikkila at gmail.com>
---
 tests/kms_rotation_crc.c | 58 ++++++++++++++++++++++++++----------------------
 1 file changed, 32 insertions(+), 26 deletions(-)

diff --git a/tests/kms_rotation_crc.c b/tests/kms_rotation_crc.c
index 27d1f80..1769264 100644
--- a/tests/kms_rotation_crc.c
+++ b/tests/kms_rotation_crc.c
@@ -376,10 +376,6 @@ static void test_plane_rotation(data_t *data, int plane_type)
 				igt_plane_set_size(plane, data->fb.height, data->fb.width);
 
 			ret = igt_display_try_commit2(display, commit);
-			if (data->override_fmt || data->override_tiling) {
-				igt_assert_eq(ret, -EINVAL);
-				continue;
-			}
 
 			/* Verify commit was ok. */
 			igt_assert_eq(ret, 0);
@@ -421,14 +417,13 @@ static void test_plane_rotation(data_t *data, int plane_type)
 	igt_require_f(valid_tests, "no valid crtc/connector combinations found\n");
 }
 
-static void test_plane_rotation_ytiled_obj(data_t *data,
+static void test_bad_pixel_format(data_t *data,
 					   igt_output_t *output,
 					   int plane_type)
 {
 	igt_display_t *display = &data->display;
 	uint64_t tiling = LOCAL_I915_FORMAT_MOD_Y_TILED;
-	uint32_t format = DRM_FORMAT_XRGB8888;
-	int bpp = igt_drm_format_to_bpp(format);
+	uint32_t format = DRM_FORMAT_C8;
 	enum igt_commit_style commit = COMMIT_LEGACY;
 	int fd = data->gfx_fd;
 	igt_plane_t *plane;
@@ -453,7 +448,7 @@ static void test_plane_rotation_ytiled_obj(data_t *data,
 	w = mode->hdisplay;
 	h = mode->vdisplay;
 
-	for (stride = 512; stride < (w * bpp / 8); stride *= 2)
+	for (stride = 512; stride < w; stride *= 2)
 		;
 	for (size = 1024*1024; size < stride * h; size *= 2)
 		;
@@ -482,7 +477,9 @@ static void test_plane_rotation_ytiled_obj(data_t *data,
 
 	kmstest_restore_vt_mode();
 	igt_remove_fb(fd, &data->fb);
-	igt_assert_eq(ret, 0);
+	data->fb.fb_id = 0;
+
+	igt_assert_eq(ret, -EINVAL);
 }
 
 static void test_plane_rotation_exhaust_fences(data_t *data,
@@ -693,12 +690,25 @@ igt_main
 	}
 
 	igt_subtest_f("bad-pixel-format") {
+		enum pipe pipe;
+		igt_output_t *output;
+		int valid_tests = 0;
+
 		igt_require(gen >= 9);
 		data.pos_x = 0,
 		data.pos_y = 0;
 		data.rotation = IGT_ROTATION_90;
-		data.override_fmt = DRM_FORMAT_RGB565;
-		test_plane_rotation(&data, DRM_PLANE_TYPE_PRIMARY);
+
+		for_each_pipe_with_valid_output(&data.display, pipe, output) {
+			igt_output_set_pipe(output, pipe);
+
+			test_bad_pixel_format(&data, output, DRM_PLANE_TYPE_PRIMARY);
+
+			valid_tests++;
+			break;
+		}
+
+		igt_require_f(valid_tests, "invalid pixel format accepted for rotation\n");
 	}
 
 	igt_subtest_f("bad-tiling") {
@@ -709,24 +719,20 @@ igt_main
 		test_plane_rotation(&data, DRM_PLANE_TYPE_PRIMARY);
 	}
 
-	igt_subtest_f("primary-rotation-90-Y-tiled") {
-		enum pipe pipe;
-		igt_output_t *output;
-		int valid_tests = 0;
+	igt_subtest_f("primary-rotation-90-Y-tiled-16bpp") {
+		igt_require(gen >= 10);
+		data.rotation = IGT_ROTATION_90;
+		data.override_fmt = DRM_FORMAT_RGB565;
+		data.override_tiling = LOCAL_I915_FORMAT_MOD_Y_TILED;
+		test_plane_rotation(&data, DRM_PLANE_TYPE_PRIMARY);
+	}
 
+	igt_subtest_f("primary-rotation-90-Y-tiled") {
 		igt_require(gen >= 9);
 		data.rotation = IGT_ROTATION_90;
-
-		for_each_pipe_with_valid_output(&data.display, pipe, output) {
-			igt_output_set_pipe(output, pipe);
-
-			test_plane_rotation_ytiled_obj(&data, output, DRM_PLANE_TYPE_PRIMARY);
-
-			valid_tests++;
-			break;
-		}
-
-		igt_require_f(valid_tests, "no valid crtc/connector combinations found\n");
+		data.override_fmt = DRM_FORMAT_XRGB8888;
+		data.override_tiling = LOCAL_I915_FORMAT_MOD_Y_TILED;
+		test_plane_rotation(&data, DRM_PLANE_TYPE_PRIMARY);
 	}
 
 	igt_subtest_f("exhaust-fences") {
-- 
2.7.4



More information about the Intel-gfx mailing list