All of lore.kernel.org
 help / color / mirror / Atom feed
* [igt-dev] [PATCH i-g-t] tests/kms_rotation_crc: Create dynamic subtests
@ 2022-06-23 16:02 Jeevan B
  2022-06-23 17:08 ` [igt-dev] ✓ Fi.CI.BAT: success for " Patchwork
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: Jeevan B @ 2022-06-23 16:02 UTC (permalink / raw)
  To: igt-dev

Convert the existing subtests to dynamic subtests at pipe level.

Signed-off-by: Jeevan B <jeevan.b@intel.com>
---
 tests/kms_rotation_crc.c | 591 +++++++++++++++++++++------------------
 1 file changed, 316 insertions(+), 275 deletions(-)

diff --git a/tests/kms_rotation_crc.c b/tests/kms_rotation_crc.c
index 50869a08..ae925844 100644
--- a/tests/kms_rotation_crc.c
+++ b/tests/kms_rotation_crc.c
@@ -454,13 +454,13 @@ static bool test_format(data_t *data,
 	return true;
 }
 
-static void test_plane_rotation(data_t *data, int plane_type, bool test_bad_format)
+static void test_plane_rotation(data_t *data, int plane_type, bool test_bad_format, int pipe,
+				igt_output_t *output)
 {
 	igt_display_t *display = &data->display;
 	drmModeModeInfo *mode;
-	igt_output_t *output;
-	enum pipe pipe;
-	int pipe_count = 0, connected_outputs = 0;
+	igt_plane_t *plane;
+	int i, j, c;
 
 	if (is_amdgpu_device(data->gfx_fd))
 		igt_require(plane_type != DRM_PLANE_TYPE_OVERLAY &&
@@ -471,105 +471,90 @@ static void test_plane_rotation(data_t *data, int plane_type, bool test_bad_form
 
 	igt_display_require_output(display);
 
-	for_each_connected_output(&data->display, output)
-		connected_outputs++;
-
-	for_each_pipe_with_valid_output(display, pipe, output) {
-		igt_plane_t *plane;
-		int i, j, c;
-
-		mode = igt_output_get_mode(output);
-
-		/*
-		 * Find mode which is in use in connector. If this is mode
-		 * which was not run on earlier we'll end up on zeroed
-		 * struct crc_rect and recalculate reference crcs.
-		 */
-		for (data->output_crc_in_use = 0;
-		     data->output_crc_in_use < data->max_crc_in_use &&
-		     data->crc_rect[data->output_crc_in_use][0].mode != mode->vdisplay;
-		     data->output_crc_in_use++)
-			;
+	mode = igt_output_get_mode(output);
 
-		/*
-		 * This is if there was different mode on different connector
-		 * and this mode was not run on before.
-		 */
-		if (data->crc_rect[data->output_crc_in_use][0].mode != mode->vdisplay) {
-			data->crc_rect[data->output_crc_in_use][0].mode = mode->vdisplay;
-			data->max_crc_in_use++;
+	/*
+	 * Find mode which is in use in connector. If this is mode
+	 * which was not run on earlier we'll end up on zeroed
+	 * struct crc_rect and recalculate reference crcs.
+	 */
+	for (data->output_crc_in_use = 0;
+	     data->output_crc_in_use < data->max_crc_in_use &&
+	     data->crc_rect[data->output_crc_in_use][0].mode != mode->vdisplay;
+	     data->output_crc_in_use++)
+		;
 
+	/*
+	 * This is if there was different mode on different connector
+	 * and this mode was not run on before.
+	 */
+	if (data->crc_rect[data->output_crc_in_use][0].mode != mode->vdisplay) {
+		data->crc_rect[data->output_crc_in_use][0].mode = mode->vdisplay;
+		data->max_crc_in_use++;
 			if (data->max_crc_in_use >= MAX_TESTED_MODES)
 				data->max_crc_in_use = MAX_TESTED_MODES - 1;
-		}
-
-		for (c = 0; c < num_rectangle_types; c++)
-			data->crc_rect[data->output_crc_in_use][c].valid = false;
-
-		/* restricting the execution to 2 pipes to reduce execution time*/
-		if (pipe_count == 2 * connected_outputs && !data->extended)
-			break;
-		pipe_count++;
-
-		igt_output_set_pipe(output, pipe);
+	}
 
-		plane = igt_output_get_plane_type(output, plane_type);
-		igt_require(igt_plane_has_prop(plane, IGT_PLANE_ROTATION));
-		igt_require(igt_plane_has_rotation(plane, data->rotation));
-		/* CHV can't rotate and reflect simultaneously */
-		igt_require(!is_i915_device(data->gfx_fd) ||
-			    !IS_CHERRYVIEW(data->devid) ||
-			    data->rotation != (IGT_ROTATION_180 | IGT_REFLECT_X));
+	for (c = 0; c < num_rectangle_types; c++)
+		data->crc_rect[data->output_crc_in_use][c].valid = false;
 
-		prepare_crtc(data, output, pipe, plane, true);
+	igt_output_set_pipe(output, pipe);
 
-		for (i = 0; i < num_rectangle_types; i++) {
-			/* Unsupported on i915 */
-			if (plane_type == DRM_PLANE_TYPE_CURSOR &&
-			    i != square)
+	plane = igt_output_get_plane_type(output, plane_type);
+	igt_require(igt_plane_has_prop(plane, IGT_PLANE_ROTATION));
+	igt_require(igt_plane_has_rotation(plane, data->rotation));
+	/* CHV can't rotate and reflect simultaneously */
+	igt_require(!is_i915_device(data->gfx_fd) ||
+		    !IS_CHERRYVIEW(data->devid) ||
+		    data->rotation != (IGT_ROTATION_180 | IGT_REFLECT_X));
+
+	prepare_crtc(data, output, pipe, plane, true);
+
+	for (i = 0; i < num_rectangle_types; i++) {
+		/* Unsupported on i915 */
+		if (plane_type == DRM_PLANE_TYPE_CURSOR &&
+		    i != square)
+			continue;
+
+		/* Only support partial covering primary plane on gen9+ */
+		if (is_amdgpu_device(data->gfx_fd) ||
+			(plane_type == DRM_PLANE_TYPE_PRIMARY &&
+			 is_i915_device(data->gfx_fd) &&
+			 intel_display_ver(
+				 intel_get_drm_devid(data->gfx_fd)) < 9)) {
+			if (i != rectangle)
 				continue;
+			else
+				data->use_native_resolution = true;
+		} else {
+			data->use_native_resolution = false;
+		}
 
-			/* Only support partial covering primary plane on gen9+ */
-			if (is_amdgpu_device(data->gfx_fd) ||
-				(plane_type == DRM_PLANE_TYPE_PRIMARY &&
-				 is_i915_device(data->gfx_fd) &&
-				 intel_display_ver(
-					 intel_get_drm_devid(data->gfx_fd)) < 9)) {
-				if (i != rectangle)
-					continue;
-				else
-					data->use_native_resolution = true;
-			} else {
-				data->use_native_resolution = false;
-			}
-
-			if (!data->override_fmt) {
-				struct igt_vec tested_formats;
-
-				igt_vec_init(&tested_formats, sizeof(uint32_t));
+		if (!data->override_fmt) {
+			struct igt_vec tested_formats;
 
-				for (j = 0; j < plane->drm_plane->count_formats; j++) {
-					uint32_t format = plane->drm_plane->formats[j];
+			igt_vec_init(&tested_formats, sizeof(uint32_t));
 
-					if (!test_format(data, &tested_formats, format))
-						continue;
+			for (j = 0; j < plane->drm_plane->count_formats; j++) {
+				uint32_t format = plane->drm_plane->formats[j];
 
-					test_single_case(data, pipe, output, plane, i,
-							 format, test_bad_format);
-				}
-
-				igt_vec_fini(&tested_formats);
-			} else {
+				if (!test_format(data, &tested_formats, format))
+					continue;
 				test_single_case(data, pipe, output, plane, i,
-						 data->override_fmt, test_bad_format);
+						 format, test_bad_format);
 			}
+				igt_vec_fini(&tested_formats);
+		} else {
+			test_single_case(data, pipe, output, plane, i,
+					 data->override_fmt, test_bad_format);
 		}
-		if (is_i915_device(data->gfx_fd)) {
-			igt_pipe_crc_stop(data->pipe_crc);
-		}
+	}
+	if (is_i915_device(data->gfx_fd)) {
+		igt_pipe_crc_stop(data->pipe_crc);
 	}
 }
 
+
 typedef struct {
 	int32_t x1, y1;
 	uint64_t width, height, modifier, format;
@@ -665,10 +650,9 @@ static void pointlocation(data_t *data, planeinfos *p, drmModeModeInfo *mode,
  * It is left here if this test ever was wanted to be run on
  * different pipes.
  */
-static void test_multi_plane_rotation(data_t *data, enum pipe pipe)
+static void test_multi_plane_rotation(data_t *data, enum pipe pipe, igt_output_t *output)
 {
 	igt_display_t *display = &data->display;
-	igt_output_t *output;
 	igt_crc_t retcrc_sw, retcrc_hw;
 	planeinfos p[2];
 	int used_w, used_h, lastroundirotation = 0, lastroundjrotation = 0,
@@ -706,182 +690,189 @@ static void test_multi_plane_rotation(data_t *data, enum pipe pipe)
 	{IGT_ROTATION_270, .2f, .4f, I915_FORMAT_MOD_Yf_TILED },
 	};
 
-	for_each_valid_output_on_pipe(display, pipe, output) {
-		int i, j, k, l, flipsw, fliphw;
-		igt_output_set_pipe(output, pipe);
-		mode = igt_output_get_mode(output);
-		igt_display_require_output(display);
-		igt_display_commit2(display, COMMIT_ATOMIC);
-
-		used_w = TEST_WIDTH(mode);
-		used_h = TEST_HEIGHT(mode);
-
-		p[0].plane = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
-		p[1].plane = igt_output_get_plane_type(output, DRM_PLANE_TYPE_OVERLAY);
-
-		data->pipe_crc = igt_pipe_crc_new(data->gfx_fd, pipe,
-						  INTEL_PIPE_CRC_SOURCE_AUTO);
-		igt_pipe_crc_start(data->pipe_crc);
-
-		for (i = 0; i < ARRAY_SIZE(planeconfigs); i++) {
-			p[0].width = (uint64_t)(planeconfigs[i].width * used_w);
-			p[0].height = (uint64_t)(planeconfigs[i].height * used_h);
-			p[0].modifier = planeconfigs[i].modifier;
-			pointlocation(data, (planeinfos *)&p, mode, 0);
-
-			for (k = 0; k < ARRAY_SIZE(formatlist); k++) {
-				p[0].format = formatlist[k];
+	int i, j, k, l, flipsw, fliphw;
 
-				for (j = 0; j < ARRAY_SIZE(planeconfigs); j++) {
-					p[1].width = (uint64_t)(planeconfigs[j].width * used_w);
-					p[1].height = (uint64_t)(planeconfigs[j].height * used_h);
-					p[1].modifier = planeconfigs[j].modifier;
-					pointlocation(data, (planeinfos *)&p,
-						      mode, 1);
-
-					for (l = 0; l < ARRAY_SIZE(formatlist); l++) {
-						p[1].format = formatlist[l];
-						/*
-						 * RGB565 90/270 degrees rotation is supported
-						 * from gen11 onwards.
-						 */
-						if (p[0].format == DRM_FORMAT_RGB565 &&
-						     igt_rotation_90_or_270(planeconfigs[i].rotation)
-						     && intel_display_ver(data->devid) < 11)
-							continue;
+	igt_output_set_pipe(output, pipe);
+	mode = igt_output_get_mode(output);
+	igt_display_require_output(display);
+	igt_display_commit2(display, COMMIT_ATOMIC);
+
+	used_w = TEST_WIDTH(mode);
+	used_h = TEST_HEIGHT(mode);
+
+	p[0].plane = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
+	p[1].plane = igt_output_get_plane_type(output, DRM_PLANE_TYPE_OVERLAY);
+
+	data->pipe_crc = igt_pipe_crc_new(data->gfx_fd, pipe,
+					  INTEL_PIPE_CRC_SOURCE_AUTO);
+	igt_pipe_crc_start(data->pipe_crc);
+
+	for (i = 0; i < ARRAY_SIZE(planeconfigs); i++) {
+		p[0].width = (uint64_t)(planeconfigs[i].width * used_w);
+		p[0].height = (uint64_t)(planeconfigs[i].height * used_h);
+		p[0].modifier = planeconfigs[i].modifier;
+		pointlocation(data, (planeinfos *)&p, mode, 0);
+
+		for (k = 0; k < ARRAY_SIZE(formatlist); k++) {
+			p[0].format = formatlist[k];
+
+			for (j = 0; j < ARRAY_SIZE(planeconfigs); j++) {
+				p[1].width = (uint64_t)(planeconfigs[j].width * used_w);
+				p[1].height = (uint64_t)(planeconfigs[j].height * used_h);
+				p[1].modifier = planeconfigs[j].modifier;
+				pointlocation(data, (planeinfos *)&p,
+					      mode, 1);
+
+				for (l = 0; l < ARRAY_SIZE(formatlist); l++) {
+					p[1].format = formatlist[l];
+					/*
+					 * RGB565 90/270 degrees rotation is supported
+					 * from gen11 onwards.
+					 */
+					if (p[0].format == DRM_FORMAT_RGB565 &&
+					     igt_rotation_90_or_270(planeconfigs[i].rotation)
+					     && intel_display_ver(data->devid) < 11)
+						continue;
 
-						if (p[1].format == DRM_FORMAT_RGB565 &&
-						     igt_rotation_90_or_270(planeconfigs[j].rotation)
-						     && intel_display_ver(data->devid) < 11)
-							continue;
+					if (p[1].format == DRM_FORMAT_RGB565 &&
+					     igt_rotation_90_or_270(planeconfigs[j].rotation)
+					     && intel_display_ver(data->devid) < 11)
+						continue;
 
-						if (!igt_plane_has_rotation(p[0].plane,
-									    planeconfigs[i].rotation))
-							continue;
+					if (!igt_plane_has_rotation(p[0].plane,
+								    planeconfigs[i].rotation))
+						continue;
 
-						if (!igt_plane_has_rotation(p[1].plane,
-									    planeconfigs[j].rotation))
-							continue;
+					if (!igt_plane_has_rotation(p[1].plane,
+								    planeconfigs[j].rotation))
+						continue;
 
+					/*
+					 * if using packed formats crc's will be
+					 * same and can store them so there's
+					 * no need to redo comparison image and
+					 * just use stored crc.
+					 */
+					if (!igt_format_is_yuv_semiplanar(p[0].format) &&
+					    !igt_format_is_yuv_semiplanar(p[1].format) &&
+					    crclog[ctz(planeconfigs[i].rotation) |
+					    (ctz(planeconfigs[j].rotation) << 2)].frame != 0) {
+						retcrc_sw = crclog[ctz(planeconfigs[i].rotation) |
+							    (ctz(planeconfigs[j].rotation) << 2)];
+						have_crc = true;
+					} else if ((p[0].format == DRM_FORMAT_NV12 ||
+						  p[0].format == DRM_FORMAT_P010) &&
+						  p[1].format != DRM_FORMAT_NV12 &&
+						  p[1].format != DRM_FORMAT_P010 &&
+						  lastroundjformat != DRM_FORMAT_NV12 &&
+						  lastroundjformat != DRM_FORMAT_P010 &&
+						  planeconfigs[i].rotation == lastroundirotation &&
+						  planeconfigs[j].rotation == lastroundjrotation) {
 						/*
-						 * if using packed formats crc's will be
-						 * same and can store them so there's
-						 * no need to redo comparison image and
-						 * just use stored crc.
+						 * With NV12 can benefit from
+						 * previous crc if rotations
+						 * stay same. If both planes
+						 * have NV12 in use we need to
+						 * skip that case.
+						 * If last round right plane
+						 * had NV12 need to skip this.
 						 */
-						if (!igt_format_is_yuv_semiplanar(p[0].format) && !igt_format_is_yuv_semiplanar(p[1].format) &&
-						    crclog[ctz(planeconfigs[i].rotation) | (ctz(planeconfigs[j].rotation) << 2)].frame != 0) {
-							retcrc_sw = crclog[ctz(planeconfigs[i].rotation) | (ctz(planeconfigs[j].rotation) << 2)];
-							have_crc = true;
-						} else if((p[0].format == DRM_FORMAT_NV12 || p[0].format == DRM_FORMAT_P010) &&
-							   p[1].format != DRM_FORMAT_NV12 && p[1].format != DRM_FORMAT_P010 &&
-							   lastroundjformat != DRM_FORMAT_NV12 && lastroundjformat != DRM_FORMAT_P010 &&
-							   planeconfigs[i].rotation == lastroundirotation &&
-							   planeconfigs[j].rotation == lastroundjrotation) {
-							/*
-							 * With NV12 can benefit from
-							 * previous crc if rotations
-							 * stay same. If both planes
-							 * have NV12 in use we need to
-							 * skip that case.
-							 * If last round right plane
-							 * had NV12 need to skip this.
-							 */
-							have_crc = true;
-						} else {
-							/*
-							 * here will be created
-							 * comparison image and get crc
-							 * if didn't have stored crc
-							 * or planar format is in use.
-							 * have_crc flag will control
-							 * crc comparison part.
-							 */
-							p[0].rotation_sw = planeconfigs[i].rotation;
-							p[0].rotation_hw = IGT_ROTATION_0;
-							p[1].rotation_sw = planeconfigs[j].rotation;
-							p[1].rotation_hw = IGT_ROTATION_0;
-							if (!setup_multiplane(data,
-									(planeinfos *)&p,
-									&planeconfigs[i].fbs[k][MULTIPLANE_REFERENCE],
-									&planeconfigs[j].fbs[l][MULTIPLANE_REFERENCE]))
-								continue;
-							igt_display_commit_atomic(display, DRM_MODE_ATOMIC_ALLOW_MODESET, NULL);
-							flipsw = kmstest_get_vblank(data->gfx_fd, pipe, 0) + 1;
-							have_crc = false;
-						}
-
+						have_crc = true;
+					} else {
 						/*
-						 * create hw rotated image and
-						 * get vblank where interesting
-						 * crc will be at, grab crc bit later
+						 * here will be created
+						 * comparison image and get crc
+						 * if didn't have stored crc
+						 * or planar format is in use.
+						 * have_crc flag will control
+						 * crc comparison part.
 						 */
-						p[0].rotation_sw = IGT_ROTATION_0;
-						p[0].rotation_hw = planeconfigs[i].rotation;
-						p[1].rotation_sw = IGT_ROTATION_0;
-						p[1].rotation_hw = planeconfigs[j].rotation;
-
+						p[0].rotation_sw = planeconfigs[i].rotation;
+						p[0].rotation_hw = IGT_ROTATION_0;
+						p[1].rotation_sw = planeconfigs[j].rotation;
+						p[1].rotation_hw = IGT_ROTATION_0;
 						if (!setup_multiplane(data,
-								      (planeinfos *)&p,
-								      &planeconfigs[i].fbs[k][MULTIPLANE_ROTATED],
-								      &planeconfigs[j].fbs[l][MULTIPLANE_ROTATED]))
+						    (planeinfos *)&p,
+						    &planeconfigs[i].fbs[k][MULTIPLANE_REFERENCE],
+						    &planeconfigs[j].fbs[l][MULTIPLANE_REFERENCE]))
 							continue;
+						igt_display_commit_atomic(display,
+									  DRM_MODE_ATOMIC_ALLOW_MODESET, NULL);
+						flipsw = kmstest_get_vblank(data->gfx_fd, pipe, 0) + 1;
+						have_crc = false;
+					}
 
-						igt_display_commit_atomic(display, DRM_MODE_ATOMIC_ALLOW_MODESET, NULL);
-						fliphw = kmstest_get_vblank(data->gfx_fd, pipe, 0) + 1;
+					/*
+					 * create hw rotated image and
+					 * get vblank where interesting
+					 * crc will be at, grab crc bit later
+					 */
+					p[0].rotation_sw = IGT_ROTATION_0;
+					p[0].rotation_hw = planeconfigs[i].rotation;
+					p[1].rotation_sw = IGT_ROTATION_0;
+					p[1].rotation_hw = planeconfigs[j].rotation;
+
+					if (!setup_multiplane(data,
+							      (planeinfos *)&p,
+							      &planeconfigs[i].fbs[k][MULTIPLANE_ROTATED],
+							      &planeconfigs[j].fbs[l][MULTIPLANE_ROTATED]))
+						continue;
 
-						if (!have_crc) {
-							igt_pipe_crc_get_for_frame(data->gfx_fd,
-										   data->pipe_crc,
-										   flipsw,
-										   &retcrc_sw);
+					igt_display_commit_atomic(display, DRM_MODE_ATOMIC_ALLOW_MODESET, NULL);
+					fliphw = kmstest_get_vblank(data->gfx_fd, pipe, 0) + 1;
 
-							if (!igt_format_is_yuv_semiplanar(p[0].format) &&!igt_format_is_yuv_semiplanar(p[1].format))
-								crclog[ctz(planeconfigs[i].rotation) | (ctz(planeconfigs[j].rotation) << 2)]
-								= retcrc_sw;
-						}
-						igt_pipe_crc_get_for_frame(data->gfx_fd, data->pipe_crc, fliphw, &retcrc_hw);
+					if (!have_crc) {
+						igt_pipe_crc_get_for_frame(data->gfx_fd,
+									   data->pipe_crc,
+									   flipsw,
+									   &retcrc_sw);
 
-						str1 = igt_crc_to_string(&retcrc_sw);
-						str2 = igt_crc_to_string(&retcrc_hw);
+						if (!igt_format_is_yuv_semiplanar(p[0].format) &&
+						    !igt_format_is_yuv_semiplanar(p[1].format))
+							crclog[ctz(planeconfigs[i].rotation) | (ctz(planeconfigs[j].rotation) << 2)]
+							= retcrc_sw;
+					}
+					igt_pipe_crc_get_for_frame(data->gfx_fd, data->pipe_crc, fliphw, &retcrc_hw);
 
-						igt_debug("crc %.8s vs %.8s -- %.4s - %.4s crc buffered:%s rot1 %d rot2 %d\n",
-							str1, str2,
-							(char *) &p[0].format, (char *) &p[1].format,
-							have_crc?"yes":" no",
-							(int[]) {0, 90, 180, 270} [ctz(planeconfigs[i].rotation)],
-							(int[]) {0, 90, 180, 270} [ctz(planeconfigs[j].rotation)]);
+					str1 = igt_crc_to_string(&retcrc_sw);
+					str2 = igt_crc_to_string(&retcrc_hw);
 
-						free(str1);
-						free(str2);
+					igt_debug("crc %.8s vs %.8s -- %.4s - %.4s crc buffered:%s rot1 %d rot2 %d\n",
+						str1, str2,
+						(char *) &p[0].format, (char *) &p[1].format,
+						have_crc?"yes":" no",
+						(int[]) {0, 90, 180, 270} [ctz(planeconfigs[i].rotation)],
+						(int[]) {0, 90, 180, 270} [ctz(planeconfigs[j].rotation)]);
 
+					free(str1);
+					free(str2);
 
-						igt_assert_crc_equal(&retcrc_sw, &retcrc_hw);
 
-						lastroundjformat = p[1].format;
-						lastroundirotation = planeconfigs[i].rotation;
-						lastroundjrotation = planeconfigs[j].rotation;
-					}
+					igt_assert_crc_equal(&retcrc_sw, &retcrc_hw);
+
+					lastroundjformat = p[1].format;
+					lastroundirotation = planeconfigs[i].rotation;
+					lastroundjrotation = planeconfigs[j].rotation;
 				}
 			}
 		}
-		igt_pipe_crc_stop(data->pipe_crc);
-		igt_pipe_crc_free(data->pipe_crc);
+	}
+	igt_pipe_crc_stop(data->pipe_crc);
+	igt_pipe_crc_free(data->pipe_crc);
+	igt_plane_set_fb(p[0].plane, NULL);
+	igt_plane_set_fb(p[1].plane, NULL);
+	igt_display_commit_atomic(display, DRM_MODE_ATOMIC_ALLOW_MODESET, NULL);
 
-		igt_plane_set_fb(p[0].plane, NULL);
-		igt_plane_set_fb(p[1].plane, NULL);
-		igt_display_commit_atomic(display, DRM_MODE_ATOMIC_ALLOW_MODESET, NULL);
+	for (i = 0; i < ARRAY_SIZE(crclog); i++)
+		crclog[i].frame = 0;
 
-		for (i = 0; i < ARRAY_SIZE(crclog); i++)
-			crclog[i].frame = 0;
+	lastroundjformat = 0;
+	lastroundirotation = 0;
+	lastroundjrotation = 0;
 
-		lastroundjformat = 0;
-		lastroundirotation = 0;
-		lastroundjrotation = 0;
 
+	igt_output_set_pipe(output, PIPE_NONE);
 
-		igt_output_set_pipe(output, PIPE_NONE);
-	}
 	data->pipe_crc = NULL;
 
 	for (c = 0; c < ARRAY_SIZE(planeconfigs); c++) {
@@ -1049,6 +1040,8 @@ igt_main_args("", long_opts, help_str, opt_handler, &data)
 	};
 
 	int gen = 0;
+	enum pipe pipe;
+	igt_output_t *output;
 
 	igt_fixture {
 		data.gfx_fd = drm_open_driver_master(DRIVER_ANY);
@@ -1066,67 +1059,96 @@ igt_main_args("", long_opts, help_str, opt_handler, &data)
 	}
 
 	igt_describe("Rotation test with 90/270 degree for primary and sprite planes of gen9+");
-	for (subtest = subtests; subtest->rot; subtest++) {
-		igt_subtest_f("%s-rotation-%s",
-			      plane_test_str(subtest->plane),
-			      rot_test_str(subtest->rot)) {
-			if (is_amdgpu_device(data.gfx_fd)) {
-				data.override_fmt = DRM_FORMAT_XRGB8888;
-				if (igt_rotation_90_or_270(subtest->rot))
-					data.override_modifier = AMD_FMT_MOD |
-						AMD_FMT_MOD_SET(TILE, AMD_FMT_MOD_TILE_GFX9_64K_S) |
-						AMD_FMT_MOD_SET(TILE_VERSION, AMD_FMT_MOD_TILE_VER_GFX9);
-				else
-					data.override_modifier = DRM_FORMAT_MOD_LINEAR;
+	igt_subtest_with_dynamic("rotation") {
+		for (subtest = subtests; subtest->rot; subtest++) {
+			for_each_pipe(&data.display, pipe) {
+				for_each_valid_output_on_pipe(&data.display, pipe, output) {
+					igt_dynamic_f("%s-rotation-%s-%s-pipe-%s",
+						      plane_test_str(subtest->plane),
+						      rot_test_str(subtest->rot),
+						      output->name, kmstest_pipe_name(pipe)) {
+						if (is_amdgpu_device(data.gfx_fd)) {
+							data.override_fmt = DRM_FORMAT_XRGB8888;
+							if (igt_rotation_90_or_270(subtest->rot))
+								data.override_modifier = AMD_FMT_MOD |
+								AMD_FMT_MOD_SET(TILE, AMD_FMT_MOD_TILE_GFX9_64K_S) |
+								AMD_FMT_MOD_SET(TILE_VERSION, AMD_FMT_MOD_TILE_VER_GFX9);
+							else
+								data.override_modifier = DRM_FORMAT_MOD_LINEAR;
+						}
+					data.rotation = subtest->rot;
+					test_plane_rotation(&data, subtest->plane, false, pipe, output);
+					}
+				}
 			}
-			data.rotation = subtest->rot;
-			test_plane_rotation(&data, subtest->plane, false);
 		}
 	}
 
 	igt_describe("Rotation test with 90 degree for a plane of gen9+ with given position");
-	igt_subtest_f("sprite-rotation-90-pos-100-0") {
+	igt_subtest_with_dynamic("sprite-rotation-90-pos-100-0") {
 		data.rotation = IGT_ROTATION_90;
 		data.pos_x = 100,
 		data.pos_y = 0;
-		test_plane_rotation(&data, DRM_PLANE_TYPE_OVERLAY, false);
+		for_each_pipe(&data.display, pipe) {
+			for_each_valid_output_on_pipe(&data.display, pipe, output) {
+				igt_dynamic_f("%s-pipe-%s", output->name, kmstest_pipe_name(pipe))
+					test_plane_rotation(&data, DRM_PLANE_TYPE_OVERLAY, false, pipe, output);
+			}
+		}
 	}
 	data.pos_x = 0,
 	data.pos_y = 0;
 
 	igt_describe("Checking unsupported pixel format for gen9+ with 90 degree of rotation");
-	igt_subtest_f("bad-pixel-format") {
+	igt_subtest_with_dynamic("bad-pixel-format") {
 		 /* gen11 enables RGB565 rotation for 90/270 degrees.
 		  * so apart from this, any other gen11+ pixel format
 		  * can be used which doesn't support 90/270 degree
 		  * rotation */
 		data.rotation = IGT_ROTATION_90;
 		data.override_fmt = gen < 11 ? DRM_FORMAT_RGB565 : DRM_FORMAT_Y212;
-		test_plane_rotation(&data, DRM_PLANE_TYPE_PRIMARY, true);
+		for_each_pipe(&data.display, pipe) {
+			for_each_valid_output_on_pipe(&data.display, pipe, output) {
+				igt_dynamic_f("%s-pipe-%s", output->name, kmstest_pipe_name(pipe))
+					test_plane_rotation(&data, DRM_PLANE_TYPE_PRIMARY, true, pipe, output);
+			}
+		}
 	}
 	data.override_fmt = 0;
 
 	igt_describe("Checking unsupported tiling for gen9+ with 90 degree of rotation");
-	igt_subtest_f("bad-tiling") {
+	igt_subtest_with_dynamic("bad-tiling") {
 		data.rotation = IGT_ROTATION_90;
 		data.override_modifier = I915_FORMAT_MOD_X_TILED;
-		test_plane_rotation(&data, DRM_PLANE_TYPE_PRIMARY, true);
+		for_each_pipe(&data.display, pipe) {
+			for_each_valid_output_on_pipe(&data.display, pipe, output) {
+				igt_dynamic_f("%s-pipe-%s", output->name, kmstest_pipe_name(pipe))
+					test_plane_rotation(&data, DRM_PLANE_TYPE_PRIMARY, true, pipe, output);
+			}
+		}
 	}
 	data.override_modifier = 0;
 
 	igt_describe("Tiling and Rotation test for gen 10+ for primary plane");
-	for (reflect_x = reflect_x_subtests; reflect_x->modifier; reflect_x++) {
-		igt_subtest_f("primary-%s-reflect-x-%s",
-			      modifier_test_str(reflect_x->modifier),
-			      rot_test_str(reflect_x->rot)) {
-			data.rotation = (IGT_REFLECT_X | reflect_x->rot);
-			data.override_modifier = reflect_x->modifier;
-			test_plane_rotation(&data, DRM_PLANE_TYPE_PRIMARY, false);
+	igt_subtest_with_dynamic("reflect") {
+		for (reflect_x = reflect_x_subtests; reflect_x->modifier; reflect_x++) {
+			for_each_pipe(&data.display, pipe) {
+				for_each_valid_output_on_pipe(&data.display, pipe, output) {
+					igt_dynamic_f("primary-%s-reflect-x-%s-%s-pipe-%s",
+						       modifier_test_str(reflect_x->modifier),
+						       rot_test_str(reflect_x->rot),
+						       output->name, kmstest_pipe_name(pipe)) {
+						data.rotation = (IGT_REFLECT_X | reflect_x->rot);
+						data.override_modifier = reflect_x->modifier;
+						test_plane_rotation(&data, DRM_PLANE_TYPE_PRIMARY, false, pipe, output);
+					}
+				}
+			}
 		}
 	}
 
 	igt_describe("Rotation test on both planes by making them fully visible");
-	igt_subtest_f("multiplane-rotation") {
+	igt_subtest_with_dynamic("multiplane-rotation") {
 		igt_require(gen >= 9);
 		cleanup_crtc(&data);
 		data.planepos[0].origo = p_top | p_left;
@@ -1135,12 +1157,18 @@ igt_main_args("", long_opts, help_str, opt_handler, &data)
 		data.planepos[1].origo = p_top | p_right;
 		data.planepos[1].x = -.4f;
 		data.planepos[1].y = .1f;
-		test_multi_plane_rotation(&data, 0);
+		for_each_pipe(&data.display, pipe) {
+			for_each_valid_output_on_pipe(&data.display, pipe, output) {
+				igt_dynamic_f("%s-pipe-%s", output->name, kmstest_pipe_name(pipe)) {
+					test_multi_plane_rotation(&data, pipe, output);
+				}
+			}
+		}
 	}
 
 	igt_describe("Rotation test on both planes by cropping left/top corner of primary plane and"
 			"right/top corner of sprite plane");
-	igt_subtest_f("multiplane-rotation-cropping-top") {
+	igt_subtest_with_dynamic("multiplane-rotation-cropping-top") {
 		igt_require(gen >= 9);
 		cleanup_crtc(&data);
 		data.planepos[0].origo = p_top | p_left;
@@ -1149,12 +1177,18 @@ igt_main_args("", long_opts, help_str, opt_handler, &data)
 		data.planepos[1].origo = p_top | p_right;
 		data.planepos[1].x = -.15f;
 		data.planepos[1].y = -.15f;
-		test_multi_plane_rotation(&data, 0);
+		for_each_pipe(&data.display, pipe) {
+			for_each_valid_output_on_pipe(&data.display, pipe, output) {
+				igt_dynamic_f("%s-pipe-%s", output->name, kmstest_pipe_name(pipe)) {
+					test_multi_plane_rotation(&data, pipe, output);
+				}
+			}
+		}
 	}
 
 	igt_describe("Rotation test on both planes by cropping left/bottom corner of primary plane"
 			"and right/bottom corner of sprite plane");
-	igt_subtest_f("multiplane-rotation-cropping-bottom") {
+	igt_subtest_with_dynamic("multiplane-rotation-cropping-bottom") {
 		igt_require(gen >= 9);
 		cleanup_crtc(&data);
 		data.planepos[0].origo = p_bottom | p_left;
@@ -1163,7 +1197,13 @@ igt_main_args("", long_opts, help_str, opt_handler, &data)
 		data.planepos[1].origo = p_bottom | p_right;
 		data.planepos[1].x = -.15f;
 		data.planepos[1].y = -.20f;
-		test_multi_plane_rotation(&data, 0);
+		for_each_pipe(&data.display, pipe) {
+			for_each_valid_output_on_pipe(&data.display, pipe, output) {
+				igt_dynamic_f("%s-pipe-%s", output->name, kmstest_pipe_name(pipe)) {
+					test_multi_plane_rotation(&data, pipe, output);
+				}
+			}
+		}
 	}
 
 	/*
@@ -1171,17 +1211,18 @@ igt_main_args("", long_opts, help_str, opt_handler, &data)
 	 * the following subtests otherwise.
 	 */
 	igt_describe("This test intends to check for fence leaks exhaustively");
-	igt_subtest_f("exhaust-fences") {
-		enum pipe pipe;
-		igt_output_t *output;
+	igt_subtest_with_dynamic("exhaust-fences") {
 
 		igt_display_require_output(&data.display);
 
-		for_each_pipe_with_valid_output(&data.display, pipe, output) {
-			igt_plane_t *primary = &data.display.pipes[pipe].planes[0];
+		for_each_pipe(&data.display, pipe) {
+			for_each_pipe_with_valid_output(&data.display, pipe, output) {
+				igt_plane_t *primary = &data.display.pipes[pipe].planes[0];
+				igt_dynamic_f("%s-pipe-%s", output->name, kmstest_pipe_name(pipe)) {
 
-			test_plane_rotation_exhaust_fences(&data, pipe, output, primary);
-			break;
+					test_plane_rotation_exhaust_fences(&data, pipe, output, primary);
+				}
+			}
 		}
 	}
 
-- 
2.36.0

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [igt-dev] ✓ Fi.CI.BAT: success for tests/kms_rotation_crc: Create dynamic subtests
  2022-06-23 16:02 [igt-dev] [PATCH i-g-t] tests/kms_rotation_crc: Create dynamic subtests Jeevan B
@ 2022-06-23 17:08 ` Patchwork
  2022-06-27 15:49 ` [igt-dev] ✗ Fi.CI.IGT: failure " Patchwork
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: Patchwork @ 2022-06-23 17:08 UTC (permalink / raw)
  To: Jeevan B; +Cc: igt-dev

[-- Attachment #1: Type: text/plain, Size: 5889 bytes --]

== Series Details ==

Series: tests/kms_rotation_crc: Create dynamic subtests
URL   : https://patchwork.freedesktop.org/series/105554/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_11799 -> IGTPW_7370
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  External URL: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/index.html

Participating hosts (38 -> 37)
------------------------------

  Missing    (1): fi-bdw-samus 

Known issues
------------

  Here are the changes found in IGTPW_7370 that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@i915_selftest@live@gem:
    - fi-blb-e6850:       NOTRUN -> [DMESG-FAIL][1] ([i915#4528])
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/fi-blb-e6850/igt@i915_selftest@live@gem.html

  * igt@i915_selftest@live@gt_engines:
    - bat-dg1-5:          [PASS][2] -> [INCOMPLETE][3] ([i915#4418])
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11799/bat-dg1-5/igt@i915_selftest@live@gt_engines.html
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/bat-dg1-5/igt@i915_selftest@live@gt_engines.html

  * igt@i915_selftest@live@requests:
    - fi-pnv-d510:        [PASS][4] -> [DMESG-FAIL][5] ([i915#4528])
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11799/fi-pnv-d510/igt@i915_selftest@live@requests.html
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/fi-pnv-d510/igt@i915_selftest@live@requests.html

  * igt@kms_flip@basic-flip-vs-modeset@a-edp1:
    - fi-tgl-u2:          [PASS][6] -> [DMESG-WARN][7] ([i915#402]) +1 similar issue
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11799/fi-tgl-u2/igt@kms_flip@basic-flip-vs-modeset@a-edp1.html
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/fi-tgl-u2/igt@kms_flip@basic-flip-vs-modeset@a-edp1.html

  * igt@kms_psr@cursor_plane_move:
    - fi-tgl-u2:          [PASS][8] -> [SKIP][9] ([i915#668]) +3 similar issues
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11799/fi-tgl-u2/igt@kms_psr@cursor_plane_move.html
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/fi-tgl-u2/igt@kms_psr@cursor_plane_move.html

  * igt@runner@aborted:
    - fi-pnv-d510:        NOTRUN -> [FAIL][10] ([fdo#109271] / [i915#2403] / [i915#4312])
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/fi-pnv-d510/igt@runner@aborted.html

  
#### Possible fixes ####

  * igt@i915_selftest@live@hangcheck:
    - bat-dg1-6:          [DMESG-FAIL][11] ([i915#4494] / [i915#4957]) -> [PASS][12]
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11799/bat-dg1-6/igt@i915_selftest@live@hangcheck.html
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/bat-dg1-6/igt@i915_selftest@live@hangcheck.html

  * igt@i915_selftest@live@requests:
    - fi-blb-e6850:       [DMESG-FAIL][13] ([i915#4528]) -> [PASS][14]
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11799/fi-blb-e6850/igt@i915_selftest@live@requests.html
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/fi-blb-e6850/igt@i915_selftest@live@requests.html

  * igt@kms_frontbuffer_tracking@basic:
    - fi-cfl-8109u:       [DMESG-WARN][15] ([i915#62]) -> [PASS][16] +13 similar issues
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11799/fi-cfl-8109u/igt@kms_frontbuffer_tracking@basic.html
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/fi-cfl-8109u/igt@kms_frontbuffer_tracking@basic.html

  
  {name}: This element is suppressed. This means it is ignored when computing
          the status of the difference (SUCCESS, WARNING, or FAILURE).

  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [i915#2403]: https://gitlab.freedesktop.org/drm/intel/issues/2403
  [i915#3576]: https://gitlab.freedesktop.org/drm/intel/issues/3576
  [i915#402]: https://gitlab.freedesktop.org/drm/intel/issues/402
  [i915#4312]: https://gitlab.freedesktop.org/drm/intel/issues/4312
  [i915#4418]: https://gitlab.freedesktop.org/drm/intel/issues/4418
  [i915#4494]: https://gitlab.freedesktop.org/drm/intel/issues/4494
  [i915#4528]: https://gitlab.freedesktop.org/drm/intel/issues/4528
  [i915#4957]: https://gitlab.freedesktop.org/drm/intel/issues/4957
  [i915#62]: https://gitlab.freedesktop.org/drm/intel/issues/62
  [i915#668]: https://gitlab.freedesktop.org/drm/intel/issues/668


Build changes
-------------

  * CI: CI-20190529 -> None
  * IGT: IGT_6541 -> IGTPW_7370

  CI-20190529: 20190529
  CI_DRM_11799: dd1a1c29c88e16b8bf3610c58577e0c9fca314b2 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_7370: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/index.html
  IGT_6541: 02153f109bd422d93cfce7f5aa9d7b0e22fab13c @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git


Testlist changes
----------------

+igt@kms_rotation_crc@reflect
+igt@kms_rotation_crc@rotation
-igt@kms_rotation_crc@cursor-rotation-180
-igt@kms_rotation_crc@primary-4-tiled-reflect-x-0
-igt@kms_rotation_crc@primary-4-tiled-reflect-x-180
-igt@kms_rotation_crc@primary-rotation-90
-igt@kms_rotation_crc@primary-rotation-180
-igt@kms_rotation_crc@primary-rotation-270
-igt@kms_rotation_crc@primary-x-tiled-reflect-x-0
-igt@kms_rotation_crc@primary-x-tiled-reflect-x-180
-igt@kms_rotation_crc@primary-yf-tiled-reflect-x-0
-igt@kms_rotation_crc@primary-yf-tiled-reflect-x-90
-igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180
-igt@kms_rotation_crc@primary-yf-tiled-reflect-x-270
-igt@kms_rotation_crc@primary-y-tiled-reflect-x-0
-igt@kms_rotation_crc@primary-y-tiled-reflect-x-90
-igt@kms_rotation_crc@primary-y-tiled-reflect-x-180
-igt@kms_rotation_crc@primary-y-tiled-reflect-x-270
-igt@kms_rotation_crc@sprite-rotation-90
-igt@kms_rotation_crc@sprite-rotation-180
-igt@kms_rotation_crc@sprite-rotation-270

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/index.html

[-- Attachment #2: Type: text/html, Size: 6894 bytes --]

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [igt-dev] ✗ Fi.CI.IGT: failure for tests/kms_rotation_crc: Create dynamic subtests
  2022-06-23 16:02 [igt-dev] [PATCH i-g-t] tests/kms_rotation_crc: Create dynamic subtests Jeevan B
  2022-06-23 17:08 ` [igt-dev] ✓ Fi.CI.BAT: success for " Patchwork
@ 2022-06-27 15:49 ` Patchwork
  2022-09-29 17:34 ` [igt-dev] [PATCH i-g-t] " Modem, Bhanuprakash
  2023-01-06  6:49 ` Swati Sharma
  3 siblings, 0 replies; 5+ messages in thread
From: Patchwork @ 2022-06-27 15:49 UTC (permalink / raw)
  To: Jeevan B; +Cc: igt-dev

[-- Attachment #1: Type: text/plain, Size: 100266 bytes --]

== Series Details ==

Series: tests/kms_rotation_crc: Create dynamic subtests
URL   : https://patchwork.freedesktop.org/series/105554/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_11799_full -> IGTPW_7370_full
====================================================

Summary
-------

  **FAILURE**

  Serious unknown changes coming with IGTPW_7370_full absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in IGTPW_7370_full, please notify your bug team to allow them
  to document this new failure mode, which will reduce false positives in CI.

  External URL: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/index.html

Participating hosts (13 -> 10)
------------------------------

  Missing    (3): pig-skl-6260u pig-kbl-iris pig-glk-j5005 

Possible new issues
-------------------

  Here are the unknown changes that may have been introduced in IGTPW_7370_full:

### IGT changes ###

#### Possible regressions ####

  * {igt@kms_cursor_crc@cursor-sliding@pipe-d-hdmi-a-1-32x32} (NEW):
    - {shard-tglu}:       NOTRUN -> [SKIP][1] +1 similar issue
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-tglu-3/igt@kms_cursor_crc@cursor-sliding@pipe-d-hdmi-a-1-32x32.html

  * {igt@kms_cursor_crc@cursor-sliding@pipe-d-hdmi-a-1-512x512} (NEW):
    - {shard-dg1}:        NOTRUN -> [SKIP][2] +7 similar issues
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-dg1-12/igt@kms_cursor_crc@cursor-sliding@pipe-d-hdmi-a-1-512x512.html

  * igt@kms_plane@plane-panning-bottom-right-suspend@pipe-b-planes:
    - shard-tglb:         [PASS][3] -> [INCOMPLETE][4]
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11799/shard-tglb7/igt@kms_plane@plane-panning-bottom-right-suspend@pipe-b-planes.html
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-tglb7/igt@kms_plane@plane-panning-bottom-right-suspend@pipe-b-planes.html

  * {igt@kms_rotation_crc@reflect@primary-4-tiled-reflect-x-0-edp-1-pipe-a} (NEW):
    - shard-tglb:         NOTRUN -> [SKIP][5] +23 similar issues
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-tglb5/igt@kms_rotation_crc@reflect@primary-4-tiled-reflect-x-0-edp-1-pipe-a.html

  * {igt@kms_rotation_crc@reflect@primary-4-tiled-reflect-x-180-edp-1-pipe-c} (NEW):
    - shard-iclb:         NOTRUN -> [SKIP][6] +5 similar issues
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-iclb4/igt@kms_rotation_crc@reflect@primary-4-tiled-reflect-x-180-edp-1-pipe-c.html

  * {igt@kms_rotation_crc@rotation} (NEW):
    - {shard-rkl}:        NOTRUN -> [SKIP][7]
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-rkl-1/igt@kms_rotation_crc@rotation.html

  
#### Suppressed ####

  The following results come from untrusted machines, tests, or statuses.
  They do not affect the overall result.

  * igt@gem_workarounds@suspend-resume:
    - {shard-tglu}:       [PASS][8] -> [DMESG-WARN][9]
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11799/shard-tglu-2/igt@gem_workarounds@suspend-resume.html
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-tglu-1/igt@gem_workarounds@suspend-resume.html

  * {igt@kms_cursor_crc@cursor-offscreen@pipe-d-hdmi-a-1-32x10}:
    - {shard-dg1}:        NOTRUN -> [SKIP][10] +27 similar issues
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-dg1-17/igt@kms_cursor_crc@cursor-offscreen@pipe-d-hdmi-a-1-32x10.html

  * igt@kms_cursor_crc@cursor-rapid-movement@pipe-b-edp-1-32x32:
    - {shard-rkl}:        NOTRUN -> [SKIP][11] +10 similar issues
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-rkl-6/igt@kms_cursor_crc@cursor-rapid-movement@pipe-b-edp-1-32x32.html

  * igt@kms_cursor_crc@cursor-sliding@pipe-b-hdmi-a-1-32x32:
    - {shard-tglu}:       NOTRUN -> [SKIP][12] +13 similar issues
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-tglu-3/igt@kms_cursor_crc@cursor-sliding@pipe-b-hdmi-a-1-32x32.html

  * igt@kms_rotation_crc@multiplane-rotation-cropping-top:
    - {shard-rkl}:        [PASS][13] -> [SKIP][14]
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11799/shard-rkl-5/igt@kms_rotation_crc@multiplane-rotation-cropping-top.html
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-rkl-2/igt@kms_rotation_crc@multiplane-rotation-cropping-top.html

  * igt@kms_rotation_crc@sprite-rotation-90-pos-100-0:
    - {shard-rkl}:        [SKIP][15] ([i915#1845] / [i915#4098]) -> [SKIP][16] +1 similar issue
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11799/shard-rkl-5/igt@kms_rotation_crc@sprite-rotation-90-pos-100-0.html
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-rkl-5/igt@kms_rotation_crc@sprite-rotation-90-pos-100-0.html

  
New tests
---------

  New tests have been introduced between CI_DRM_11799_full and IGTPW_7370_full:

### New IGT tests (410) ###

  * igt@kms_cursor_crc@cursor-sliding@pipe-d-hdmi-a-1-128x128:
    - Statuses : 2 pass(s)
    - Exec time: [2.17, 5.51] s

  * igt@kms_cursor_crc@cursor-sliding@pipe-d-hdmi-a-1-128x42:
    - Statuses : 2 pass(s)
    - Exec time: [2.17, 5.47] s

  * igt@kms_cursor_crc@cursor-sliding@pipe-d-hdmi-a-1-256x256:
    - Statuses : 2 pass(s)
    - Exec time: [2.17, 5.49] s

  * igt@kms_cursor_crc@cursor-sliding@pipe-d-hdmi-a-1-256x85:
    - Statuses : 2 pass(s)
    - Exec time: [2.17, 5.59] s

  * igt@kms_cursor_crc@cursor-sliding@pipe-d-hdmi-a-1-32x10:
    - Statuses : 2 skip(s)
    - Exec time: [0.01, 0.02] s

  * igt@kms_cursor_crc@cursor-sliding@pipe-d-hdmi-a-1-32x32:
    - Statuses : 2 skip(s)
    - Exec time: [0.01, 0.02] s

  * igt@kms_cursor_crc@cursor-sliding@pipe-d-hdmi-a-1-512x170:
    - Statuses : 2 skip(s)
    - Exec time: [0.0] s

  * igt@kms_cursor_crc@cursor-sliding@pipe-d-hdmi-a-1-512x512:
    - Statuses : 2 skip(s)
    - Exec time: [0.0] s

  * igt@kms_cursor_crc@cursor-sliding@pipe-d-hdmi-a-1-64x21:
    - Statuses : 2 pass(s)
    - Exec time: [2.17, 5.52] s

  * igt@kms_cursor_crc@cursor-sliding@pipe-d-hdmi-a-1-64x64:
    - Statuses : 2 pass(s)
    - Exec time: [2.17, 5.53] s

  * igt@kms_pipe_crc_basic@nonblocking-crc@pipe-d-hdmi-a-1:
    - Statuses : 1 pass(s)
    - Exec time: [0.51] s

  * igt@kms_rotation_crc@bad-pixel-format@dp-1-pipe-a:
    - Statuses : 2 pass(s)
    - Exec time: [0.47, 0.73] s

  * igt@kms_rotation_crc@bad-pixel-format@dp-1-pipe-b:
    - Statuses : 2 pass(s)
    - Exec time: [0.67, 0.94] s

  * igt@kms_rotation_crc@bad-pixel-format@dp-1-pipe-c:
    - Statuses : 2 pass(s)
    - Exec time: [0.70, 0.91] s

  * igt@kms_rotation_crc@bad-pixel-format@edp-1-pipe-a:
    - Statuses : 2 pass(s)
    - Exec time: [0.59, 0.63] s

  * igt@kms_rotation_crc@bad-pixel-format@edp-1-pipe-b:
    - Statuses : 2 pass(s)
    - Exec time: [1.65, 1.82] s

  * igt@kms_rotation_crc@bad-pixel-format@edp-1-pipe-c:
    - Statuses : 2 pass(s)
    - Exec time: [1.61, 1.78] s

  * igt@kms_rotation_crc@bad-pixel-format@edp-1-pipe-d:
    - Statuses : 1 pass(s)
    - Exec time: [1.63] s

  * igt@kms_rotation_crc@bad-pixel-format@hdmi-a-1-pipe-a:
    - Statuses : 3 pass(s)
    - Exec time: [0.40, 1.00] s

  * igt@kms_rotation_crc@bad-pixel-format@hdmi-a-1-pipe-b:
    - Statuses : 3 pass(s)
    - Exec time: [0.41, 0.96] s

  * igt@kms_rotation_crc@bad-pixel-format@hdmi-a-1-pipe-c:
    - Statuses : 3 pass(s)
    - Exec time: [0.46, 0.92] s

  * igt@kms_rotation_crc@bad-pixel-format@hdmi-a-1-pipe-d:
    - Statuses : 2 pass(s)
    - Exec time: [0.41, 0.87] s

  * igt@kms_rotation_crc@bad-pixel-format@hdmi-a-2-pipe-a:
    - Statuses : 1 pass(s)
    - Exec time: [0.98] s

  * igt@kms_rotation_crc@bad-pixel-format@hdmi-a-2-pipe-b:
    - Statuses : 1 pass(s)
    - Exec time: [0.88] s

  * igt@kms_rotation_crc@bad-pixel-format@hdmi-a-2-pipe-c:
    - Statuses : 1 pass(s)
    - Exec time: [0.89] s

  * igt@kms_rotation_crc@bad-pixel-format@vga-1-pipe-a:
    - Statuses : 1 skip(s)
    - Exec time: [0.0] s

  * igt@kms_rotation_crc@bad-pixel-format@vga-1-pipe-b:
    - Statuses : 1 skip(s)
    - Exec time: [0.0] s

  * igt@kms_rotation_crc@bad-tiling@dp-1-pipe-a:
    - Statuses : 2 pass(s)
    - Exec time: [0.66, 0.93] s

  * igt@kms_rotation_crc@bad-tiling@dp-1-pipe-b:
    - Statuses : 2 pass(s)
    - Exec time: [0.79, 1.12] s

  * igt@kms_rotation_crc@bad-tiling@dp-1-pipe-c:
    - Statuses : 2 pass(s)
    - Exec time: [0.79, 1.08] s

  * igt@kms_rotation_crc@bad-tiling@edp-1-pipe-a:
    - Statuses : 3 pass(s)
    - Exec time: [0.64, 0.87] s

  * igt@kms_rotation_crc@bad-tiling@edp-1-pipe-b:
    - Statuses : 3 pass(s)
    - Exec time: [1.81, 1.86] s

  * igt@kms_rotation_crc@bad-tiling@edp-1-pipe-c:
    - Statuses : 2 pass(s)
    - Exec time: [1.88, 1.89] s

  * igt@kms_rotation_crc@bad-tiling@edp-1-pipe-d:
    - Statuses : 1 pass(s)
    - Exec time: [1.91] s

  * igt@kms_rotation_crc@bad-tiling@hdmi-a-1-pipe-a:
    - Statuses : 3 pass(s)
    - Exec time: [0.53, 1.60] s

  * igt@kms_rotation_crc@bad-tiling@hdmi-a-1-pipe-b:
    - Statuses : 3 pass(s)
    - Exec time: [0.50, 1.30] s

  * igt@kms_rotation_crc@bad-tiling@hdmi-a-1-pipe-c:
    - Statuses : 3 pass(s)
    - Exec time: [0.49, 1.33] s

  * igt@kms_rotation_crc@bad-tiling@hdmi-a-1-pipe-d:
    - Statuses : 2 pass(s)
    - Exec time: [0.50, 1.29] s

  * igt@kms_rotation_crc@bad-tiling@hdmi-a-2-pipe-a:
    - Statuses : 1 pass(s)
    - Exec time: [1.41] s

  * igt@kms_rotation_crc@bad-tiling@hdmi-a-2-pipe-b:
    - Statuses : 1 pass(s)
    - Exec time: [1.30] s

  * igt@kms_rotation_crc@bad-tiling@hdmi-a-2-pipe-c:
    - Statuses : 1 pass(s)
    - Exec time: [1.21] s

  * igt@kms_rotation_crc@bad-tiling@vga-1-pipe-a:
    - Statuses : 1 skip(s)
    - Exec time: [0.0] s

  * igt@kms_rotation_crc@bad-tiling@vga-1-pipe-b:
    - Statuses : 1 skip(s)
    - Exec time: [0.0] s

  * igt@kms_rotation_crc@exhaust-fences@dp-1-pipe-a:
    - Statuses : 2 pass(s)
    - Exec time: [1.14, 1.84] s

  * igt@kms_rotation_crc@exhaust-fences@dp-1-pipe-b:
    - Statuses : 2 pass(s)
    - Exec time: [1.29, 2.00] s

  * igt@kms_rotation_crc@exhaust-fences@dp-1-pipe-c:
    - Statuses : 2 pass(s)
    - Exec time: [1.30, 1.91] s

  * igt@kms_rotation_crc@exhaust-fences@edp-1-pipe-a:
    - Statuses : 3 pass(s)
    - Exec time: [1.49, 2.74] s

  * igt@kms_rotation_crc@exhaust-fences@edp-1-pipe-b:
    - Statuses : 3 pass(s)
    - Exec time: [1.90, 2.31] s

  * igt@kms_rotation_crc@exhaust-fences@edp-1-pipe-c:
    - Statuses : 2 pass(s)
    - Exec time: [1.92, 2.30] s

  * igt@kms_rotation_crc@exhaust-fences@edp-1-pipe-d:
    - Statuses : 1 pass(s)
    - Exec time: [1.92] s

  * igt@kms_rotation_crc@exhaust-fences@hdmi-a-1-pipe-a:
    - Statuses : 1 pass(s) 1 skip(s)
    - Exec time: [0.0, 2.49] s

  * igt@kms_rotation_crc@exhaust-fences@hdmi-a-1-pipe-b:
    - Statuses : 1 pass(s) 1 skip(s)
    - Exec time: [0.0, 1.41] s

  * igt@kms_rotation_crc@exhaust-fences@hdmi-a-1-pipe-c:
    - Statuses : 1 pass(s) 1 skip(s)
    - Exec time: [0.0, 1.44] s

  * igt@kms_rotation_crc@exhaust-fences@hdmi-a-1-pipe-d:
    - Statuses : 1 skip(s)
    - Exec time: [0.0] s

  * igt@kms_rotation_crc@exhaust-fences@hdmi-a-2-pipe-a:
    - Statuses : 1 pass(s)
    - Exec time: [2.48] s

  * igt@kms_rotation_crc@exhaust-fences@hdmi-a-2-pipe-b:
    - Statuses : 1 pass(s)
    - Exec time: [1.38] s

  * igt@kms_rotation_crc@exhaust-fences@hdmi-a-2-pipe-c:
    - Statuses : 1 pass(s)
    - Exec time: [1.32] s

  * igt@kms_rotation_crc@exhaust-fences@vga-1-pipe-a:
    - Statuses : 1 skip(s)
    - Exec time: [0.0] s

  * igt@kms_rotation_crc@exhaust-fences@vga-1-pipe-b:
    - Statuses : 1 skip(s)
    - Exec time: [0.0] s

  * igt@kms_rotation_crc@multiplane-rotation-cropping-bottom@dp-1-pipe-a:
    - Statuses : 2 pass(s)
    - Exec time: [14.13, 43.34] s

  * igt@kms_rotation_crc@multiplane-rotation-cropping-bottom@dp-1-pipe-b:
    - Statuses : 2 pass(s)
    - Exec time: [14.40, 43.47] s

  * igt@kms_rotation_crc@multiplane-rotation-cropping-bottom@dp-1-pipe-c:
    - Statuses : 2 pass(s)
    - Exec time: [13.87, 14.28] s

  * igt@kms_rotation_crc@multiplane-rotation-cropping-bottom@edp-1-pipe-a:
    - Statuses : 2 pass(s)
    - Exec time: [12.46, 40.59] s

  * igt@kms_rotation_crc@multiplane-rotation-cropping-bottom@edp-1-pipe-b:
    - Statuses : 2 pass(s)
    - Exec time: [13.56, 41.51] s

  * igt@kms_rotation_crc@multiplane-rotation-cropping-bottom@edp-1-pipe-c:
    - Statuses : 2 pass(s)
    - Exec time: [13.49, 41.57] s

  * igt@kms_rotation_crc@multiplane-rotation-cropping-bottom@edp-1-pipe-d:
    - Statuses : 1 pass(s)
    - Exec time: [13.51] s

  * igt@kms_rotation_crc@multiplane-rotation-cropping-bottom@hdmi-a-1-pipe-a:
    - Statuses : 3 pass(s)
    - Exec time: [9.38, 32.78] s

  * igt@kms_rotation_crc@multiplane-rotation-cropping-bottom@hdmi-a-1-pipe-b:
    - Statuses : 3 pass(s)
    - Exec time: [9.37, 32.48] s

  * igt@kms_rotation_crc@multiplane-rotation-cropping-bottom@hdmi-a-1-pipe-c:
    - Statuses : 3 pass(s)
    - Exec time: [9.37, 32.62] s

  * igt@kms_rotation_crc@multiplane-rotation-cropping-bottom@hdmi-a-1-pipe-d:
    - Statuses : 2 pass(s)
    - Exec time: [9.34, 18.59] s

  * igt@kms_rotation_crc@multiplane-rotation-cropping-bottom@hdmi-a-2-pipe-a:
    - Statuses : 1 pass(s)
    - Exec time: [32.64] s

  * igt@kms_rotation_crc@multiplane-rotation-cropping-bottom@hdmi-a-2-pipe-b:
    - Statuses : 1 pass(s)
    - Exec time: [32.46] s

  * igt@kms_rotation_crc@multiplane-rotation-cropping-bottom@hdmi-a-2-pipe-c:
    - Statuses : 1 pass(s)
    - Exec time: [32.58] s

  * igt@kms_rotation_crc@multiplane-rotation-cropping-top@dp-1-pipe-a:
    - Statuses : 2 pass(s)
    - Exec time: [14.12, 43.32] s

  * igt@kms_rotation_crc@multiplane-rotation-cropping-top@dp-1-pipe-b:
    - Statuses : 2 pass(s)
    - Exec time: [14.36, 43.49] s

  * igt@kms_rotation_crc@multiplane-rotation-cropping-top@dp-1-pipe-c:
    - Statuses : 2 pass(s)
    - Exec time: [13.86, 14.37] s

  * igt@kms_rotation_crc@multiplane-rotation-cropping-top@edp-1-pipe-a:
    - Statuses : 2 pass(s)
    - Exec time: [12.44, 40.71] s

  * igt@kms_rotation_crc@multiplane-rotation-cropping-top@edp-1-pipe-b:
    - Statuses : 2 pass(s)
    - Exec time: [13.56, 41.64] s

  * igt@kms_rotation_crc@multiplane-rotation-cropping-top@edp-1-pipe-c:
    - Statuses : 2 pass(s)
    - Exec time: [13.51, 41.66] s

  * igt@kms_rotation_crc@multiplane-rotation-cropping-top@edp-1-pipe-d:
    - Statuses : 1 pass(s)
    - Exec time: [13.49] s

  * igt@kms_rotation_crc@multiplane-rotation-cropping-top@hdmi-a-1-pipe-a:
    - Statuses : 1 pass(s)
    - Exec time: [32.53] s

  * igt@kms_rotation_crc@multiplane-rotation-cropping-top@hdmi-a-1-pipe-b:
    - Statuses : 1 pass(s)
    - Exec time: [32.51] s

  * igt@kms_rotation_crc@multiplane-rotation-cropping-top@hdmi-a-1-pipe-c:
    - Statuses : 1 pass(s)
    - Exec time: [32.59] s

  * igt@kms_rotation_crc@multiplane-rotation-cropping-top@hdmi-a-2-pipe-a:
    - Statuses : 1 pass(s)
    - Exec time: [32.59] s

  * igt@kms_rotation_crc@multiplane-rotation-cropping-top@hdmi-a-2-pipe-b:
    - Statuses : 1 pass(s)
    - Exec time: [32.43] s

  * igt@kms_rotation_crc@multiplane-rotation-cropping-top@hdmi-a-2-pipe-c:
    - Statuses : 1 pass(s)
    - Exec time: [32.44] s

  * igt@kms_rotation_crc@multiplane-rotation@dp-1-pipe-a:
    - Statuses : 2 pass(s)
    - Exec time: [14.11, 43.31] s

  * igt@kms_rotation_crc@multiplane-rotation@dp-1-pipe-b:
    - Statuses : 2 pass(s)
    - Exec time: [14.37, 43.48] s

  * igt@kms_rotation_crc@multiplane-rotation@dp-1-pipe-c:
    - Statuses : 2 pass(s)
    - Exec time: [13.87, 14.28] s

  * igt@kms_rotation_crc@multiplane-rotation@edp-1-pipe-a:
    - Statuses : 2 pass(s)
    - Exec time: [12.50, 40.73] s

  * igt@kms_rotation_crc@multiplane-rotation@edp-1-pipe-b:
    - Statuses : 2 pass(s)
    - Exec time: [13.59, 41.60] s

  * igt@kms_rotation_crc@multiplane-rotation@edp-1-pipe-c:
    - Statuses : 2 pass(s)
    - Exec time: [13.55, 41.58] s

  * igt@kms_rotation_crc@multiplane-rotation@edp-1-pipe-d:
    - Statuses : 1 pass(s)
    - Exec time: [13.58] s

  * igt@kms_rotation_crc@multiplane-rotation@hdmi-a-1-pipe-a:
    - Statuses : 3 pass(s)
    - Exec time: [18.76, 32.67] s

  * igt@kms_rotation_crc@multiplane-rotation@hdmi-a-1-pipe-b:
    - Statuses : 3 pass(s)
    - Exec time: [18.59, 32.55] s

  * igt@kms_rotation_crc@multiplane-rotation@hdmi-a-1-pipe-c:
    - Statuses : 3 pass(s)
    - Exec time: [18.63, 32.61] s

  * igt@kms_rotation_crc@multiplane-rotation@hdmi-a-1-pipe-d:
    - Statuses : 2 pass(s)
    - Exec time: [18.58, 21.12] s

  * igt@kms_rotation_crc@multiplane-rotation@hdmi-a-2-pipe-a:
    - Statuses : 1 pass(s)
    - Exec time: [32.69] s

  * igt@kms_rotation_crc@multiplane-rotation@hdmi-a-2-pipe-b:
    - Statuses : 1 pass(s)
    - Exec time: [32.51] s

  * igt@kms_rotation_crc@multiplane-rotation@hdmi-a-2-pipe-c:
    - Statuses : 1 pass(s)
    - Exec time: [32.46] s

  * igt@kms_rotation_crc@reflect:
    - Statuses :
    - Exec time: [None] s

  * igt@kms_rotation_crc@reflect@primary-4-tiled-reflect-x-0-dp-1-pipe-a:
    - Statuses : 2 skip(s)
    - Exec time: [0.0, 0.00] s

  * igt@kms_rotation_crc@reflect@primary-4-tiled-reflect-x-0-dp-1-pipe-b:
    - Statuses : 2 skip(s)
    - Exec time: [0.0, 0.00] s

  * igt@kms_rotation_crc@reflect@primary-4-tiled-reflect-x-0-dp-1-pipe-c:
    - Statuses : 2 skip(s)
    - Exec time: [0.0, 0.00] s

  * igt@kms_rotation_crc@reflect@primary-4-tiled-reflect-x-0-edp-1-pipe-a:
    - Statuses : 2 skip(s)
    - Exec time: [1.22, 1.24] s

  * igt@kms_rotation_crc@reflect@primary-4-tiled-reflect-x-0-edp-1-pipe-b:
    - Statuses : 2 skip(s)
    - Exec time: [1.22] s

  * igt@kms_rotation_crc@reflect@primary-4-tiled-reflect-x-0-edp-1-pipe-c:
    - Statuses : 2 skip(s)
    - Exec time: [1.22] s

  * igt@kms_rotation_crc@reflect@primary-4-tiled-reflect-x-0-edp-1-pipe-d:
    - Statuses : 1 skip(s)
    - Exec time: [1.22] s

  * igt@kms_rotation_crc@reflect@primary-4-tiled-reflect-x-0-hdmi-a-1-pipe-a:
    - Statuses : 1 skip(s)
    - Exec time: [0.00] s

  * igt@kms_rotation_crc@reflect@primary-4-tiled-reflect-x-0-hdmi-a-1-pipe-b:
    - Statuses : 1 skip(s)
    - Exec time: [0.00] s

  * igt@kms_rotation_crc@reflect@primary-4-tiled-reflect-x-0-hdmi-a-1-pipe-c:
    - Statuses : 1 skip(s)
    - Exec time: [0.00] s

  * igt@kms_rotation_crc@reflect@primary-4-tiled-reflect-x-0-hdmi-a-2-pipe-a:
    - Statuses : 1 skip(s)
    - Exec time: [0.00] s

  * igt@kms_rotation_crc@reflect@primary-4-tiled-reflect-x-0-hdmi-a-2-pipe-b:
    - Statuses : 1 skip(s)
    - Exec time: [0.00] s

  * igt@kms_rotation_crc@reflect@primary-4-tiled-reflect-x-0-hdmi-a-2-pipe-c:
    - Statuses : 1 skip(s)
    - Exec time: [0.00] s

  * igt@kms_rotation_crc@reflect@primary-4-tiled-reflect-x-0-vga-1-pipe-a:
    - Statuses : 1 skip(s)
    - Exec time: [0.0] s

  * igt@kms_rotation_crc@reflect@primary-4-tiled-reflect-x-0-vga-1-pipe-b:
    - Statuses : 1 skip(s)
    - Exec time: [0.0] s

  * igt@kms_rotation_crc@reflect@primary-4-tiled-reflect-x-180-dp-1-pipe-a:
    - Statuses : 2 skip(s)
    - Exec time: [0.0, 0.00] s

  * igt@kms_rotation_crc@reflect@primary-4-tiled-reflect-x-180-dp-1-pipe-b:
    - Statuses : 2 skip(s)
    - Exec time: [0.0, 0.00] s

  * igt@kms_rotation_crc@reflect@primary-4-tiled-reflect-x-180-dp-1-pipe-c:
    - Statuses : 2 skip(s)
    - Exec time: [0.0, 0.00] s

  * igt@kms_rotation_crc@reflect@primary-4-tiled-reflect-x-180-edp-1-pipe-a:
    - Statuses : 2 skip(s)
    - Exec time: [1.22, 1.23] s

  * igt@kms_rotation_crc@reflect@primary-4-tiled-reflect-x-180-edp-1-pipe-b:
    - Statuses : 2 skip(s)
    - Exec time: [1.22, 1.27] s

  * igt@kms_rotation_crc@reflect@primary-4-tiled-reflect-x-180-edp-1-pipe-c:
    - Statuses : 2 skip(s)
    - Exec time: [1.22] s

  * igt@kms_rotation_crc@reflect@primary-4-tiled-reflect-x-180-edp-1-pipe-d:
    - Statuses : 1 skip(s)
    - Exec time: [1.22] s

  * igt@kms_rotation_crc@reflect@primary-4-tiled-reflect-x-180-hdmi-a-1-pipe-a:
    - Statuses : 1 skip(s)
    - Exec time: [0.00] s

  * igt@kms_rotation_crc@reflect@primary-4-tiled-reflect-x-180-hdmi-a-1-pipe-b:
    - Statuses : 1 skip(s)
    - Exec time: [0.00] s

  * igt@kms_rotation_crc@reflect@primary-4-tiled-reflect-x-180-hdmi-a-1-pipe-c:
    - Statuses : 1 skip(s)
    - Exec time: [0.00] s

  * igt@kms_rotation_crc@reflect@primary-4-tiled-reflect-x-180-hdmi-a-2-pipe-a:
    - Statuses : 1 skip(s)
    - Exec time: [0.00] s

  * igt@kms_rotation_crc@reflect@primary-4-tiled-reflect-x-180-hdmi-a-2-pipe-b:
    - Statuses : 1 skip(s)
    - Exec time: [0.00] s

  * igt@kms_rotation_crc@reflect@primary-4-tiled-reflect-x-180-hdmi-a-2-pipe-c:
    - Statuses : 1 skip(s)
    - Exec time: [0.00] s

  * igt@kms_rotation_crc@reflect@primary-4-tiled-reflect-x-180-vga-1-pipe-a:
    - Statuses : 1 skip(s)
    - Exec time: [0.0] s

  * igt@kms_rotation_crc@reflect@primary-4-tiled-reflect-x-180-vga-1-pipe-b:
    - Statuses : 1 skip(s)
    - Exec time: [0.0] s

  * igt@kms_rotation_crc@reflect@primary-x-tiled-reflect-x-0-dp-1-pipe-a:
    - Statuses : 2 skip(s)
    - Exec time: [0.0, 0.00] s

  * igt@kms_rotation_crc@reflect@primary-x-tiled-reflect-x-0-dp-1-pipe-b:
    - Statuses : 2 skip(s)
    - Exec time: [0.0, 0.00] s

  * igt@kms_rotation_crc@reflect@primary-x-tiled-reflect-x-0-dp-1-pipe-c:
    - Statuses : 2 skip(s)
    - Exec time: [0.0, 0.00] s

  * igt@kms_rotation_crc@reflect@primary-x-tiled-reflect-x-0-edp-1-pipe-a:
    - Statuses : 2 pass(s)
    - Exec time: [2.34, 3.50] s

  * igt@kms_rotation_crc@reflect@primary-x-tiled-reflect-x-0-edp-1-pipe-b:
    - Statuses : 2 pass(s)
    - Exec time: [3.43, 4.55] s

  * igt@kms_rotation_crc@reflect@primary-x-tiled-reflect-x-0-edp-1-pipe-c:
    - Statuses : 2 pass(s)
    - Exec time: [3.39, 4.48] s

  * igt@kms_rotation_crc@reflect@primary-x-tiled-reflect-x-0-edp-1-pipe-d:
    - Statuses : 1 pass(s)
    - Exec time: [3.40] s

  * igt@kms_rotation_crc@reflect@primary-x-tiled-reflect-x-0-hdmi-a-1-pipe-a:
    - Statuses : 1 skip(s)
    - Exec time: [0.00] s

  * igt@kms_rotation_crc@reflect@primary-x-tiled-reflect-x-0-hdmi-a-1-pipe-b:
    - Statuses : 1 skip(s)
    - Exec time: [0.00] s

  * igt@kms_rotation_crc@reflect@primary-x-tiled-reflect-x-0-hdmi-a-1-pipe-c:
    - Statuses : 1 skip(s)
    - Exec time: [0.00] s

  * igt@kms_rotation_crc@reflect@primary-x-tiled-reflect-x-0-hdmi-a-2-pipe-a:
    - Statuses : 1 skip(s)
    - Exec time: [0.00] s

  * igt@kms_rotation_crc@reflect@primary-x-tiled-reflect-x-0-hdmi-a-2-pipe-b:
    - Statuses : 1 skip(s)
    - Exec time: [0.00] s

  * igt@kms_rotation_crc@reflect@primary-x-tiled-reflect-x-0-hdmi-a-2-pipe-c:
    - Statuses : 1 skip(s)
    - Exec time: [0.00] s

  * igt@kms_rotation_crc@reflect@primary-x-tiled-reflect-x-0-vga-1-pipe-a:
    - Statuses : 1 skip(s)
    - Exec time: [0.0] s

  * igt@kms_rotation_crc@reflect@primary-x-tiled-reflect-x-0-vga-1-pipe-b:
    - Statuses : 1 skip(s)
    - Exec time: [0.0] s

  * igt@kms_rotation_crc@reflect@primary-x-tiled-reflect-x-180-dp-1-pipe-a:
    - Statuses : 2 skip(s)
    - Exec time: [0.0, 0.00] s

  * igt@kms_rotation_crc@reflect@primary-x-tiled-reflect-x-180-dp-1-pipe-b:
    - Statuses : 2 skip(s)
    - Exec time: [0.0, 0.00] s

  * igt@kms_rotation_crc@reflect@primary-x-tiled-reflect-x-180-dp-1-pipe-c:
    - Statuses : 2 skip(s)
    - Exec time: [0.0, 0.00] s

  * igt@kms_rotation_crc@reflect@primary-x-tiled-reflect-x-180-edp-1-pipe-a:
    - Statuses : 2 pass(s)
    - Exec time: [3.47, 4.60] s

  * igt@kms_rotation_crc@reflect@primary-x-tiled-reflect-x-180-edp-1-pipe-b:
    - Statuses : 2 pass(s)
    - Exec time: [3.43, 4.55] s

  * igt@kms_rotation_crc@reflect@primary-x-tiled-reflect-x-180-edp-1-pipe-c:
    - Statuses : 2 pass(s)
    - Exec time: [3.39, 4.48] s

  * igt@kms_rotation_crc@reflect@primary-x-tiled-reflect-x-180-edp-1-pipe-d:
    - Statuses : 1 pass(s)
    - Exec time: [3.39] s

  * igt@kms_rotation_crc@reflect@primary-x-tiled-reflect-x-180-hdmi-a-1-pipe-a:
    - Statuses : 1 skip(s)
    - Exec time: [0.00] s

  * igt@kms_rotation_crc@reflect@primary-x-tiled-reflect-x-180-hdmi-a-1-pipe-b:
    - Statuses : 1 skip(s)
    - Exec time: [0.00] s

  * igt@kms_rotation_crc@reflect@primary-x-tiled-reflect-x-180-hdmi-a-1-pipe-c:
    - Statuses : 1 skip(s)
    - Exec time: [0.01] s

  * igt@kms_rotation_crc@reflect@primary-x-tiled-reflect-x-180-hdmi-a-2-pipe-a:
    - Statuses : 1 skip(s)
    - Exec time: [0.00] s

  * igt@kms_rotation_crc@reflect@primary-x-tiled-reflect-x-180-hdmi-a-2-pipe-b:
    - Statuses : 1 skip(s)
    - Exec time: [0.00] s

  * igt@kms_rotation_crc@reflect@primary-x-tiled-reflect-x-180-hdmi-a-2-pipe-c:
    - Statuses : 1 skip(s)
    - Exec time: [0.00] s

  * igt@kms_rotation_crc@reflect@primary-x-tiled-reflect-x-180-vga-1-pipe-a:
    - Statuses : 1 skip(s)
    - Exec time: [0.0] s

  * igt@kms_rotation_crc@reflect@primary-x-tiled-reflect-x-180-vga-1-pipe-b:
    - Statuses : 1 skip(s)
    - Exec time: [0.0] s

  * igt@kms_rotation_crc@reflect@primary-y-tiled-reflect-x-0-dp-1-pipe-a:
    - Statuses : 2 skip(s)
    - Exec time: [0.0, 0.00] s

  * igt@kms_rotation_crc@reflect@primary-y-tiled-reflect-x-0-dp-1-pipe-b:
    - Statuses : 2 skip(s)
    - Exec time: [0.0, 0.00] s

  * igt@kms_rotation_crc@reflect@primary-y-tiled-reflect-x-0-dp-1-pipe-c:
    - Statuses : 2 skip(s)
    - Exec time: [0.0, 0.00] s

  * igt@kms_rotation_crc@reflect@primary-y-tiled-reflect-x-0-edp-1-pipe-a:
    - Statuses : 2 pass(s)
    - Exec time: [4.18, 5.27] s

  * igt@kms_rotation_crc@reflect@primary-y-tiled-reflect-x-0-edp-1-pipe-b:
    - Statuses : 2 pass(s)
    - Exec time: [4.04, 5.20] s

  * igt@kms_rotation_crc@reflect@primary-y-tiled-reflect-x-0-edp-1-pipe-c:
    - Statuses : 2 pass(s)
    - Exec time: [4.04, 5.19] s

  * igt@kms_rotation_crc@reflect@primary-y-tiled-reflect-x-0-edp-1-pipe-d:
    - Statuses : 1 pass(s)
    - Exec time: [4.08] s

  * igt@kms_rotation_crc@reflect@primary-y-tiled-reflect-x-0-hdmi-a-1-pipe-a:
    - Statuses : 1 skip(s)
    - Exec time: [0.00] s

  * igt@kms_rotation_crc@reflect@primary-y-tiled-reflect-x-0-hdmi-a-1-pipe-b:
    - Statuses : 1 skip(s)
    - Exec time: [0.00] s

  * igt@kms_rotation_crc@reflect@primary-y-tiled-reflect-x-0-hdmi-a-1-pipe-c:
    - Statuses : 1 skip(s)
    - Exec time: [0.00] s

  * igt@kms_rotation_crc@reflect@primary-y-tiled-reflect-x-0-hdmi-a-2-pipe-a:
    - Statuses : 1 skip(s)
    - Exec time: [0.00] s

  * igt@kms_rotation_crc@reflect@primary-y-tiled-reflect-x-0-hdmi-a-2-pipe-b:
    - Statuses : 1 skip(s)
    - Exec time: [0.00] s

  * igt@kms_rotation_crc@reflect@primary-y-tiled-reflect-x-0-hdmi-a-2-pipe-c:
    - Statuses : 1 skip(s)
    - Exec time: [0.00] s

  * igt@kms_rotation_crc@reflect@primary-y-tiled-reflect-x-0-vga-1-pipe-a:
    - Statuses : 1 skip(s)
    - Exec time: [0.0] s

  * igt@kms_rotation_crc@reflect@primary-y-tiled-reflect-x-0-vga-1-pipe-b:
    - Statuses : 1 skip(s)
    - Exec time: [0.0] s

  * igt@kms_rotation_crc@reflect@primary-y-tiled-reflect-x-180-dp-1-pipe-a:
    - Statuses : 2 skip(s)
    - Exec time: [0.0, 0.00] s

  * igt@kms_rotation_crc@reflect@primary-y-tiled-reflect-x-180-dp-1-pipe-b:
    - Statuses : 2 skip(s)
    - Exec time: [0.0, 0.00] s

  * igt@kms_rotation_crc@reflect@primary-y-tiled-reflect-x-180-dp-1-pipe-c:
    - Statuses : 2 skip(s)
    - Exec time: [0.0, 0.00] s

  * igt@kms_rotation_crc@reflect@primary-y-tiled-reflect-x-180-edp-1-pipe-a:
    - Statuses : 2 pass(s)
    - Exec time: [4.12, 5.30] s

  * igt@kms_rotation_crc@reflect@primary-y-tiled-reflect-x-180-edp-1-pipe-b:
    - Statuses : 2 pass(s)
    - Exec time: [4.05, 5.20] s

  * igt@kms_rotation_crc@reflect@primary-y-tiled-reflect-x-180-edp-1-pipe-c:
    - Statuses : 2 pass(s)
    - Exec time: [4.00, 5.18] s

  * igt@kms_rotation_crc@reflect@primary-y-tiled-reflect-x-180-edp-1-pipe-d:
    - Statuses : 1 pass(s)
    - Exec time: [4.10] s

  * igt@kms_rotation_crc@reflect@primary-y-tiled-reflect-x-180-hdmi-a-1-pipe-a:
    - Statuses : 1 skip(s)
    - Exec time: [0.00] s

  * igt@kms_rotation_crc@reflect@primary-y-tiled-reflect-x-180-hdmi-a-1-pipe-b:
    - Statuses : 1 skip(s)
    - Exec time: [0.00] s

  * igt@kms_rotation_crc@reflect@primary-y-tiled-reflect-x-180-hdmi-a-1-pipe-c:
    - Statuses : 1 skip(s)
    - Exec time: [0.00] s

  * igt@kms_rotation_crc@reflect@primary-y-tiled-reflect-x-180-hdmi-a-2-pipe-a:
    - Statuses : 1 skip(s)
    - Exec time: [0.00] s

  * igt@kms_rotation_crc@reflect@primary-y-tiled-reflect-x-180-hdmi-a-2-pipe-b:
    - Statuses : 1 skip(s)
    - Exec time: [0.00] s

  * igt@kms_rotation_crc@reflect@primary-y-tiled-reflect-x-180-hdmi-a-2-pipe-c:
    - Statuses : 1 skip(s)
    - Exec time: [0.00] s

  * igt@kms_rotation_crc@reflect@primary-y-tiled-reflect-x-180-vga-1-pipe-a:
    - Statuses : 1 skip(s)
    - Exec time: [0.0] s

  * igt@kms_rotation_crc@reflect@primary-y-tiled-reflect-x-180-vga-1-pipe-b:
    - Statuses : 1 skip(s)
    - Exec time: [0.0] s

  * igt@kms_rotation_crc@reflect@primary-y-tiled-reflect-x-270-dp-1-pipe-a:
    - Statuses : 2 skip(s)
    - Exec time: [0.0, 0.00] s

  * igt@kms_rotation_crc@reflect@primary-y-tiled-reflect-x-270-dp-1-pipe-b:
    - Statuses : 2 skip(s)
    - Exec time: [0.0, 0.00] s

  * igt@kms_rotation_crc@reflect@primary-y-tiled-reflect-x-270-dp-1-pipe-c:
    - Statuses : 2 skip(s)
    - Exec time: [0.0, 0.00] s

  * igt@kms_rotation_crc@reflect@primary-y-tiled-reflect-x-270-edp-1-pipe-a:
    - Statuses : 2 pass(s)
    - Exec time: [4.16, 5.30] s

  * igt@kms_rotation_crc@reflect@primary-y-tiled-reflect-x-270-edp-1-pipe-b:
    - Statuses : 2 pass(s)
    - Exec time: [4.09, 5.20] s

  * igt@kms_rotation_crc@reflect@primary-y-tiled-reflect-x-270-edp-1-pipe-c:
    - Statuses : 2 pass(s)
    - Exec time: [4.05, 5.20] s

  * igt@kms_rotation_crc@reflect@primary-y-tiled-reflect-x-270-edp-1-pipe-d:
    - Statuses : 1 pass(s)
    - Exec time: [4.02] s

  * igt@kms_rotation_crc@reflect@primary-y-tiled-reflect-x-270-hdmi-a-1-pipe-a:
    - Statuses : 1 skip(s)
    - Exec time: [0.00] s

  * igt@kms_rotation_crc@reflect@primary-y-tiled-reflect-x-270-hdmi-a-1-pipe-b:
    - Statuses : 1 skip(s)
    - Exec time: [0.00] s

  * igt@kms_rotation_crc@reflect@primary-y-tiled-reflect-x-270-hdmi-a-1-pipe-c:
    - Statuses : 1 skip(s)
    - Exec time: [0.00] s

  * igt@kms_rotation_crc@reflect@primary-y-tiled-reflect-x-270-hdmi-a-2-pipe-a:
    - Statuses : 1 skip(s)
    - Exec time: [0.00] s

  * igt@kms_rotation_crc@reflect@primary-y-tiled-reflect-x-270-hdmi-a-2-pipe-b:
    - Statuses : 1 skip(s)
    - Exec time: [0.00] s

  * igt@kms_rotation_crc@reflect@primary-y-tiled-reflect-x-270-hdmi-a-2-pipe-c:
    - Statuses : 1 skip(s)
    - Exec time: [0.00] s

  * igt@kms_rotation_crc@reflect@primary-y-tiled-reflect-x-270-vga-1-pipe-a:
    - Statuses : 1 skip(s)
    - Exec time: [0.0] s

  * igt@kms_rotation_crc@reflect@primary-y-tiled-reflect-x-270-vga-1-pipe-b:
    - Statuses : 1 skip(s)
    - Exec time: [0.0] s

  * igt@kms_rotation_crc@reflect@primary-y-tiled-reflect-x-90-dp-1-pipe-a:
    - Statuses : 2 skip(s)
    - Exec time: [0.0, 0.00] s

  * igt@kms_rotation_crc@reflect@primary-y-tiled-reflect-x-90-dp-1-pipe-b:
    - Statuses : 2 skip(s)
    - Exec time: [0.0, 0.00] s

  * igt@kms_rotation_crc@reflect@primary-y-tiled-reflect-x-90-dp-1-pipe-c:
    - Statuses : 2 skip(s)
    - Exec time: [0.0, 0.00] s

  * igt@kms_rotation_crc@reflect@primary-y-tiled-reflect-x-90-edp-1-pipe-a:
    - Statuses : 2 pass(s)
    - Exec time: [4.12, 5.28] s

  * igt@kms_rotation_crc@reflect@primary-y-tiled-reflect-x-90-edp-1-pipe-b:
    - Statuses : 2 pass(s)
    - Exec time: [4.01, 5.21] s

  * igt@kms_rotation_crc@reflect@primary-y-tiled-reflect-x-90-edp-1-pipe-c:
    - Statuses : 2 pass(s)
    - Exec time: [3.99, 5.17] s

  * igt@kms_rotation_crc@reflect@primary-y-tiled-reflect-x-90-edp-1-pipe-d:
    - Statuses : 1 pass(s)
    - Exec time: [4.09] s

  * igt@kms_rotation_crc@reflect@primary-y-tiled-reflect-x-90-hdmi-a-1-pipe-a:
    - Statuses : 1 skip(s)
    - Exec time: [0.00] s

  * igt@kms_rotation_crc@reflect@primary-y-tiled-reflect-x-90-hdmi-a-1-pipe-b:
    - Statuses : 1 skip(s)
    - Exec time: [0.00] s

  * igt@kms_rotation_crc@reflect@primary-y-tiled-reflect-x-90-hdmi-a-1-pipe-c:
    - Statuses : 1 skip(s)
    - Exec time: [0.00] s

  * igt@kms_rotation_crc@reflect@primary-y-tiled-reflect-x-90-hdmi-a-2-pipe-a:
    - Statuses : 1 skip(s)
    - Exec time: [0.00] s

  * igt@kms_rotation_crc@reflect@primary-y-tiled-reflect-x-90-hdmi-a-2-pipe-b:
    - Statuses : 1 skip(s)
    - Exec time: [0.00] s

  * igt@kms_rotation_crc@reflect@primary-y-tiled-reflect-x-90-hdmi-a-2-pipe-c:
    - Statuses : 1 skip(s)
    - Exec time: [0.00] s

  * igt@kms_rotation_crc@reflect@primary-y-tiled-reflect-x-90-vga-1-pipe-a:
    - Statuses : 1 skip(s)
    - Exec time: [0.0] s

  * igt@kms_rotation_crc@reflect@primary-y-tiled-reflect-x-90-vga-1-pipe-b:
    - Statuses : 1 skip(s)
    - Exec time: [0.0] s

  * igt@kms_rotation_crc@reflect@primary-yf-tiled-reflect-x-0-dp-1-pipe-a:
    - Statuses : 2 skip(s)
    - Exec time: [0.0, 0.00] s

  * igt@kms_rotation_crc@reflect@primary-yf-tiled-reflect-x-0-dp-1-pipe-b:
    - Statuses : 2 skip(s)
    - Exec time: [0.0, 0.00] s

  * igt@kms_rotation_crc@reflect@primary-yf-tiled-reflect-x-0-dp-1-pipe-c:
    - Statuses : 2 skip(s)
    - Exec time: [0.0, 0.00] s

  * igt@kms_rotation_crc@reflect@primary-yf-tiled-reflect-x-0-edp-1-pipe-a:
    - Statuses : 1 pass(s) 1 skip(s)
    - Exec time: [1.20, 5.30] s

  * igt@kms_rotation_crc@reflect@primary-yf-tiled-reflect-x-0-edp-1-pipe-b:
    - Statuses : 1 pass(s) 1 skip(s)
    - Exec time: [1.22, 5.19] s

  * igt@kms_rotation_crc@reflect@primary-yf-tiled-reflect-x-0-edp-1-pipe-c:
    - Statuses : 1 pass(s) 1 skip(s)
    - Exec time: [1.22, 5.20] s

  * igt@kms_rotation_crc@reflect@primary-yf-tiled-reflect-x-0-edp-1-pipe-d:
    - Statuses : 1 skip(s)
    - Exec time: [1.22] s

  * igt@kms_rotation_crc@reflect@primary-yf-tiled-reflect-x-0-hdmi-a-1-pipe-a:
    - Statuses : 1 skip(s)
    - Exec time: [0.00] s

  * igt@kms_rotation_crc@reflect@primary-yf-tiled-reflect-x-0-hdmi-a-1-pipe-b:
    - Statuses : 1 skip(s)
    - Exec time: [0.00] s

  * igt@kms_rotation_crc@reflect@primary-yf-tiled-reflect-x-0-hdmi-a-1-pipe-c:
    - Statuses : 1 skip(s)
    - Exec time: [0.00] s

  * igt@kms_rotation_crc@reflect@primary-yf-tiled-reflect-x-0-hdmi-a-2-pipe-a:
    - Statuses : 1 skip(s)
    - Exec time: [0.00] s

  * igt@kms_rotation_crc@reflect@primary-yf-tiled-reflect-x-0-hdmi-a-2-pipe-b:
    - Statuses : 1 skip(s)
    - Exec time: [0.00] s

  * igt@kms_rotation_crc@reflect@primary-yf-tiled-reflect-x-0-hdmi-a-2-pipe-c:
    - Statuses : 1 skip(s)
    - Exec time: [0.00] s

  * igt@kms_rotation_crc@reflect@primary-yf-tiled-reflect-x-0-vga-1-pipe-a:
    - Statuses : 1 skip(s)
    - Exec time: [0.0] s

  * igt@kms_rotation_crc@reflect@primary-yf-tiled-reflect-x-0-vga-1-pipe-b:
    - Statuses : 1 skip(s)
    - Exec time: [0.0] s

  * igt@kms_rotation_crc@reflect@primary-yf-tiled-reflect-x-180-dp-1-pipe-a:
    - Statuses : 2 skip(s)
    - Exec time: [0.0, 0.00] s

  * igt@kms_rotation_crc@reflect@primary-yf-tiled-reflect-x-180-dp-1-pipe-b:
    - Statuses : 2 skip(s)
    - Exec time: [0.0, 0.00] s

  * igt@kms_rotation_crc@reflect@primary-yf-tiled-reflect-x-180-dp-1-pipe-c:
    - Statuses : 2 skip(s)
    - Exec time: [0.0, 0.00] s

  * igt@kms_rotation_crc@reflect@primary-yf-tiled-reflect-x-180-edp-1-pipe-a:
    - Statuses : 1 pass(s) 1 skip(s)
    - Exec time: [1.22, 5.32] s

  * igt@kms_rotation_crc@reflect@primary-yf-tiled-reflect-x-180-edp-1-pipe-b:
    - Statuses : 1 pass(s) 1 skip(s)
    - Exec time: [1.21, 5.19] s

  * igt@kms_rotation_crc@reflect@primary-yf-tiled-reflect-x-180-edp-1-pipe-c:
    - Statuses : 1 pass(s) 1 skip(s)
    - Exec time: [1.22, 5.18] s

  * igt@kms_rotation_crc@reflect@primary-yf-tiled-reflect-x-180-edp-1-pipe-d:
    - Statuses : 1 skip(s)
    - Exec time: [1.22] s

  * igt@kms_rotation_crc@reflect@primary-yf-tiled-reflect-x-180-hdmi-a-1-pipe-a:
    - Statuses : 1 skip(s)
    - Exec time: [0.00] s

  * igt@kms_rotation_crc@reflect@primary-yf-tiled-reflect-x-180-hdmi-a-1-pipe-b:
    - Statuses : 1 skip(s)
    - Exec time: [0.00] s

  * igt@kms_rotation_crc@reflect@primary-yf-tiled-reflect-x-180-hdmi-a-1-pipe-c:
    - Statuses : 1 skip(s)
    - Exec time: [0.00] s

  * igt@kms_rotation_crc@reflect@primary-yf-tiled-reflect-x-180-hdmi-a-2-pipe-a:
    - Statuses : 1 skip(s)
    - Exec time: [0.00] s

  * igt@kms_rotation_crc@reflect@primary-yf-tiled-reflect-x-180-hdmi-a-2-pipe-b:
    - Statuses : 1 skip(s)
    - Exec time: [0.00] s

  * igt@kms_rotation_crc@reflect@primary-yf-tiled-reflect-x-180-hdmi-a-2-pipe-c:
    - Statuses : 1 skip(s)
    - Exec time: [0.00] s

  * igt@kms_rotation_crc@reflect@primary-yf-tiled-reflect-x-180-vga-1-pipe-a:
    - Statuses : 1 skip(s)
    - Exec time: [0.0] s

  * igt@kms_rotation_crc@reflect@primary-yf-tiled-reflect-x-180-vga-1-pipe-b:
    - Statuses : 1 skip(s)
    - Exec time: [0.0] s

  * igt@kms_rotation_crc@reflect@primary-yf-tiled-reflect-x-270-dp-1-pipe-a:
    - Statuses : 2 skip(s)
    - Exec time: [0.0, 0.00] s

  * igt@kms_rotation_crc@reflect@primary-yf-tiled-reflect-x-270-dp-1-pipe-b:
    - Statuses : 2 skip(s)
    - Exec time: [0.0, 0.00] s

  * igt@kms_rotation_crc@reflect@primary-yf-tiled-reflect-x-270-dp-1-pipe-c:
    - Statuses : 2 skip(s)
    - Exec time: [0.0, 0.00] s

  * igt@kms_rotation_crc@reflect@primary-yf-tiled-reflect-x-270-edp-1-pipe-a:
    - Statuses : 1 pass(s) 1 skip(s)
    - Exec time: [1.22, 5.27] s

  * igt@kms_rotation_crc@reflect@primary-yf-tiled-reflect-x-270-edp-1-pipe-b:
    - Statuses : 1 pass(s) 1 skip(s)
    - Exec time: [1.22, 5.23] s

  * igt@kms_rotation_crc@reflect@primary-yf-tiled-reflect-x-270-edp-1-pipe-c:
    - Statuses : 1 pass(s) 1 skip(s)
    - Exec time: [1.22, 5.17] s

  * igt@kms_rotation_crc@reflect@primary-yf-tiled-reflect-x-270-edp-1-pipe-d:
    - Statuses : 1 skip(s)
    - Exec time: [1.22] s

  * igt@kms_rotation_crc@reflect@primary-yf-tiled-reflect-x-270-hdmi-a-1-pipe-a:
    - Statuses : 1 skip(s)
    - Exec time: [0.00] s

  * igt@kms_rotation_crc@reflect@primary-yf-tiled-reflect-x-270-hdmi-a-1-pipe-b:
    - Statuses : 1 skip(s)
    - Exec time: [0.00] s

  * igt@kms_rotation_crc@reflect@primary-yf-tiled-reflect-x-270-hdmi-a-1-pipe-c:
    - Statuses : 1 skip(s)
    - Exec time: [0.00] s

  * igt@kms_rotation_crc@reflect@primary-yf-tiled-reflect-x-270-hdmi-a-2-pipe-a:
    - Statuses : 1 skip(s)
    - Exec time: [0.00] s

  * igt@kms_rotation_crc@reflect@primary-yf-tiled-reflect-x-270-hdmi-a-2-pipe-b:
    - Statuses : 1 skip(s)
    - Exec time: [0.00] s

  * igt@kms_rotation_crc@reflect@primary-yf-tiled-reflect-x-270-hdmi-a-2-pipe-c:
    - Statuses : 1 skip(s)
    - Exec time: [0.00] s

  * igt@kms_rotation_crc@reflect@primary-yf-tiled-reflect-x-270-vga-1-pipe-a:
    - Statuses : 1 skip(s)
    - Exec time: [0.0] s

  * igt@kms_rotation_crc@reflect@primary-yf-tiled-reflect-x-270-vga-1-pipe-b:
    - Statuses : 1 skip(s)
    - Exec time: [0.0] s

  * igt@kms_rotation_crc@reflect@primary-yf-tiled-reflect-x-90-dp-1-pipe-a:
    - Statuses : 2 skip(s)
    - Exec time: [0.0, 0.00] s

  * igt@kms_rotation_crc@reflect@primary-yf-tiled-reflect-x-90-dp-1-pipe-b:
    - Statuses : 2 skip(s)
    - Exec time: [0.0, 0.00] s

  * igt@kms_rotation_crc@reflect@primary-yf-tiled-reflect-x-90-dp-1-pipe-c:
    - Statuses : 2 skip(s)
    - Exec time: [0.0, 0.00] s

  * igt@kms_rotation_crc@reflect@primary-yf-tiled-reflect-x-90-edp-1-pipe-a:
    - Statuses : 1 pass(s) 1 skip(s)
    - Exec time: [1.22, 5.27] s

  * igt@kms_rotation_crc@reflect@primary-yf-tiled-reflect-x-90-edp-1-pipe-b:
    - Statuses : 1 pass(s) 1 skip(s)
    - Exec time: [1.22, 5.21] s

  * igt@kms_rotation_crc@reflect@primary-yf-tiled-reflect-x-90-edp-1-pipe-c:
    - Statuses : 1 pass(s) 1 skip(s)
    - Exec time: [1.22, 5.17] s

  * igt@kms_rotation_crc@reflect@primary-yf-tiled-reflect-x-90-edp-1-pipe-d:
    - Statuses : 1 skip(s)
    - Exec time: [1.22] s

  * igt@kms_rotation_crc@reflect@primary-yf-tiled-reflect-x-90-hdmi-a-1-pipe-a:
    - Statuses : 1 skip(s)
    - Exec time: [0.00] s

  * igt@kms_rotation_crc@reflect@primary-yf-tiled-reflect-x-90-hdmi-a-1-pipe-b:
    - Statuses : 1 skip(s)
    - Exec time: [0.00] s

  * igt@kms_rotation_crc@reflect@primary-yf-tiled-reflect-x-90-hdmi-a-1-pipe-c:
    - Statuses : 1 skip(s)
    - Exec time: [0.00] s

  * igt@kms_rotation_crc@reflect@primary-yf-tiled-reflect-x-90-hdmi-a-2-pipe-a:
    - Statuses : 1 skip(s)
    - Exec time: [0.00] s

  * igt@kms_rotation_crc@reflect@primary-yf-tiled-reflect-x-90-hdmi-a-2-pipe-b:
    - Statuses : 1 skip(s)
    - Exec time: [0.00] s

  * igt@kms_rotation_crc@reflect@primary-yf-tiled-reflect-x-90-hdmi-a-2-pipe-c:
    - Statuses : 1 skip(s)
    - Exec time: [0.00] s

  * igt@kms_rotation_crc@reflect@primary-yf-tiled-reflect-x-90-vga-1-pipe-a:
    - Statuses : 1 skip(s)
    - Exec time: [0.0] s

  * igt@kms_rotation_crc@reflect@primary-yf-tiled-reflect-x-90-vga-1-pipe-b:
    - Statuses : 1 skip(s)
    - Exec time: [0.0] s

  * igt@kms_rotation_crc@rotation:
    - Statuses : 1 skip(s)
    - Exec time: [0.0] s

  * igt@kms_rotation_crc@rotation@cursor-rotation-180-dp-1-pipe-a:
    - Statuses : 2 pass(s)
    - Exec time: [0.43] s

  * igt@kms_rotation_crc@rotation@cursor-rotation-180-dp-1-pipe-b:
    - Statuses : 2 pass(s)
    - Exec time: [0.41, 0.43] s

  * igt@kms_rotation_crc@rotation@cursor-rotation-180-dp-1-pipe-c:
    - Statuses : 2 pass(s)
    - Exec time: [0.41, 0.44] s

  * igt@kms_rotation_crc@rotation@cursor-rotation-180-edp-1-pipe-a:
    - Statuses : 2 pass(s)
    - Exec time: [1.31, 1.37] s

  * igt@kms_rotation_crc@rotation@cursor-rotation-180-edp-1-pipe-b:
    - Statuses : 2 pass(s)
    - Exec time: [1.33, 1.42] s

  * igt@kms_rotation_crc@rotation@cursor-rotation-180-edp-1-pipe-c:
    - Statuses : 2 pass(s)
    - Exec time: [1.34, 1.39] s

  * igt@kms_rotation_crc@rotation@cursor-rotation-180-edp-1-pipe-d:
    - Statuses : 1 pass(s)
    - Exec time: [1.28] s

  * igt@kms_rotation_crc@rotation@cursor-rotation-180-hdmi-a-1-pipe-a:
    - Statuses : 2 pass(s)
    - Exec time: [0.19, 0.42] s

  * igt@kms_rotation_crc@rotation@cursor-rotation-180-hdmi-a-1-pipe-b:
    - Statuses : 2 pass(s)
    - Exec time: [0.17, 0.46] s

  * igt@kms_rotation_crc@rotation@cursor-rotation-180-hdmi-a-1-pipe-c:
    - Statuses : 2 pass(s)
    - Exec time: [0.17, 0.43] s

  * igt@kms_rotation_crc@rotation@cursor-rotation-180-hdmi-a-1-pipe-d:
    - Statuses : 1 pass(s)
    - Exec time: [0.15] s

  * igt@kms_rotation_crc@rotation@cursor-rotation-180-hdmi-a-2-pipe-a:
    - Statuses : 1 pass(s)
    - Exec time: [0.41] s

  * igt@kms_rotation_crc@rotation@cursor-rotation-180-hdmi-a-2-pipe-b:
    - Statuses : 1 pass(s)
    - Exec time: [0.41] s

  * igt@kms_rotation_crc@rotation@cursor-rotation-180-hdmi-a-2-pipe-c:
    - Statuses : 1 pass(s)
    - Exec time: [0.41] s

  * igt@kms_rotation_crc@rotation@cursor-rotation-180-vga-1-pipe-a:
    - Statuses : 1 pass(s)
    - Exec time: [0.34] s

  * igt@kms_rotation_crc@rotation@cursor-rotation-180-vga-1-pipe-b:
    - Statuses : 1 pass(s)
    - Exec time: [0.34] s

  * igt@kms_rotation_crc@rotation@primary-rotation-180-dp-1-pipe-a:
    - Statuses : 2 pass(s)
    - Exec time: [2.19, 2.49] s

  * igt@kms_rotation_crc@rotation@primary-rotation-180-dp-1-pipe-b:
    - Statuses : 2 pass(s)
    - Exec time: [2.22, 2.53] s

  * igt@kms_rotation_crc@rotation@primary-rotation-180-dp-1-pipe-c:
    - Statuses : 2 pass(s)
    - Exec time: [2.21, 2.26] s

  * igt@kms_rotation_crc@rotation@primary-rotation-180-edp-1-pipe-a:
    - Statuses : 2 pass(s)
    - Exec time: [3.45, 4.63] s

  * igt@kms_rotation_crc@rotation@primary-rotation-180-edp-1-pipe-b:
    - Statuses : 2 pass(s)
    - Exec time: [3.43, 4.55] s

  * igt@kms_rotation_crc@rotation@primary-rotation-180-edp-1-pipe-c:
    - Statuses : 2 pass(s)
    - Exec time: [3.39, 4.54] s

  * igt@kms_rotation_crc@rotation@primary-rotation-180-edp-1-pipe-d:
    - Statuses : 1 pass(s)
    - Exec time: [3.39] s

  * igt@kms_rotation_crc@rotation@primary-rotation-180-hdmi-a-1-pipe-a:
    - Statuses : 2 pass(s)
    - Exec time: [1.78, 2.84] s

  * igt@kms_rotation_crc@rotation@primary-rotation-180-hdmi-a-1-pipe-b:
    - Statuses : 2 pass(s)
    - Exec time: [1.76, 2.75] s

  * igt@kms_rotation_crc@rotation@primary-rotation-180-hdmi-a-1-pipe-c:
    - Statuses : 2 pass(s)
    - Exec time: [1.74, 2.73] s

  * igt@kms_rotation_crc@rotation@primary-rotation-180-hdmi-a-1-pipe-d:
    - Statuses : 1 pass(s)
    - Exec time: [1.76] s

  * igt@kms_rotation_crc@rotation@primary-rotation-180-hdmi-a-2-pipe-a:
    - Statuses : 1 pass(s)
    - Exec time: [2.81] s

  * igt@kms_rotation_crc@rotation@primary-rotation-180-hdmi-a-2-pipe-b:
    - Statuses : 1 pass(s)
    - Exec time: [2.71] s

  * igt@kms_rotation_crc@rotation@primary-rotation-180-hdmi-a-2-pipe-c:
    - Statuses : 1 pass(s)
    - Exec time: [2.71] s

  * igt@kms_rotation_crc@rotation@primary-rotation-180-vga-1-pipe-a:
    - Statuses : 1 pass(s)
    - Exec time: [0.47] s

  * igt@kms_rotation_crc@rotation@primary-rotation-180-vga-1-pipe-b:
    - Statuses : 1 pass(s)
    - Exec time: [0.58] s

  * igt@kms_rotation_crc@rotation@primary-rotation-270-dp-1-pipe-a:
    - Statuses : 2 pass(s)
    - Exec time: [3.27, 3.31] s

  * igt@kms_rotation_crc@rotation@primary-rotation-270-dp-1-pipe-b:
    - Statuses : 2 pass(s)
    - Exec time: [3.21, 3.29] s

  * igt@kms_rotation_crc@rotation@primary-rotation-270-dp-1-pipe-c:
    - Statuses : 2 pass(s)
    - Exec time: [2.83, 3.25] s

  * igt@kms_rotation_crc@rotation@primary-rotation-270-edp-1-pipe-a:
    - Statuses : 2 pass(s)
    - Exec time: [4.22, 5.51] s

  * igt@kms_rotation_crc@rotation@primary-rotation-270-edp-1-pipe-b:
    - Statuses : 2 pass(s)
    - Exec time: [4.08, 5.27] s

  * igt@kms_rotation_crc@rotation@primary-rotation-270-edp-1-pipe-c:
    - Statuses : 2 pass(s)
    - Exec time: [3.97, 5.23] s

  * igt@kms_rotation_crc@rotation@primary-rotation-270-edp-1-pipe-d:
    - Statuses : 1 pass(s)
    - Exec time: [4.04] s

  * igt@kms_rotation_crc@rotation@primary-rotation-270-hdmi-a-1-pipe-a:
    - Statuses : 2 pass(s)
    - Exec time: [2.53, 4.16] s

  * igt@kms_rotation_crc@rotation@primary-rotation-270-hdmi-a-1-pipe-b:
    - Statuses : 2 pass(s)
    - Exec time: [2.43, 3.98] s

  * igt@kms_rotation_crc@rotation@primary-rotation-270-hdmi-a-1-pipe-c:
    - Statuses : 2 pass(s)
    - Exec time: [2.39, 3.96] s

  * igt@kms_rotation_crc@rotation@primary-rotation-270-hdmi-a-1-pipe-d:
    - Statuses : 1 pass(s)
    - Exec time: [2.43] s

  * igt@kms_rotation_crc@rotation@primary-rotation-270-hdmi-a-2-pipe-a:
    - Statuses : 1 pass(s)
    - Exec time: [4.07] s

  * igt@kms_rotation_crc@rotation@primary-rotation-270-hdmi-a-2-pipe-b:
    - Statuses : 1 pass(s)
    - Exec time: [3.86] s

  * igt@kms_rotation_crc@rotation@primary-rotation-270-hdmi-a-2-pipe-c:
    - Statuses : 1 pass(s)
    - Exec time: [3.86] s

  * igt@kms_rotation_crc@rotation@primary-rotation-270-vga-1-pipe-a:
    - Statuses : 1 skip(s)
    - Exec time: [0.0] s

  * igt@kms_rotation_crc@rotation@primary-rotation-270-vga-1-pipe-b:
    - Statuses : 1 skip(s)
    - Exec time: [0.0] s

  * igt@kms_rotation_crc@rotation@primary-rotation-90-dp-1-pipe-a:
    - Statuses : 2 pass(s)
    - Exec time: [3.06, 3.16] s

  * igt@kms_rotation_crc@rotation@primary-rotation-90-dp-1-pipe-b:
    - Statuses : 2 pass(s)
    - Exec time: [3.26, 3.28] s

  * igt@kms_rotation_crc@rotation@primary-rotation-90-dp-1-pipe-c:
    - Statuses : 2 pass(s)
    - Exec time: [2.88, 3.29] s

  * igt@kms_rotation_crc@rotation@primary-rotation-90-edp-1-pipe-a:
    - Statuses : 2 pass(s)
    - Exec time: [2.99, 4.33] s

  * igt@kms_rotation_crc@rotation@primary-rotation-90-edp-1-pipe-b:
    - Statuses : 2 pass(s)
    - Exec time: [3.94, 5.22] s

  * igt@kms_rotation_crc@rotation@primary-rotation-90-edp-1-pipe-c:
    - Statuses : 2 pass(s)
    - Exec time: [4.12, 5.27] s

  * igt@kms_rotation_crc@rotation@primary-rotation-90-edp-1-pipe-d:
    - Statuses : 1 pass(s)
    - Exec time: [4.04] s

  * igt@kms_rotation_crc@rotation@primary-rotation-90-hdmi-a-1-pipe-a:
    - Statuses : 2 pass(s)
    - Exec time: [2.42, 4.08] s

  * igt@kms_rotation_crc@rotation@primary-rotation-90-hdmi-a-1-pipe-b:
    - Statuses : 2 pass(s)
    - Exec time: [2.46, 3.93] s

  * igt@kms_rotation_crc@rotation@primary-rotation-90-hdmi-a-1-pipe-c:
    - Statuses : 2 pass(s)
    - Exec time: [2.42, 3.96] s

  * igt@kms_rotation_crc@rotation@primary-rotation-90-hdmi-a-1-pipe-d:
    - Statuses : 1 pass(s)
    - Exec time: [2.42] s

  * igt@kms_rotation_crc@rotation@primary-rotation-90-hdmi-a-2-pipe-a:
    - Statuses : 1 pass(s)
    - Exec time: [4.05] s

  * igt@kms_rotation_crc@rotation@primary-rotation-90-hdmi-a-2-pipe-b:
    - Statuses : 1 pass(s)
    - Exec time: [3.85] s

  * igt@kms_rotation_crc@rotation@primary-rotation-90-hdmi-a-2-pipe-c:
    - Statuses : 1 pass(s)
    - Exec time: [3.89] s

  * igt@kms_rotation_crc@rotation@primary-rotation-90-vga-1-pipe-a:
    - Statuses : 1 skip(s)
    - Exec time: [0.0] s

  * igt@kms_rotation_crc@rotation@primary-rotation-90-vga-1-pipe-b:
    - Statuses : 1 skip(s)
    - Exec time: [0.0] s

  * igt@kms_rotation_crc@rotation@sprite-rotation-180-dp-1-pipe-a:
    - Statuses : 2 pass(s)
    - Exec time: [2.23, 2.50] s

  * igt@kms_rotation_crc@rotation@sprite-rotation-180-dp-1-pipe-b:
    - Statuses : 2 pass(s)
    - Exec time: [2.22, 2.56] s

  * igt@kms_rotation_crc@rotation@sprite-rotation-180-dp-1-pipe-c:
    - Statuses : 2 pass(s)
    - Exec time: [2.23, 2.29] s

  * igt@kms_rotation_crc@rotation@sprite-rotation-180-edp-1-pipe-a:
    - Statuses : 2 pass(s)
    - Exec time: [2.90, 3.74] s

  * igt@kms_rotation_crc@rotation@sprite-rotation-180-edp-1-pipe-b:
    - Statuses : 2 pass(s)
    - Exec time: [2.90, 3.71] s

  * igt@kms_rotation_crc@rotation@sprite-rotation-180-edp-1-pipe-c:
    - Statuses : 2 pass(s)
    - Exec time: [2.87, 3.71] s

  * igt@kms_rotation_crc@rotation@sprite-rotation-180-edp-1-pipe-d:
    - Statuses : 1 pass(s)
    - Exec time: [2.89] s

  * igt@kms_rotation_crc@rotation@sprite-rotation-180-hdmi-a-1-pipe-a:
    - Statuses : 2 pass(s)
    - Exec time: [1.32, 2.21] s

  * igt@kms_rotation_crc@rotation@sprite-rotation-180-hdmi-a-1-pipe-b:
    - Statuses : 2 pass(s)
    - Exec time: [1.35, 2.21] s

  * igt@kms_rotation_crc@rotation@sprite-rotation-180-hdmi-a-1-pipe-c:
    - Statuses : 2 pass(s)
    - Exec time: [1.35, 2.21] s

  * igt@kms_rotation_crc@rotation@sprite-rotation-180-hdmi-a-1-pipe-d:
    - Statuses : 1 pass(s)
    - Exec time: [1.32] s

  * igt@kms_rotation_crc@rotation@sprite-rotation-180-hdmi-a-2-pipe-a:
    - Statuses : 1 pass(s)
    - Exec time: [2.18] s

  * igt@kms_rotation_crc@rotation@sprite-rotation-180-hdmi-a-2-pipe-b:
    - Statuses : 1 pass(s)
    - Exec time: [2.18] s

  * igt@kms_rotation_crc@rotation@sprite-rotation-180-hdmi-a-2-pipe-c:
    - Statuses : 1 pass(s)
    - Exec time: [2.18] s

  * igt@kms_rotation_crc@rotation@sprite-rotation-180-vga-1-pipe-a:
    - Statuses : 1 pass(s)
    - Exec time: [1.68] s

  * igt@kms_rotation_crc@rotation@sprite-rotation-180-vga-1-pipe-b:
    - Statuses : 1 pass(s)
    - Exec time: [1.68] s

  * igt@kms_rotation_crc@rotation@sprite-rotation-270-dp-1-pipe-a:
    - Statuses : 2 pass(s)
    - Exec time: [3.31, 3.40] s

  * igt@kms_rotation_crc@rotation@sprite-rotation-270-dp-1-pipe-b:
    - Statuses : 2 pass(s)
    - Exec time: [3.25, 3.27] s

  * igt@kms_rotation_crc@rotation@sprite-rotation-270-dp-1-pipe-c:
    - Statuses : 2 pass(s)
    - Exec time: [2.87, 3.30] s

  * igt@kms_rotation_crc@rotation@sprite-rotation-270-edp-1-pipe-a:
    - Statuses : 2 pass(s)
    - Exec time: [3.32, 4.22] s

  * igt@kms_rotation_crc@rotation@sprite-rotation-270-edp-1-pipe-b:
    - Statuses : 2 pass(s)
    - Exec time: [3.27, 4.24] s

  * igt@kms_rotation_crc@rotation@sprite-rotation-270-edp-1-pipe-c:
    - Statuses : 2 pass(s)
    - Exec time: [3.33, 4.22] s

  * igt@kms_rotation_crc@rotation@sprite-rotation-270-edp-1-pipe-d:
    - Statuses : 1 pass(s)
    - Exec time: [3.34] s

  * igt@kms_rotation_crc@rotation@sprite-rotation-270-hdmi-a-1-pipe-a:
    - Statuses : 2 pass(s)
    - Exec time: [1.83, 3.13] s

  * igt@kms_rotation_crc@rotation@sprite-rotation-270-hdmi-a-1-pipe-b:
    - Statuses : 2 pass(s)
    - Exec time: [1.89, 3.13] s

  * igt@kms_rotation_crc@rotation@sprite-rotation-270-hdmi-a-1-pipe-c:
    - Statuses : 2 pass(s)
    - Exec time: [1.81, 3.13] s

  * igt@kms_rotation_crc@rotation@sprite-rotation-270-hdmi-a-1-pipe-d:
    - Statuses : 1 pass(s)
    - Exec time: [1.85] s

  * igt@kms_rotation_crc@rotation@sprite-rotation-270-hdmi-a-2-pipe-a:
    - Statuses : 1 pass(s)
    - Exec time: [3.06] s

  * igt@kms_rotation_crc@rotation@sprite-rotation-270-hdmi-a-2-pipe-b:
    - Statuses : 1 pass(s)
    - Exec time: [3.09] s

  * igt@kms_rotation_crc@rotation@sprite-rotation-270-hdmi-a-2-pipe-c:
    - Statuses : 1 pass(s)
    - Exec time: [3.06] s

  * igt@kms_rotation_crc@rotation@sprite-rotation-270-vga-1-pipe-a:
    - Statuses : 1 skip(s)
    - Exec time: [0.0] s

  * igt@kms_rotation_crc@rotation@sprite-rotation-270-vga-1-pipe-b:
    - Statuses : 1 skip(s)
    - Exec time: [0.0] s

  * igt@kms_rotation_crc@rotation@sprite-rotation-90-dp-1-pipe-a:
    - Statuses : 2 pass(s)
    - Exec time: [3.25, 3.28] s

  * igt@kms_rotation_crc@rotation@sprite-rotation-90-dp-1-pipe-b:
    - Statuses : 2 pass(s)
    - Exec time: [3.27, 3.31] s

  * igt@kms_rotation_crc@rotation@sprite-rotation-90-dp-1-pipe-c:
    - Statuses : 2 pass(s)
    - Exec time: [2.86, 3.28] s

  * igt@kms_rotation_crc@rotation@sprite-rotation-90-edp-1-pipe-a:
    - Statuses : 2 pass(s)
    - Exec time: [3.29, 4.24] s

  * igt@kms_rotation_crc@rotation@sprite-rotation-90-edp-1-pipe-b:
    - Statuses : 2 pass(s)
    - Exec time: [3.31, 4.28] s

  * igt@kms_rotation_crc@rotation@sprite-rotation-90-edp-1-pipe-c:
    - Statuses : 2 pass(s)
    - Exec time: [3.30, 4.27] s

  * igt@kms_rotation_crc@rotation@sprite-rotation-90-edp-1-pipe-d:
    - Statuses : 1 pass(s)
    - Exec time: [3.32] s

  * igt@kms_rotation_crc@rotation@sprite-rotation-90-hdmi-a-1-pipe-a:
    - Statuses : 2 pass(s)
    - Exec time: [1.84, 3.16] s

  * igt@kms_rotation_crc@rotation@sprite-rotation-90-hdmi-a-1-pipe-b:
    - Statuses : 2 pass(s)
    - Exec time: [1.80, 3.17] s

  * igt@kms_rotation_crc@rotation@sprite-rotation-90-hdmi-a-1-pipe-c:
    - Statuses : 2 pass(s)
    - Exec time: [1.81, 3.02] s

  * igt@kms_rotation_crc@rotation@sprite-rotation-90-hdmi-a-1-pipe-d:
    - Statuses : 1 pass(s)
    - Exec time: [1.81] s

  * igt@kms_rotation_crc@rotation@sprite-rotation-90-hdmi-a-2-pipe-a:
    - Statuses : 1 pass(s)
    - Exec time: [3.11] s

  * igt@kms_rotation_crc@rotation@sprite-rotation-90-hdmi-a-2-pipe-b:
    - Statuses : 1 pass(s)
    - Exec time: [3.07] s

  * igt@kms_rotation_crc@rotation@sprite-rotation-90-hdmi-a-2-pipe-c:
    - Statuses : 1 pass(s)
    - Exec time: [3.07] s

  * igt@kms_rotation_crc@rotation@sprite-rotation-90-vga-1-pipe-a:
    - Statuses : 1 skip(s)
    - Exec time: [0.0] s

  * igt@kms_rotation_crc@rotation@sprite-rotation-90-vga-1-pipe-b:
    - Statuses : 1 skip(s)
    - Exec time: [0.0] s

  * igt@kms_rotation_crc@sprite-rotation-90-pos-100-0@dp-1-pipe-a:
    - Statuses : 1 pass(s)
    - Exec time: [3.13] s

  * igt@kms_rotation_crc@sprite-rotation-90-pos-100-0@dp-1-pipe-b:
    - Statuses : 1 pass(s)
    - Exec time: [3.25] s

  * igt@kms_rotation_crc@sprite-rotation-90-pos-100-0@dp-1-pipe-c:
    - Statuses : 1 pass(s)
    - Exec time: [2.83] s

  * igt@kms_rotation_crc@sprite-rotation-90-pos-100-0@edp-1-pipe-a:
    - Statuses : 2 pass(s)
    - Exec time: [2.17, 3.09] s

  * igt@kms_rotation_crc@sprite-rotation-90-pos-100-0@edp-1-pipe-b:
    - Statuses : 2 pass(s)
    - Exec time: [3.29, 4.25] s

  * igt@kms_rotation_crc@sprite-rotation-90-pos-100-0@edp-1-pipe-c:
    - Statuses : 2 pass(s)
    - Exec time: [3.37, 4.21] s

  * igt@kms_rotation_crc@sprite-rotation-90-pos-100-0@edp-1-pipe-d:
    - Statuses : 1 pass(s)
    - Exec time: [3.31] s

  * igt@kms_rotation_crc@sprite-rotation-90-pos-100-0@hdmi-a-1-pipe-a:
    - Statuses : 3 pass(s)
    - Exec time: [1.55, 3.77] s

  * igt@kms_rotation_crc@sprite-rotation-90-pos-100-0@hdmi-a-1-pipe-b:
    - Statuses : 3 pass(s)
    - Exec time: [1.60, 3.65] s

  * igt@kms_rotation_crc@sprite-rotation-90-pos-100-0@hdmi-a-1-pipe-c:
    - Statuses : 3 pass(s)
    - Exec time: [1.81, 3.50] s

  * igt@kms_rotation_crc@sprite-rotation-90-pos-100-0@hdmi-a-1-pipe-d:
    - Statuses : 2 pass(s)
    - Exec time: [1.80, 3.67] s

  * igt@kms_rotation_crc@sprite-rotation-90-pos-100-0@hdmi-a-2-pipe-a:
    - Statuses : 1 pass(s)
    - Exec time: [3.10] s

  * igt@kms_rotation_crc@sprite-rotation-90-pos-100-0@hdmi-a-2-pipe-b:
    - Statuses : 1 pass(s)
    - Exec time: [3.04] s

  * igt@kms_rotation_crc@sprite-rotation-90-pos-100-0@hdmi-a-2-pipe-c:
    - Statuses : 1 pass(s)
    - Exec time: [3.08] s

  * igt@kms_rotation_crc@sprite-rotation-90-pos-100-0@vga-1-pipe-a:
    - Statuses : 1 skip(s)
    - Exec time: [0.0] s

  * igt@kms_rotation_crc@sprite-rotation-90-pos-100-0@vga-1-pipe-b:
    - Statuses : 1 skip(s)
    - Exec time: [0.0] s

  

Known issues
------------

  Here are the changes found in IGTPW_7370_full that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@gem_ctx_exec@basic-nohangcheck:
    - shard-tglb:         [PASS][17] -> [FAIL][18] ([i915#6268])
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11799/shard-tglb5/igt@gem_ctx_exec@basic-nohangcheck.html
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-tglb7/igt@gem_ctx_exec@basic-nohangcheck.html

  * igt@gem_ctx_isolation@preservation-s3@vecs0:
    - shard-apl:          [PASS][19] -> [DMESG-WARN][20] ([i915#180]) +1 similar issue
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11799/shard-apl7/igt@gem_ctx_isolation@preservation-s3@vecs0.html
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-apl8/igt@gem_ctx_isolation@preservation-s3@vecs0.html

  * igt@gem_ctx_persistence@legacy-engines-mixed:
    - shard-snb:          NOTRUN -> [SKIP][21] ([fdo#109271] / [i915#1099]) +2 similar issues
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-snb5/igt@gem_ctx_persistence@legacy-engines-mixed.html

  * igt@gem_exec_balancer@parallel-contexts:
    - shard-iclb:         [PASS][22] -> [SKIP][23] ([i915#4525])
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11799/shard-iclb2/igt@gem_exec_balancer@parallel-contexts.html
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-iclb7/igt@gem_exec_balancer@parallel-contexts.html

  * igt@gem_exec_fair@basic-none@vcs0:
    - shard-kbl:          [PASS][24] -> [FAIL][25] ([i915#2842])
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11799/shard-kbl4/igt@gem_exec_fair@basic-none@vcs0.html
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-kbl6/igt@gem_exec_fair@basic-none@vcs0.html

  * igt@gem_exec_fair@basic-pace-share@rcs0:
    - shard-glk:          [PASS][26] -> [FAIL][27] ([i915#2842]) +2 similar issues
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11799/shard-glk1/igt@gem_exec_fair@basic-pace-share@rcs0.html
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-glk3/igt@gem_exec_fair@basic-pace-share@rcs0.html
    - shard-tglb:         [PASS][28] -> [FAIL][29] ([i915#2842])
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11799/shard-tglb2/igt@gem_exec_fair@basic-pace-share@rcs0.html
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-tglb3/igt@gem_exec_fair@basic-pace-share@rcs0.html

  * igt@gem_exec_fair@basic-pace-solo@rcs0:
    - shard-apl:          [PASS][30] -> [FAIL][31] ([i915#2842])
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11799/shard-apl8/igt@gem_exec_fair@basic-pace-solo@rcs0.html
   [31]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-apl8/igt@gem_exec_fair@basic-pace-solo@rcs0.html

  * igt@gem_exec_suspend@basic-s4-devices@smem:
    - shard-snb:          NOTRUN -> [INCOMPLETE][32] ([i915#4972])
   [32]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-snb5/igt@gem_exec_suspend@basic-s4-devices@smem.html

  * igt@gem_exec_whisper@basic-queues-priority:
    - shard-glk:          [PASS][33] -> [DMESG-WARN][34] ([i915#118])
   [33]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11799/shard-glk7/igt@gem_exec_whisper@basic-queues-priority.html
   [34]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-glk5/igt@gem_exec_whisper@basic-queues-priority.html

  * igt@gem_huc_copy@huc-copy:
    - shard-tglb:         [PASS][35] -> [SKIP][36] ([i915#2190])
   [35]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11799/shard-tglb5/igt@gem_huc_copy@huc-copy.html
   [36]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-tglb7/igt@gem_huc_copy@huc-copy.html

  * igt@gem_lmem_swapping@parallel-multi:
    - shard-tglb:         NOTRUN -> [SKIP][37] ([i915#4613])
   [37]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-tglb7/igt@gem_lmem_swapping@parallel-multi.html

  * igt@gem_lmem_swapping@verify-ccs:
    - shard-kbl:          NOTRUN -> [SKIP][38] ([fdo#109271] / [i915#4613]) +2 similar issues
   [38]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-kbl7/igt@gem_lmem_swapping@verify-ccs.html

  * igt@gem_pread@exhaustion:
    - shard-apl:          NOTRUN -> [WARN][39] ([i915#2658])
   [39]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-apl3/igt@gem_pread@exhaustion.html
    - shard-kbl:          NOTRUN -> [WARN][40] ([i915#2658])
   [40]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-kbl4/igt@gem_pread@exhaustion.html

  * igt@gem_pxp@create-regular-context-2:
    - shard-tglb:         NOTRUN -> [SKIP][41] ([i915#4270]) +1 similar issue
   [41]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-tglb2/igt@gem_pxp@create-regular-context-2.html

  * igt@gem_pxp@verify-pxp-stale-ctx-execution:
    - shard-iclb:         NOTRUN -> [SKIP][42] ([i915#4270])
   [42]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-iclb8/igt@gem_pxp@verify-pxp-stale-ctx-execution.html

  * igt@gem_render_copy@y-tiled-ccs-to-y-tiled-mc-ccs:
    - shard-glk:          NOTRUN -> [SKIP][43] ([fdo#109271]) +120 similar issues
   [43]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-glk3/igt@gem_render_copy@y-tiled-ccs-to-y-tiled-mc-ccs.html
    - shard-iclb:         NOTRUN -> [SKIP][44] ([i915#768])
   [44]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-iclb2/igt@gem_render_copy@y-tiled-ccs-to-y-tiled-mc-ccs.html

  * igt@gem_userptr_blits@access-control:
    - shard-tglb:         NOTRUN -> [SKIP][45] ([i915#3297])
   [45]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-tglb7/igt@gem_userptr_blits@access-control.html
    - shard-iclb:         NOTRUN -> [SKIP][46] ([i915#3297])
   [46]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-iclb2/igt@gem_userptr_blits@access-control.html

  * igt@gen9_exec_parse@allowed-single:
    - shard-apl:          [PASS][47] -> [DMESG-WARN][48] ([i915#5566] / [i915#716])
   [47]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11799/shard-apl4/igt@gen9_exec_parse@allowed-single.html
   [48]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-apl2/igt@gen9_exec_parse@allowed-single.html

  * igt@gen9_exec_parse@bb-start-out:
    - shard-tglb:         NOTRUN -> [SKIP][49] ([i915#2527] / [i915#2856]) +1 similar issue
   [49]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-tglb2/igt@gen9_exec_parse@bb-start-out.html

  * igt@gen9_exec_parse@unaligned-jump:
    - shard-iclb:         NOTRUN -> [SKIP][50] ([i915#2856])
   [50]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-iclb5/igt@gen9_exec_parse@unaligned-jump.html

  * igt@i915_pm_dc@dc9-dpms:
    - shard-apl:          [PASS][51] -> [SKIP][52] ([fdo#109271])
   [51]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11799/shard-apl8/igt@i915_pm_dc@dc9-dpms.html
   [52]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-apl8/igt@i915_pm_dc@dc9-dpms.html

  * igt@i915_pm_rc6_residency@media-rc6-accuracy:
    - shard-iclb:         NOTRUN -> [SKIP][53] ([fdo#109289])
   [53]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-iclb5/igt@i915_pm_rc6_residency@media-rc6-accuracy.html

  * igt@i915_pm_rpm@pc8-residency:
    - shard-tglb:         NOTRUN -> [SKIP][54] ([fdo#109506] / [i915#2411])
   [54]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-tglb5/igt@i915_pm_rpm@pc8-residency.html

  * igt@i915_selftest@live@hangcheck:
    - shard-tglb:         [PASS][55] -> [DMESG-WARN][56] ([i915#5591])
   [55]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11799/shard-tglb6/igt@i915_selftest@live@hangcheck.html
   [56]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-tglb5/igt@i915_selftest@live@hangcheck.html

  * igt@kms_addfb_basic@invalid-smem-bo-on-discrete:
    - shard-tglb:         NOTRUN -> [SKIP][57] ([i915#3826])
   [57]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-tglb5/igt@kms_addfb_basic@invalid-smem-bo-on-discrete.html
    - shard-iclb:         NOTRUN -> [SKIP][58] ([i915#3826])
   [58]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-iclb7/igt@kms_addfb_basic@invalid-smem-bo-on-discrete.html

  * igt@kms_big_fb@yf-tiled-32bpp-rotate-270:
    - shard-tglb:         NOTRUN -> [SKIP][59] ([fdo#111615]) +1 similar issue
   [59]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-tglb3/igt@kms_big_fb@yf-tiled-32bpp-rotate-270.html

  * igt@kms_ccs@pipe-a-bad-rotation-90-4_tiled_dg2_rc_ccs:
    - shard-tglb:         NOTRUN -> [SKIP][60] ([i915#3689] / [i915#6095]) +1 similar issue
   [60]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-tglb1/igt@kms_ccs@pipe-a-bad-rotation-90-4_tiled_dg2_rc_ccs.html

  * igt@kms_ccs@pipe-b-crc-sprite-planes-basic-4_tiled_dg2_mc_ccs:
    - shard-tglb:         NOTRUN -> [SKIP][61] ([i915#6095])
   [61]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-tglb1/igt@kms_ccs@pipe-b-crc-sprite-planes-basic-4_tiled_dg2_mc_ccs.html

  * igt@kms_ccs@pipe-c-bad-rotation-90-y_tiled_gen12_rc_ccs_cc:
    - shard-kbl:          NOTRUN -> [SKIP][62] ([fdo#109271] / [i915#3886]) +6 similar issues
   [62]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-kbl6/igt@kms_ccs@pipe-c-bad-rotation-90-y_tiled_gen12_rc_ccs_cc.html

  * igt@kms_ccs@pipe-c-ccs-on-another-bo-y_tiled_gen12_mc_ccs:
    - shard-apl:          NOTRUN -> [SKIP][63] ([fdo#109271] / [i915#3886])
   [63]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-apl1/igt@kms_ccs@pipe-c-ccs-on-another-bo-y_tiled_gen12_mc_ccs.html
    - shard-tglb:         NOTRUN -> [SKIP][64] ([i915#3689] / [i915#3886]) +2 similar issues
   [64]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-tglb2/igt@kms_ccs@pipe-c-ccs-on-another-bo-y_tiled_gen12_mc_ccs.html
    - shard-glk:          NOTRUN -> [SKIP][65] ([fdo#109271] / [i915#3886])
   [65]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-glk8/igt@kms_ccs@pipe-c-ccs-on-another-bo-y_tiled_gen12_mc_ccs.html
    - shard-iclb:         NOTRUN -> [SKIP][66] ([fdo#109278] / [i915#3886])
   [66]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-iclb2/igt@kms_ccs@pipe-c-ccs-on-another-bo-y_tiled_gen12_mc_ccs.html

  * igt@kms_ccs@pipe-c-crc-primary-basic-yf_tiled_ccs:
    - shard-tglb:         NOTRUN -> [SKIP][67] ([fdo#111615] / [i915#3689]) +1 similar issue
   [67]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-tglb1/igt@kms_ccs@pipe-c-crc-primary-basic-yf_tiled_ccs.html

  * igt@kms_ccs@pipe-d-crc-sprite-planes-basic-y_tiled_gen12_mc_ccs:
    - shard-tglb:         NOTRUN -> [SKIP][68] ([i915#3689]) +2 similar issues
   [68]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-tglb5/igt@kms_ccs@pipe-d-crc-sprite-planes-basic-y_tiled_gen12_mc_ccs.html

  * igt@kms_chamelium@dp-hpd-for-each-pipe:
    - shard-glk:          NOTRUN -> [SKIP][69] ([fdo#109271] / [fdo#111827]) +5 similar issues
   [69]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-glk7/igt@kms_chamelium@dp-hpd-for-each-pipe.html

  * igt@kms_chamelium@hdmi-crc-nonplanar-formats:
    - shard-apl:          NOTRUN -> [SKIP][70] ([fdo#109271] / [fdo#111827]) +6 similar issues
   [70]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-apl2/igt@kms_chamelium@hdmi-crc-nonplanar-formats.html

  * igt@kms_color@pipe-a-deep-color:
    - shard-iclb:         NOTRUN -> [SKIP][71] ([fdo#109278] / [i915#3555])
   [71]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-iclb7/igt@kms_color@pipe-a-deep-color.html

  * igt@kms_color@pipe-b-deep-color:
    - shard-kbl:          NOTRUN -> [SKIP][72] ([fdo#109271]) +205 similar issues
   [72]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-kbl7/igt@kms_color@pipe-b-deep-color.html

  * igt@kms_color@pipe-d-ctm-0-5:
    - shard-iclb:         NOTRUN -> [SKIP][73] ([fdo#109278] / [i915#1149])
   [73]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-iclb8/igt@kms_color@pipe-d-ctm-0-5.html

  * igt@kms_color_chamelium@pipe-a-degamma:
    - shard-snb:          NOTRUN -> [SKIP][74] ([fdo#109271] / [fdo#111827]) +5 similar issues
   [74]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-snb7/igt@kms_color_chamelium@pipe-a-degamma.html

  * igt@kms_color_chamelium@pipe-a-gamma:
    - shard-kbl:          NOTRUN -> [SKIP][75] ([fdo#109271] / [fdo#111827]) +16 similar issues
   [75]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-kbl4/igt@kms_color_chamelium@pipe-a-gamma.html

  * igt@kms_color_chamelium@pipe-b-ctm-0-5:
    - shard-iclb:         NOTRUN -> [SKIP][76] ([fdo#109284] / [fdo#111827]) +4 similar issues
   [76]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-iclb3/igt@kms_color_chamelium@pipe-b-ctm-0-5.html

  * igt@kms_color_chamelium@pipe-d-ctm-max:
    - shard-tglb:         NOTRUN -> [SKIP][77] ([fdo#109284] / [fdo#111827]) +6 similar issues
   [77]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-tglb1/igt@kms_color_chamelium@pipe-d-ctm-max.html

  * igt@kms_color_chamelium@pipe-d-degamma:
    - shard-iclb:         NOTRUN -> [SKIP][78] ([fdo#109278] / [fdo#109284] / [fdo#111827])
   [78]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-iclb2/igt@kms_color_chamelium@pipe-d-degamma.html

  * igt@kms_cursor_crc@cursor-random@pipe-c-edp-1-512x170:
    - shard-tglb:         NOTRUN -> [SKIP][79] ([i915#3359]) +7 similar issues
   [79]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-tglb3/igt@kms_cursor_crc@cursor-random@pipe-c-edp-1-512x170.html

  * {igt@kms_cursor_crc@cursor-sliding@pipe-d-hdmi-a-1-512x512} (NEW):
    - {shard-tglu}:       NOTRUN -> [SKIP][80] ([i915#3359]) +1 similar issue
   [80]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-tglu-3/igt@kms_cursor_crc@cursor-sliding@pipe-d-hdmi-a-1-512x512.html

  * igt@kms_flip@2x-dpms-vs-vblank-race:
    - shard-iclb:         NOTRUN -> [SKIP][81] ([fdo#109274]) +1 similar issue
   [81]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-iclb6/igt@kms_flip@2x-dpms-vs-vblank-race.html

  * igt@kms_flip@2x-flip-vs-dpms-off-vs-modeset-interruptible:
    - shard-tglb:         NOTRUN -> [SKIP][82] ([fdo#109274] / [fdo#111825]) +2 similar issues
   [82]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-tglb7/igt@kms_flip@2x-flip-vs-dpms-off-vs-modeset-interruptible.html

  * igt@kms_flip@flip-vs-suspend@a-dp1:
    - shard-kbl:          NOTRUN -> [DMESG-WARN][83] ([i915#180]) +3 similar issues
   [83]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-kbl6/igt@kms_flip@flip-vs-suspend@a-dp1.html

  * igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-downscaling:
    - shard-tglb:         NOTRUN -> [SKIP][84] ([i915#2587])
   [84]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-tglb5/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-downscaling.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-rte:
    - shard-iclb:         NOTRUN -> [SKIP][85] ([fdo#109280]) +7 similar issues
   [85]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-iclb1/igt@kms_frontbuffer_tracking@fbcpsr-2p-rte.html

  * igt@kms_frontbuffer_tracking@psr-2p-primscrn-pri-shrfb-draw-blt:
    - shard-tglb:         NOTRUN -> [SKIP][86] ([fdo#109280] / [fdo#111825]) +10 similar issues
   [86]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-tglb6/igt@kms_frontbuffer_tracking@psr-2p-primscrn-pri-shrfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@psr-2p-primscrn-pri-shrfb-draw-mmap-cpu:
    - shard-snb:          NOTRUN -> [SKIP][87] ([fdo#109271]) +113 similar issues
   [87]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-snb7/igt@kms_frontbuffer_tracking@psr-2p-primscrn-pri-shrfb-draw-mmap-cpu.html

  * igt@kms_hdr@bpc-switch-dpms:
    - shard-tglb:         NOTRUN -> [SKIP][88] ([i915#3555]) +1 similar issue
   [88]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-tglb5/igt@kms_hdr@bpc-switch-dpms.html
    - shard-iclb:         NOTRUN -> [SKIP][89] ([i915#3555])
   [89]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-iclb3/igt@kms_hdr@bpc-switch-dpms.html

  * igt@kms_hdr@bpc-switch-suspend@pipe-a-dp-1:
    - shard-kbl:          NOTRUN -> [DMESG-FAIL][90] ([i915#180])
   [90]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-kbl6/igt@kms_hdr@bpc-switch-suspend@pipe-a-dp-1.html

  * igt@kms_plane_alpha_blend@pipe-c-alpha-transparent-fb:
    - shard-apl:          NOTRUN -> [FAIL][91] ([i915#265])
   [91]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-apl2/igt@kms_plane_alpha_blend@pipe-c-alpha-transparent-fb.html
    - shard-glk:          NOTRUN -> [FAIL][92] ([i915#265])
   [92]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-glk1/igt@kms_plane_alpha_blend@pipe-c-alpha-transparent-fb.html
    - shard-kbl:          NOTRUN -> [FAIL][93] ([i915#265])
   [93]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-kbl1/igt@kms_plane_alpha_blend@pipe-c-alpha-transparent-fb.html

  * igt@kms_plane_scaling@plane-upscale-with-rotation-factor-0-25@pipe-c-edp-1:
    - shard-tglb:         NOTRUN -> [SKIP][94] ([i915#5176]) +7 similar issues
   [94]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-tglb2/igt@kms_plane_scaling@plane-upscale-with-rotation-factor-0-25@pipe-c-edp-1.html
    - shard-iclb:         NOTRUN -> [SKIP][95] ([i915#5176]) +2 similar issues
   [95]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-iclb4/igt@kms_plane_scaling@plane-upscale-with-rotation-factor-0-25@pipe-c-edp-1.html

  * igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-25@pipe-b-dp-1:
    - shard-apl:          NOTRUN -> [SKIP][96] ([fdo#109271]) +103 similar issues
   [96]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-apl2/igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-25@pipe-b-dp-1.html

  * igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-25@pipe-b-edp-1:
    - shard-iclb:         NOTRUN -> [SKIP][97] ([i915#5235]) +2 similar issues
   [97]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-iclb4/igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-25@pipe-b-edp-1.html

  * igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-25@pipe-c-edp-1:
    - shard-tglb:         NOTRUN -> [SKIP][98] ([i915#5235]) +3 similar issues
   [98]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-tglb5/igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-25@pipe-c-edp-1.html

  * igt@kms_psr2_sf@overlay-plane-move-continuous-sf:
    - shard-apl:          NOTRUN -> [SKIP][99] ([fdo#109271] / [i915#658]) +1 similar issue
   [99]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-apl2/igt@kms_psr2_sf@overlay-plane-move-continuous-sf.html
    - shard-tglb:         NOTRUN -> [SKIP][100] ([i915#2920])
   [100]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-tglb6/igt@kms_psr2_sf@overlay-plane-move-continuous-sf.html
    - shard-glk:          NOTRUN -> [SKIP][101] ([fdo#109271] / [i915#658])
   [101]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-glk1/igt@kms_psr2_sf@overlay-plane-move-continuous-sf.html
    - shard-iclb:         NOTRUN -> [SKIP][102] ([i915#658])
   [102]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-iclb1/igt@kms_psr2_sf@overlay-plane-move-continuous-sf.html
    - shard-kbl:          NOTRUN -> [SKIP][103] ([fdo#109271] / [i915#658]) +1 similar issue
   [103]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-kbl1/igt@kms_psr2_sf@overlay-plane-move-continuous-sf.html

  * igt@kms_psr2_su@frontbuffer-xrgb8888:
    - shard-iclb:         [PASS][104] -> [SKIP][105] ([fdo#109642] / [fdo#111068] / [i915#658])
   [104]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11799/shard-iclb2/igt@kms_psr2_su@frontbuffer-xrgb8888.html
   [105]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-iclb6/igt@kms_psr2_su@frontbuffer-xrgb8888.html

  * igt@kms_psr@psr2_cursor_plane_onoff:
    - shard-iclb:         [PASS][106] -> [SKIP][107] ([fdo#109441])
   [106]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11799/shard-iclb2/igt@kms_psr@psr2_cursor_plane_onoff.html
   [107]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-iclb7/igt@kms_psr@psr2_cursor_plane_onoff.html

  * igt@kms_psr@psr2_sprite_plane_onoff:
    - shard-tglb:         NOTRUN -> [FAIL][108] ([i915#132] / [i915#3467])
   [108]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-tglb3/igt@kms_psr@psr2_sprite_plane_onoff.html
    - shard-iclb:         NOTRUN -> [SKIP][109] ([fdo#109441])
   [109]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-iclb5/igt@kms_psr@psr2_sprite_plane_onoff.html

  * igt@kms_psr_stress_test@flip-primary-invalidate-overlay:
    - shard-iclb:         [PASS][110] -> [SKIP][111] ([i915#5519])
   [110]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11799/shard-iclb7/igt@kms_psr_stress_test@flip-primary-invalidate-overlay.html
   [111]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-iclb4/igt@kms_psr_stress_test@flip-primary-invalidate-overlay.html

  * igt@kms_vblank@pipe-d-wait-forked:
    - shard-iclb:         NOTRUN -> [SKIP][112] ([fdo#109278]) +13 similar issues
   [112]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-iclb3/igt@kms_vblank@pipe-d-wait-forked.html

  * igt@kms_writeback@writeback-check-output:
    - shard-apl:          NOTRUN -> [SKIP][113] ([fdo#109271] / [i915#2437])
   [113]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-apl1/igt@kms_writeback@writeback-check-output.html
    - shard-kbl:          NOTRUN -> [SKIP][114] ([fdo#109271] / [i915#2437]) +1 similar issue
   [114]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-kbl7/igt@kms_writeback@writeback-check-output.html

  * igt@perf@mi-rpc:
    - shard-tglb:         NOTRUN -> [SKIP][115] ([fdo#109289])
   [115]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-tglb5/igt@perf@mi-rpc.html

  * igt@prime_nv_pcopy@test1_micro:
    - shard-tglb:         NOTRUN -> [SKIP][116] ([fdo#109291]) +2 similar issues
   [116]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-tglb3/igt@prime_nv_pcopy@test1_micro.html

  * igt@prime_nv_test@nv_write_i915_gtt_mmap_read:
    - shard-iclb:         NOTRUN -> [SKIP][117] ([fdo#109291]) +1 similar issue
   [117]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-iclb2/igt@prime_nv_test@nv_write_i915_gtt_mmap_read.html

  * igt@sysfs_clients@fair-7:
    - shard-apl:          NOTRUN -> [SKIP][118] ([fdo#109271] / [i915#2994])
   [118]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-apl2/igt@sysfs_clients@fair-7.html

  * igt@sysfs_clients@split-25:
    - shard-kbl:          NOTRUN -> [SKIP][119] ([fdo#109271] / [i915#2994]) +3 similar issues
   [119]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-kbl6/igt@sysfs_clients@split-25.html

  
#### Possible fixes ####

  * igt@fbdev@info:
    - {shard-rkl}:        [SKIP][120] ([i915#2582]) -> [PASS][121]
   [120]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11799/shard-rkl-5/igt@fbdev@info.html
   [121]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-rkl-6/igt@fbdev@info.html

  * igt@gem_ctx_isolation@preservation-s3@bcs0:
    - shard-kbl:          [DMESG-WARN][122] ([i915#180]) -> [PASS][123] +4 similar issues
   [122]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11799/shard-kbl6/igt@gem_ctx_isolation@preservation-s3@bcs0.html
   [123]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-kbl4/igt@gem_ctx_isolation@preservation-s3@bcs0.html

  * igt@gem_exec_balancer@fairslice:
    - {shard-rkl}:        [SKIP][124] ([i915#6259]) -> [PASS][125]
   [124]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11799/shard-rkl-5/igt@gem_exec_balancer@fairslice.html
   [125]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-rkl-2/igt@gem_exec_balancer@fairslice.html

  * igt@gem_exec_balancer@parallel-out-fence:
    - shard-iclb:         [SKIP][126] ([i915#4525]) -> [PASS][127] +2 similar issues
   [126]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11799/shard-iclb7/igt@gem_exec_balancer@parallel-out-fence.html
   [127]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-iclb2/igt@gem_exec_balancer@parallel-out-fence.html

  * igt@gem_exec_fair@basic-flow@rcs0:
    - {shard-tglu}:       [FAIL][128] ([i915#2842]) -> [PASS][129]
   [128]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11799/shard-tglu-1/igt@gem_exec_fair@basic-flow@rcs0.html
   [129]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-tglu-8/igt@gem_exec_fair@basic-flow@rcs0.html

  * igt@gem_exec_fair@basic-none@vcs1:
    - shard-kbl:          [FAIL][130] ([i915#2842]) -> [PASS][131]
   [130]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11799/shard-kbl4/igt@gem_exec_fair@basic-none@vcs1.html
   [131]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-kbl6/igt@gem_exec_fair@basic-none@vcs1.html

  * igt@gem_exec_fair@basic-throttle@rcs0:
    - shard-iclb:         [FAIL][132] ([i915#2849]) -> [PASS][133]
   [132]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11799/shard-iclb7/igt@gem_exec_fair@basic-throttle@rcs0.html
   [133]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-iclb3/igt@gem_exec_fair@basic-throttle@rcs0.html

  * igt@gem_exec_fence@basic-wait@bcs0:
    - {shard-rkl}:        [SKIP][134] ([i915#6251]) -> [PASS][135]
   [134]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11799/shard-rkl-5/igt@gem_exec_fence@basic-wait@bcs0.html
   [135]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-rkl-1/igt@gem_exec_fence@basic-wait@bcs0.html

  * igt@gem_exec_reloc@basic-write-read-active:
    - {shard-rkl}:        [SKIP][136] ([i915#3281]) -> [PASS][137] +5 similar issues
   [136]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11799/shard-rkl-6/igt@gem_exec_reloc@basic-write-read-active.html
   [137]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-rkl-5/igt@gem_exec_reloc@basic-write-read-active.html

  * igt@gem_lmem_swapping@smem-oom@lmem0:
    - {shard-dg1}:        [DMESG-WARN][138] ([i915#4936]) -> [PASS][139]
   [138]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11799/shard-dg1-16/igt@gem_lmem_swapping@smem-oom@lmem0.html
   [139]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-dg1-17/igt@gem_lmem_swapping@smem-oom@lmem0.html

  * igt@gem_readwrite@beyond-eob:
    - {shard-rkl}:        [SKIP][140] ([i915#3282]) -> [PASS][141] +2 similar issues
   [140]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11799/shard-rkl-1/igt@gem_readwrite@beyond-eob.html
   [141]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-rkl-5/igt@gem_readwrite@beyond-eob.html

  * igt@gen9_exec_parse@bb-large:
    - {shard-rkl}:        [SKIP][142] ([i915#2527]) -> [PASS][143]
   [142]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11799/shard-rkl-2/igt@gen9_exec_parse@bb-large.html
   [143]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-rkl-5/igt@gen9_exec_parse@bb-large.html

  * igt@i915_hangman@gt-engine-error@bcs0:
    - {shard-rkl}:        [SKIP][144] ([i915#6258]) -> [PASS][145]
   [144]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11799/shard-rkl-5/igt@i915_hangman@gt-engine-error@bcs0.html
   [145]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-rkl-2/igt@i915_hangman@gt-engine-error@bcs0.html

  * igt@i915_pm_dc@dc6-psr:
    - shard-iclb:         [FAIL][146] ([i915#454]) -> [PASS][147]
   [146]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11799/shard-iclb8/igt@i915_pm_dc@dc6-psr.html
   [147]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-iclb1/igt@i915_pm_dc@dc6-psr.html

  * igt@i915_pm_lpsp@kms-lpsp@kms-lpsp-hdmi-a:
    - {shard-dg1}:        [SKIP][148] ([i915#1937]) -> [PASS][149]
   [148]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11799/shard-dg1-18/igt@i915_pm_lpsp@kms-lpsp@kms-lpsp-hdmi-a.html
   [149]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-dg1-15/igt@i915_pm_lpsp@kms-lpsp@kms-lpsp-hdmi-a.html

  * igt@i915_pm_rpm@i2c:
    - {shard-rkl}:        [SKIP][150] ([fdo#109308]) -> [PASS][151] +1 similar issue
   [150]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11799/shard-rkl-1/igt@i915_pm_rpm@i2c.html
   [151]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-rkl-6/igt@i915_pm_rpm@i2c.html

  * igt@kms_ccs@pipe-b-crc-primary-basic-y_tiled_gen12_rc_ccs_cc:
    - {shard-rkl}:        [SKIP][152] ([i915#1845] / [i915#4098]) -> [PASS][153] +21 similar issues
   [152]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11799/shard-rkl-2/igt@kms_ccs@pipe-b-crc-primary-basic-y_tiled_gen12_rc_ccs_cc.html
   [153]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-rkl-6/igt@kms_ccs@pipe-b-crc-primary-basic-y_tiled_gen12_rc_ccs_cc.html

  * igt@kms_color@pipe-a-ctm-red-to-blue:
    - {shard-rkl}:        [SKIP][154] ([i915#1149] / [i915#1849] / [i915#4070] / [i915#4098]) -> [PASS][155] +1 similar issue
   [154]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11799/shard-rkl-2/igt@kms_color@pipe-a-ctm-red-to-blue.html
   [155]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-rkl-6/igt@kms_color@pipe-a-ctm-red-to-blue.html

  * igt@kms_color@pipe-b-degamma:
    - {shard-rkl}:        [SKIP][156] ([i915#1149] / [i915#1849] / [i915#4098]) -> [PASS][157] +1 similar issue
   [156]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11799/shard-rkl-5/igt@kms_color@pipe-b-degamma.html
   [157]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-rkl-6/igt@kms_color@pipe-b-degamma.html

  * igt@kms_cursor_crc@cursor-random@pipe-a-edp-1-64x21:
    - shard-tglb:         [INCOMPLETE][158] -> [PASS][159]
   [158]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11799/shard-tglb6/igt@kms_cursor_crc@cursor-random@pipe-a-edp-1-64x21.html
   [159]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-tglb3/igt@kms_cursor_crc@cursor-random@pipe-a-edp-1-64x21.html

  * igt@kms_cursor_legacy@flip-vs-cursor@atomic-transitions-varying-size:
    - shard-glk:          [FAIL][160] ([i915#2346]) -> [PASS][161]
   [160]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11799/shard-glk5/igt@kms_cursor_legacy@flip-vs-cursor@atomic-transitions-varying-size.html
   [161]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-glk9/igt@kms_cursor_legacy@flip-vs-cursor@atomic-transitions-varying-size.html

  * igt@kms_dither@fb-8bpc-vs-panel-8bpc@pipe-a-hdmi-a-1:
    - shard-glk:          [SKIP][162] ([fdo#109271]) -> [PASS][163]
   [162]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11799/shard-glk8/igt@kms_dither@fb-8bpc-vs-panel-8bpc@pipe-a-hdmi-a-1.html
   [163]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-glk6/igt@kms_dither@fb-8bpc-vs-panel-8bpc@pipe-a-hdmi-a-1.html

  * igt@kms_draw_crc@draw-method-xrgb2101010-render-ytiled:
    - {shard-rkl}:        [SKIP][164] ([fdo#111314] / [i915#4098] / [i915#4369]) -> [PASS][165] +6 similar issues
   [164]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11799/shard-rkl-2/igt@kms_draw_crc@draw-method-xrgb2101010-render-ytiled.html
   [165]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-rkl-6/igt@kms_draw_crc@draw-method-xrgb2101010-render-ytiled.html

  * igt@kms_fbcon_fbt@psr:
    - {shard-rkl}:        [SKIP][166] ([fdo#110189] / [i915#3955]) -> [PASS][167]
   [166]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11799/shard-rkl-1/igt@kms_fbcon_fbt@psr.html
   [167]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-rkl-6/igt@kms_fbcon_fbt@psr.html

  * igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-downscaling:
    - shard-iclb:         [SKIP][168] ([i915#3701]) -> [PASS][169]
   [168]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11799/shard-iclb2/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-downscaling.html
   [169]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-iclb4/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-downscaling.html

  * igt@kms_frontbuffer_tracking@fbc-rgb101010-draw-pwrite:
    - {shard-rkl}:        [SKIP][170] ([i915#1849] / [i915#4098]) -> [PASS][171] +23 similar issues
   [170]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11799/shard-rkl-1/igt@kms_frontbuffer_tracking@fbc-rgb101010-draw-pwrite.html
   [171]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-rkl-6/igt@kms_frontbuffer_tracking@fbc-rgb101010-draw-pwrite.html

  * igt@kms_hdr@bpc-switch@pipe-a-dp-1:
    - shard-kbl:          [FAIL][172] ([i915#1188]) -> [PASS][173]
   [172]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11799/shard-kbl7/igt@kms_hdr@bpc-switch@pipe-a-dp-1.html
   [173]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-kbl4/igt@kms_hdr@bpc-switch@pipe-a-dp-1.html

  * igt@kms_invalid_mode@bad-hsync-start:
    - {shard-rkl}:        [SKIP][174] ([i915#4278]) -> [PASS][175]
   [174]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11799/shard-rkl-1/igt@kms_invalid_mode@bad-hsync-start.html
   [175]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-rkl-6/igt@kms_invalid_mode@bad-hsync-start.html

  * igt@kms_plane@plane-position-hole@pipe-b-planes:
    - {shard-rkl}:        [SKIP][176] ([i915#3558]) -> [PASS][177] +1 similar issue
   [176]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11799/shard-rkl-1/igt@kms_plane@plane-position-hole@pipe-b-planes.html
   [177]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-rkl-6/igt@kms_plane@plane-position-hole@pipe-b-planes.html

  * igt@kms_plane_alpha_blend@pipe-b-alpha-basic:
    - {shard-rkl}:        [SKIP][178] ([i915#1849] / [i915#4070] / [i915#4098]) -> [PASS][179]
   [178]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11799/shard-rkl-1/igt@kms_plane_alpha_blend@pipe-b-alpha-basic.html
   [179]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-rkl-6/igt@kms_plane_alpha_blend@pipe-b-alpha-basic.html

  * igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-pixel-formats@pipe-b-edp-1:
    - shard-iclb:         [SKIP][180] ([i915#5176]) -> [PASS][181] +1 similar issue
   [180]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11799/shard-iclb3/igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-pixel-formats@pipe-b-edp-1.html
   [181]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-iclb4/igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-pixel-formats@pipe-b-edp-1.html

  * igt@kms_psr@primary_render:
    - {shard-rkl}:        [SKIP][182] ([i915#1072]) -> [PASS][183]
   [182]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11799/shard-rkl-5/igt@kms_psr@primary_render.html
   [183]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-rkl-6/igt@kms_psr@primary_render.html

  * igt@kms_psr@psr2_sprite_blt:
    - shard-iclb:         [SKIP][184] ([fdo#109441]) -> [PASS][185] +1 similar issue
   [184]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11799/shard-iclb4/igt@kms_psr@psr2_sprite_blt.html
   [185]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-iclb2/igt@kms_psr@psr2_sprite_blt.html

  * igt@kms_universal_plane@universal-plane-gen9-features-pipe-a:
    - {shard-rkl}:        [SKIP][186] ([i915#1845] / [i915#4070] / [i915#4098]) -> [PASS][187] +1 similar issue
   [186]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11799/shard-rkl-1/igt@kms_universal_plane@universal-plane-gen9-features-pipe-a.html
   [187]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-rkl-6/igt@kms_universal_plane@universal-plane-gen9-features-pipe-a.html

  * igt@perf@gen12-mi-rpc:
    - {shard-rkl}:        [SKIP][188] ([fdo#109289]) -> [PASS][189] +1 similar issue
   [188]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11799/shard-rkl-5/igt@perf@gen12-mi-rpc.html
   [189]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-rkl-2/igt@perf@gen12-mi-rpc.html

  * igt@perf_pmu@all-busy-idle-check-all:
    - {shard-dg1}:        [FAIL][190] ([i915#5234]) -> [PASS][191]
   [190]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11799/shard-dg1-19/igt@perf_pmu@all-busy-idle-check-all.html
   [191]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-dg1-19/igt@perf_pmu@all-busy-idle-check-all.html

  * igt@prime_vgem@basic-fence-read:
    - {shard-rkl}:        [SKIP][192] ([fdo#109295] / [i915#3291] / [i915#3708]) -> [PASS][193]
   [192]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11799/shard-rkl-1/igt@prime_vgem@basic-fence-read.html
   [193]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-rkl-5/igt@prime_vgem@basic-fence-read.html

  * igt@prime_vgem@coherency-gtt:
    - {shard-rkl}:        [SKIP][194] ([fdo#109295] / [fdo#111656] / [i915#3708]) -> [PASS][195]
   [194]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11799/shard-rkl-1/igt@prime_vgem@coherency-gtt.html
   [195]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-rkl-5/igt@prime_vgem@coherency-gtt.html

  * igt@sysfs_heartbeat_interval@precise@rcs0:
    - {shard-dg1}:        [FAIL][196] ([i915#1755]) -> [PASS][197] +6 similar issues
   [196]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11799/shard-dg1-17/igt@sysfs_heartbeat_interval@precise@rcs0.html
   [197]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-dg1-18/igt@sysfs_heartbeat_interval@precise@rcs0.html

  
#### Warnings ####

  * igt@gem_exec_balancer@parallel-ordering:
    - shard-iclb:         [FAIL][198] ([i915#6117]) -> [SKIP][199] ([i915#4525])
   [198]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11799/shard-iclb4/igt@gem_exec_balancer@parallel-ordering.html
   [199]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-iclb5/igt@gem_exec_balancer@parallel-ordering.html

  * igt@kms_psr2_sf@plane-move-sf-dmg-area:
    - shard-iclb:         [SKIP][200] ([fdo#111068] / [i915#658]) -> [SKIP][201] ([i915#2920])
   [200]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11799/shard-iclb7/igt@kms_psr2_sf@plane-move-sf-dmg-area.html
   [201]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-iclb2/igt@kms_psr2_sf@plane-move-sf-dmg-area.html

  * igt@runner@aborted:
    - shard-apl:          ([FAIL][202], [FAIL][203], [FAIL][204], [FAIL][205]) ([i915#180] / [i915#3002] / [i915#4312] / [i915#5257]) -> ([FAIL][206], [FAIL][207], [FAIL][208], [FAIL][209]) ([fdo#109271] / [i915#180] / [i915#3002] / [i915#4312] / [i915#5257])
   [202]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11799/shard-apl8/igt@runner@aborted.html
   [203]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11799/shard-apl7/igt@runner@aborted.html
   [204]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11799/shard-apl1/igt@runner@aborted.html
   [205]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11799/shard-apl1/igt@runner@aborted.html
   [206]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-apl8/igt@runner@aborted.html
   [207]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-apl7/igt@runner@aborted.html
   [208]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-apl2/igt@runner@aborted.html
   [209]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/shard-apl1/igt@runner@aborted.html

  
  {name}: This element is suppressed. This means it is ignored when computing
          the status of the difference (SUCCESS, WARNING, or FAILURE).

  [IGT#2]: https://gitlab.freedesktop.org/drm/igt-gpu-tools/issues/2
  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [fdo#109274]: https://bugs.freedesktop.org/show_bug.cgi?id=109274
  [fdo#109278]: https://bugs.freedesktop.org/show_bug.cgi?id=109278
  [fdo#109280]: https://bugs.freedesktop.org/show_bug.cgi?id=109280
  [fdo#109283]: https://bugs.freedesktop.org/show_bug.cgi?id=109283
  [fdo#109284]: https://bugs.freedesktop.org/show_bug.cgi?id=109284
  [fdo#109285]: https://bugs.freedesktop.org/show_bug.cgi?id=109285
  [fdo#109289]: https://bugs.freedesktop.org/show_bug.cgi?id=109289
  [fdo#109291]: https://bugs.freedesktop.org/show_bug.cgi?id=109291
  [fdo#109295]: https://bugs.freedesktop.org/show_bug.cgi?id=109295
  [fdo#109300]: https://bugs.freedesktop.org/show_bug.cgi?id=109300
  [fdo#109303]: https://bugs.freedesktop.org/show_bug.cgi?id=109303
  [fdo#109307]: https://bugs.freedesktop.org/show_bug.cgi?id=109307
  [fdo#109308]: https://bugs.freedesktop.org/show_bug.cgi?id=109308
  [fdo#109312]: https://bugs.freedesktop.org/show_bug.cgi?id=109312
  [fdo#109441]: https://bugs.freedesktop.org/show_bug.cgi?id=109441
  [fdo#109506]: https://bugs.freedesktop.org/show_bug.cgi?id=109506
  [fdo#109642]: https://bugs.freedesktop.org/show_bug.cgi?id=109642
  [fdo#110189]: https://bugs.freedesktop.org/show_bug.cgi?id=110189
  [fdo#110254]: https://bugs.freedesktop.org/show_bug.cgi?id=110254
  [fdo#110542]: https://bugs.freedesktop.org/show_bug.cgi?id=110542
  [fdo#110723]: https://bugs.freedesktop.org/show_bug.cgi?id=110723
  [fdo#111068]: https://bugs.freedesktop.org/show_bug.cgi?id=111068
  [fdo#111314]: https://bugs.freedesktop.org/show_bug.cgi?id=111314
  [fdo#111614]: https://bugs.freedesktop.org/show_bug.cgi?id=111614
  [fdo#111615]: https://bugs.freedesktop.org/show_bug.cgi?id=111615
  [fdo#111644]: https://bugs.freedesktop.org/show_bug.cgi?id=111644
  [fdo#111656]: https://bugs.freedesktop.org/show_bug.cgi?id=111656
  [fdo#111825]: https://bugs.freedesktop.org/show_bug.cgi?id=111825
  [fdo#111827]: https://bugs.freedesktop.org/show_bug.cgi?id=111827
  [fdo#112054]: https://bugs.freedesktop.org/show_bug.cgi?id=112054
  [fdo#112283]: https://bugs.freedesktop.org/show_bug.cgi?id=112283
  [i915#1063]: https://gitlab.freedesktop.org/drm/intel/issues/1063
  [i915#1072]: https://gitlab.freedesktop.org/drm/intel/issues/1072
  [i915#1099]: https://gitlab.freedesktop.org/drm/intel/issues/1099
  [i915#1149]: https://gitlab.freedesktop.org/drm/intel/issues/1149
  [i915#118]: https://gitlab.freedesktop.org/drm/intel/issues/118
  [i915#1188]: https://gitlab.freedesktop.org/drm/intel/issues/1188
  [i915#132]: https://gitlab.freedesktop.org/drm/intel/issues/132
  [i915#1397]: https://gitlab.freedesktop.org/drm/intel/issues/1397
  [i915#1755]: https://gitlab.freedesktop.org/drm/intel/issues/1755
  [i915#1769]: https://gitlab.freedesktop.org/drm/intel/issues/1769
  [i915#180]: https://gitlab.freedesktop.org/drm/intel/issues/180
  [i915#1825]: https://gitlab.freedesktop.org/drm/intel/issues/1825
  [i915#1839]: https://gitlab.freedesktop.org/drm/intel/issues/1839
  [i915#1845]: https://gitlab.freedesktop.org/drm/intel/issues/1845
  [i915#1849]: https://gitlab.freedesktop.org/drm/intel/issues/1849
  [i915#1911]: https://gitlab.freedesktop.org/drm/intel/issues/1911
  [i915#1937]: https://gitlab.freedesktop.org/drm/intel/issues/1937
  [i915#2190]: https://gitlab.freedesktop.org/drm/intel/issu

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7370/index.html

[-- Attachment #2: Type: text/html, Size: 122788 bytes --]

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [igt-dev] [PATCH i-g-t] tests/kms_rotation_crc: Create dynamic subtests
  2022-06-23 16:02 [igt-dev] [PATCH i-g-t] tests/kms_rotation_crc: Create dynamic subtests Jeevan B
  2022-06-23 17:08 ` [igt-dev] ✓ Fi.CI.BAT: success for " Patchwork
  2022-06-27 15:49 ` [igt-dev] ✗ Fi.CI.IGT: failure " Patchwork
@ 2022-09-29 17:34 ` Modem, Bhanuprakash
  2023-01-06  6:49 ` Swati Sharma
  3 siblings, 0 replies; 5+ messages in thread
From: Modem, Bhanuprakash @ 2022-09-29 17:34 UTC (permalink / raw)
  To: Jeevan B, igt-dev

On Thu-23-06-2022 09:32 pm, Jeevan B wrote:
> Convert the existing subtests to dynamic subtests at pipe level.
> 
> Signed-off-by: Jeevan B <jeevan.b@intel.com>
> ---
>   tests/kms_rotation_crc.c | 591 +++++++++++++++++++++------------------
>   1 file changed, 316 insertions(+), 275 deletions(-)
> 
> diff --git a/tests/kms_rotation_crc.c b/tests/kms_rotation_crc.c
> index 50869a08..ae925844 100644
> --- a/tests/kms_rotation_crc.c
> +++ b/tests/kms_rotation_crc.c
> @@ -454,13 +454,13 @@ static bool test_format(data_t *data,
>   	return true;
>   }
>   
> -static void test_plane_rotation(data_t *data, int plane_type, bool test_bad_format)
> +static void test_plane_rotation(data_t *data, int plane_type, bool test_bad_format, int pipe,
> +				igt_output_t *output)
>   {
>   	igt_display_t *display = &data->display;
>   	drmModeModeInfo *mode;
> -	igt_output_t *output;
> -	enum pipe pipe;
> -	int pipe_count = 0, connected_outputs = 0;
> +	igt_plane_t *plane;
> +	int i, j, c;
>   
>   	if (is_amdgpu_device(data->gfx_fd))
>   		igt_require(plane_type != DRM_PLANE_TYPE_OVERLAY &&
> @@ -471,105 +471,90 @@ static void test_plane_rotation(data_t *data, int plane_type, bool test_bad_form
>   
>   	igt_display_require_output(display);

Please drop this redundant check from all the subtests, as we are adding 
this check to igt_fixture in main().

>   
> -	for_each_connected_output(&data->display, output)
> -		connected_outputs++;
> -
> -	for_each_pipe_with_valid_output(display, pipe, output) {
> -		igt_plane_t *plane;
> -		int i, j, c;
> -
> -		mode = igt_output_get_mode(output);
> -
> -		/*
> -		 * Find mode which is in use in connector. If this is mode
> -		 * which was not run on earlier we'll end up on zeroed
> -		 * struct crc_rect and recalculate reference crcs.
> -		 */
> -		for (data->output_crc_in_use = 0;
> -		     data->output_crc_in_use < data->max_crc_in_use &&
> -		     data->crc_rect[data->output_crc_in_use][0].mode != mode->vdisplay;
> -		     data->output_crc_in_use++)
> -			;
> +	mode = igt_output_get_mode(output);
>   
> -		/*
> -		 * This is if there was different mode on different connector
> -		 * and this mode was not run on before.
> -		 */
> -		if (data->crc_rect[data->output_crc_in_use][0].mode != mode->vdisplay) {
> -			data->crc_rect[data->output_crc_in_use][0].mode = mode->vdisplay;
> -			data->max_crc_in_use++;
> +	/*
> +	 * Find mode which is in use in connector. If this is mode
> +	 * which was not run on earlier we'll end up on zeroed
> +	 * struct crc_rect and recalculate reference crcs.
> +	 */
> +	for (data->output_crc_in_use = 0;
> +	     data->output_crc_in_use < data->max_crc_in_use &&
> +	     data->crc_rect[data->output_crc_in_use][0].mode != mode->vdisplay;
> +	     data->output_crc_in_use++)
> +		;
>   
> +	/*
> +	 * This is if there was different mode on different connector
> +	 * and this mode was not run on before.
> +	 */
> +	if (data->crc_rect[data->output_crc_in_use][0].mode != mode->vdisplay) {
> +		data->crc_rect[data->output_crc_in_use][0].mode = mode->vdisplay;
> +		data->max_crc_in_use++;
>   			if (data->max_crc_in_use >= MAX_TESTED_MODES)
>   				data->max_crc_in_use = MAX_TESTED_MODES - 1;
> -		}
> -
> -		for (c = 0; c < num_rectangle_types; c++)
> -			data->crc_rect[data->output_crc_in_use][c].valid = false;
> -
> -		/* restricting the execution to 2 pipes to reduce execution time*/
> -		if (pipe_count == 2 * connected_outputs && !data->extended)
> -			break;
> -		pipe_count++;
> -
> -		igt_output_set_pipe(output, pipe);
> +	}
>   
> -		plane = igt_output_get_plane_type(output, plane_type);
> -		igt_require(igt_plane_has_prop(plane, IGT_PLANE_ROTATION));
> -		igt_require(igt_plane_has_rotation(plane, data->rotation));
> -		/* CHV can't rotate and reflect simultaneously */
> -		igt_require(!is_i915_device(data->gfx_fd) ||
> -			    !IS_CHERRYVIEW(data->devid) ||
> -			    data->rotation != (IGT_ROTATION_180 | IGT_REFLECT_X));
> +	for (c = 0; c < num_rectangle_types; c++)
> +		data->crc_rect[data->output_crc_in_use][c].valid = false;
>   
> -		prepare_crtc(data, output, pipe, plane, true);
> +	igt_output_set_pipe(output, pipe);
>   
> -		for (i = 0; i < num_rectangle_types; i++) {
> -			/* Unsupported on i915 */
> -			if (plane_type == DRM_PLANE_TYPE_CURSOR &&
> -			    i != square)
> +	plane = igt_output_get_plane_type(output, plane_type);
> +	igt_require(igt_plane_has_prop(plane, IGT_PLANE_ROTATION));
> +	igt_require(igt_plane_has_rotation(plane, data->rotation));
> +	/* CHV can't rotate and reflect simultaneously */
> +	igt_require(!is_i915_device(data->gfx_fd) ||
> +		    !IS_CHERRYVIEW(data->devid) ||
> +		    data->rotation != (IGT_ROTATION_180 | IGT_REFLECT_X));

Please avoid igt_require*() & igt_skip*() inside the dynamic subtest.

> +
> +	prepare_crtc(data, output, pipe, plane, true);
> +
> +	for (i = 0; i < num_rectangle_types; i++) {
> +		/* Unsupported on i915 */
> +		if (plane_type == DRM_PLANE_TYPE_CURSOR &&
> +		    i != square)
> +			continue;
> +
> +		/* Only support partial covering primary plane on gen9+ */
> +		if (is_amdgpu_device(data->gfx_fd) ||
> +			(plane_type == DRM_PLANE_TYPE_PRIMARY &&
> +			 is_i915_device(data->gfx_fd) &&
> +			 intel_display_ver(
> +				 intel_get_drm_devid(data->gfx_fd)) < 9)) {
> +			if (i != rectangle)
>   				continue;
> +			else
> +				data->use_native_resolution = true;
> +		} else {
> +			data->use_native_resolution = false;
> +		}
>   
> -			/* Only support partial covering primary plane on gen9+ */
> -			if (is_amdgpu_device(data->gfx_fd) ||
> -				(plane_type == DRM_PLANE_TYPE_PRIMARY &&
> -				 is_i915_device(data->gfx_fd) &&
> -				 intel_display_ver(
> -					 intel_get_drm_devid(data->gfx_fd)) < 9)) {
> -				if (i != rectangle)
> -					continue;
> -				else
> -					data->use_native_resolution = true;
> -			} else {
> -				data->use_native_resolution = false;
> -			}
> -
> -			if (!data->override_fmt) {
> -				struct igt_vec tested_formats;
> -
> -				igt_vec_init(&tested_formats, sizeof(uint32_t));
> +		if (!data->override_fmt) {
> +			struct igt_vec tested_formats;
>   
> -				for (j = 0; j < plane->drm_plane->count_formats; j++) {
> -					uint32_t format = plane->drm_plane->formats[j];
> +			igt_vec_init(&tested_formats, sizeof(uint32_t));
>   
> -					if (!test_format(data, &tested_formats, format))
> -						continue;
> +			for (j = 0; j < plane->drm_plane->count_formats; j++) {
> +				uint32_t format = plane->drm_plane->formats[j];
>   
> -					test_single_case(data, pipe, output, plane, i,
> -							 format, test_bad_format);
> -				}
> -
> -				igt_vec_fini(&tested_formats);
> -			} else {
> +				if (!test_format(data, &tested_formats, format))
> +					continue;
>   				test_single_case(data, pipe, output, plane, i,
> -						 data->override_fmt, test_bad_format);
> +						 format, test_bad_format);
>   			}
> +				igt_vec_fini(&tested_formats);
> +		} else {
> +			test_single_case(data, pipe, output, plane, i,
> +					 data->override_fmt, test_bad_format);
>   		}
> -		if (is_i915_device(data->gfx_fd)) {
> -			igt_pipe_crc_stop(data->pipe_crc);
> -		}
> +	}
> +	if (is_i915_device(data->gfx_fd)) {
> +		igt_pipe_crc_stop(data->pipe_crc);
>   	}
>   }
>   
> +
>   typedef struct {
>   	int32_t x1, y1;
>   	uint64_t width, height, modifier, format;
> @@ -665,10 +650,9 @@ static void pointlocation(data_t *data, planeinfos *p, drmModeModeInfo *mode,
>    * It is left here if this test ever was wanted to be run on
>    * different pipes.
>    */
> -static void test_multi_plane_rotation(data_t *data, enum pipe pipe)
> +static void test_multi_plane_rotation(data_t *data, enum pipe pipe, igt_output_t *output)
>   {
>   	igt_display_t *display = &data->display;
> -	igt_output_t *output;
>   	igt_crc_t retcrc_sw, retcrc_hw;
>   	planeinfos p[2];
>   	int used_w, used_h, lastroundirotation = 0, lastroundjrotation = 0,
> @@ -706,182 +690,189 @@ static void test_multi_plane_rotation(data_t *data, enum pipe pipe)
>   	{IGT_ROTATION_270, .2f, .4f, I915_FORMAT_MOD_Yf_TILED },
>   	};
>   
> -	for_each_valid_output_on_pipe(display, pipe, output) {
> -		int i, j, k, l, flipsw, fliphw;
> -		igt_output_set_pipe(output, pipe);
> -		mode = igt_output_get_mode(output);
> -		igt_display_require_output(display);
> -		igt_display_commit2(display, COMMIT_ATOMIC);
> -
> -		used_w = TEST_WIDTH(mode);
> -		used_h = TEST_HEIGHT(mode);
> -
> -		p[0].plane = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
> -		p[1].plane = igt_output_get_plane_type(output, DRM_PLANE_TYPE_OVERLAY);
> -
> -		data->pipe_crc = igt_pipe_crc_new(data->gfx_fd, pipe,
> -						  INTEL_PIPE_CRC_SOURCE_AUTO);
> -		igt_pipe_crc_start(data->pipe_crc);
> -
> -		for (i = 0; i < ARRAY_SIZE(planeconfigs); i++) {
> -			p[0].width = (uint64_t)(planeconfigs[i].width * used_w);
> -			p[0].height = (uint64_t)(planeconfigs[i].height * used_h);
> -			p[0].modifier = planeconfigs[i].modifier;
> -			pointlocation(data, (planeinfos *)&p, mode, 0);
> -
> -			for (k = 0; k < ARRAY_SIZE(formatlist); k++) {
> -				p[0].format = formatlist[k];
> +	int i, j, k, l, flipsw, fliphw;
>   
> -				for (j = 0; j < ARRAY_SIZE(planeconfigs); j++) {
> -					p[1].width = (uint64_t)(planeconfigs[j].width * used_w);
> -					p[1].height = (uint64_t)(planeconfigs[j].height * used_h);
> -					p[1].modifier = planeconfigs[j].modifier;
> -					pointlocation(data, (planeinfos *)&p,
> -						      mode, 1);
> -
> -					for (l = 0; l < ARRAY_SIZE(formatlist); l++) {
> -						p[1].format = formatlist[l];
> -						/*
> -						 * RGB565 90/270 degrees rotation is supported
> -						 * from gen11 onwards.
> -						 */
> -						if (p[0].format == DRM_FORMAT_RGB565 &&
> -						     igt_rotation_90_or_270(planeconfigs[i].rotation)
> -						     && intel_display_ver(data->devid) < 11)
> -							continue;
> +	igt_output_set_pipe(output, pipe);

We must sanitize the state before using this.

> +	mode = igt_output_get_mode(output);
> +	igt_display_require_output(display);
> +	igt_display_commit2(display, COMMIT_ATOMIC);
> +
> +	used_w = TEST_WIDTH(mode);
> +	used_h = TEST_HEIGHT(mode);
> +
> +	p[0].plane = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
> +	p[1].plane = igt_output_get_plane_type(output, DRM_PLANE_TYPE_OVERLAY);
> +
> +	data->pipe_crc = igt_pipe_crc_new(data->gfx_fd, pipe,
> +					  INTEL_PIPE_CRC_SOURCE_AUTO);
> +	igt_pipe_crc_start(data->pipe_crc);
> +
> +	for (i = 0; i < ARRAY_SIZE(planeconfigs); i++) {
> +		p[0].width = (uint64_t)(planeconfigs[i].width * used_w);
> +		p[0].height = (uint64_t)(planeconfigs[i].height * used_h);
> +		p[0].modifier = planeconfigs[i].modifier;
> +		pointlocation(data, (planeinfos *)&p, mode, 0);
> +
> +		for (k = 0; k < ARRAY_SIZE(formatlist); k++) {
> +			p[0].format = formatlist[k];
> +
> +			for (j = 0; j < ARRAY_SIZE(planeconfigs); j++) {
> +				p[1].width = (uint64_t)(planeconfigs[j].width * used_w);
> +				p[1].height = (uint64_t)(planeconfigs[j].height * used_h);
> +				p[1].modifier = planeconfigs[j].modifier;
> +				pointlocation(data, (planeinfos *)&p,
> +					      mode, 1);
> +
> +				for (l = 0; l < ARRAY_SIZE(formatlist); l++) {
> +					p[1].format = formatlist[l];
> +					/*
> +					 * RGB565 90/270 degrees rotation is supported
> +					 * from gen11 onwards.
> +					 */
> +					if (p[0].format == DRM_FORMAT_RGB565 &&
> +					     igt_rotation_90_or_270(planeconfigs[i].rotation)
> +					     && intel_display_ver(data->devid) < 11)
> +						continue;
>   
> -						if (p[1].format == DRM_FORMAT_RGB565 &&
> -						     igt_rotation_90_or_270(planeconfigs[j].rotation)
> -						     && intel_display_ver(data->devid) < 11)
> -							continue;
> +					if (p[1].format == DRM_FORMAT_RGB565 &&
> +					     igt_rotation_90_or_270(planeconfigs[j].rotation)
> +					     && intel_display_ver(data->devid) < 11)
> +						continue;
>   
> -						if (!igt_plane_has_rotation(p[0].plane,
> -									    planeconfigs[i].rotation))
> -							continue;
> +					if (!igt_plane_has_rotation(p[0].plane,
> +								    planeconfigs[i].rotation))
> +						continue;
>   
> -						if (!igt_plane_has_rotation(p[1].plane,
> -									    planeconfigs[j].rotation))
> -							continue;
> +					if (!igt_plane_has_rotation(p[1].plane,
> +								    planeconfigs[j].rotation))
> +						continue;
>   
> +					/*
> +					 * if using packed formats crc's will be
> +					 * same and can store them so there's
> +					 * no need to redo comparison image and
> +					 * just use stored crc.
> +					 */
> +					if (!igt_format_is_yuv_semiplanar(p[0].format) &&
> +					    !igt_format_is_yuv_semiplanar(p[1].format) &&
> +					    crclog[ctz(planeconfigs[i].rotation) |
> +					    (ctz(planeconfigs[j].rotation) << 2)].frame != 0) {
> +						retcrc_sw = crclog[ctz(planeconfigs[i].rotation) |
> +							    (ctz(planeconfigs[j].rotation) << 2)];
> +						have_crc = true;
> +					} else if ((p[0].format == DRM_FORMAT_NV12 ||
> +						  p[0].format == DRM_FORMAT_P010) &&
> +						  p[1].format != DRM_FORMAT_NV12 &&
> +						  p[1].format != DRM_FORMAT_P010 &&
> +						  lastroundjformat != DRM_FORMAT_NV12 &&
> +						  lastroundjformat != DRM_FORMAT_P010 &&
> +						  planeconfigs[i].rotation == lastroundirotation &&
> +						  planeconfigs[j].rotation == lastroundjrotation) {
>   						/*
> -						 * if using packed formats crc's will be
> -						 * same and can store them so there's
> -						 * no need to redo comparison image and
> -						 * just use stored crc.
> +						 * With NV12 can benefit from
> +						 * previous crc if rotations
> +						 * stay same. If both planes
> +						 * have NV12 in use we need to
> +						 * skip that case.
> +						 * If last round right plane
> +						 * had NV12 need to skip this.
>   						 */
> -						if (!igt_format_is_yuv_semiplanar(p[0].format) && !igt_format_is_yuv_semiplanar(p[1].format) &&
> -						    crclog[ctz(planeconfigs[i].rotation) | (ctz(planeconfigs[j].rotation) << 2)].frame != 0) {
> -							retcrc_sw = crclog[ctz(planeconfigs[i].rotation) | (ctz(planeconfigs[j].rotation) << 2)];
> -							have_crc = true;
> -						} else if((p[0].format == DRM_FORMAT_NV12 || p[0].format == DRM_FORMAT_P010) &&
> -							   p[1].format != DRM_FORMAT_NV12 && p[1].format != DRM_FORMAT_P010 &&
> -							   lastroundjformat != DRM_FORMAT_NV12 && lastroundjformat != DRM_FORMAT_P010 &&
> -							   planeconfigs[i].rotation == lastroundirotation &&
> -							   planeconfigs[j].rotation == lastroundjrotation) {
> -							/*
> -							 * With NV12 can benefit from
> -							 * previous crc if rotations
> -							 * stay same. If both planes
> -							 * have NV12 in use we need to
> -							 * skip that case.
> -							 * If last round right plane
> -							 * had NV12 need to skip this.
> -							 */
> -							have_crc = true;
> -						} else {
> -							/*
> -							 * here will be created
> -							 * comparison image and get crc
> -							 * if didn't have stored crc
> -							 * or planar format is in use.
> -							 * have_crc flag will control
> -							 * crc comparison part.
> -							 */
> -							p[0].rotation_sw = planeconfigs[i].rotation;
> -							p[0].rotation_hw = IGT_ROTATION_0;
> -							p[1].rotation_sw = planeconfigs[j].rotation;
> -							p[1].rotation_hw = IGT_ROTATION_0;
> -							if (!setup_multiplane(data,
> -									(planeinfos *)&p,
> -									&planeconfigs[i].fbs[k][MULTIPLANE_REFERENCE],
> -									&planeconfigs[j].fbs[l][MULTIPLANE_REFERENCE]))
> -								continue;
> -							igt_display_commit_atomic(display, DRM_MODE_ATOMIC_ALLOW_MODESET, NULL);
> -							flipsw = kmstest_get_vblank(data->gfx_fd, pipe, 0) + 1;
> -							have_crc = false;
> -						}
> -
> +						have_crc = true;
> +					} else {
>   						/*
> -						 * create hw rotated image and
> -						 * get vblank where interesting
> -						 * crc will be at, grab crc bit later
> +						 * here will be created
> +						 * comparison image and get crc
> +						 * if didn't have stored crc
> +						 * or planar format is in use.
> +						 * have_crc flag will control
> +						 * crc comparison part.
>   						 */
> -						p[0].rotation_sw = IGT_ROTATION_0;
> -						p[0].rotation_hw = planeconfigs[i].rotation;
> -						p[1].rotation_sw = IGT_ROTATION_0;
> -						p[1].rotation_hw = planeconfigs[j].rotation;
> -
> +						p[0].rotation_sw = planeconfigs[i].rotation;
> +						p[0].rotation_hw = IGT_ROTATION_0;
> +						p[1].rotation_sw = planeconfigs[j].rotation;
> +						p[1].rotation_hw = IGT_ROTATION_0;
>   						if (!setup_multiplane(data,
> -								      (planeinfos *)&p,
> -								      &planeconfigs[i].fbs[k][MULTIPLANE_ROTATED],
> -								      &planeconfigs[j].fbs[l][MULTIPLANE_ROTATED]))
> +						    (planeinfos *)&p,
> +						    &planeconfigs[i].fbs[k][MULTIPLANE_REFERENCE],
> +						    &planeconfigs[j].fbs[l][MULTIPLANE_REFERENCE]))
>   							continue;
> +						igt_display_commit_atomic(display,
> +									  DRM_MODE_ATOMIC_ALLOW_MODESET, NULL);
> +						flipsw = kmstest_get_vblank(data->gfx_fd, pipe, 0) + 1;
> +						have_crc = false;
> +					}
>   
> -						igt_display_commit_atomic(display, DRM_MODE_ATOMIC_ALLOW_MODESET, NULL);
> -						fliphw = kmstest_get_vblank(data->gfx_fd, pipe, 0) + 1;
> +					/*
> +					 * create hw rotated image and
> +					 * get vblank where interesting
> +					 * crc will be at, grab crc bit later
> +					 */
> +					p[0].rotation_sw = IGT_ROTATION_0;
> +					p[0].rotation_hw = planeconfigs[i].rotation;
> +					p[1].rotation_sw = IGT_ROTATION_0;
> +					p[1].rotation_hw = planeconfigs[j].rotation;
> +
> +					if (!setup_multiplane(data,
> +							      (planeinfos *)&p,
> +							      &planeconfigs[i].fbs[k][MULTIPLANE_ROTATED],
> +							      &planeconfigs[j].fbs[l][MULTIPLANE_ROTATED]))
> +						continue;
>   
> -						if (!have_crc) {
> -							igt_pipe_crc_get_for_frame(data->gfx_fd,
> -										   data->pipe_crc,
> -										   flipsw,
> -										   &retcrc_sw);
> +					igt_display_commit_atomic(display, DRM_MODE_ATOMIC_ALLOW_MODESET, NULL);
> +					fliphw = kmstest_get_vblank(data->gfx_fd, pipe, 0) + 1;
>   
> -							if (!igt_format_is_yuv_semiplanar(p[0].format) &&!igt_format_is_yuv_semiplanar(p[1].format))
> -								crclog[ctz(planeconfigs[i].rotation) | (ctz(planeconfigs[j].rotation) << 2)]
> -								= retcrc_sw;
> -						}
> -						igt_pipe_crc_get_for_frame(data->gfx_fd, data->pipe_crc, fliphw, &retcrc_hw);
> +					if (!have_crc) {
> +						igt_pipe_crc_get_for_frame(data->gfx_fd,
> +									   data->pipe_crc,
> +									   flipsw,
> +									   &retcrc_sw);
>   
> -						str1 = igt_crc_to_string(&retcrc_sw);
> -						str2 = igt_crc_to_string(&retcrc_hw);
> +						if (!igt_format_is_yuv_semiplanar(p[0].format) &&
> +						    !igt_format_is_yuv_semiplanar(p[1].format))
> +							crclog[ctz(planeconfigs[i].rotation) | (ctz(planeconfigs[j].rotation) << 2)]
> +							= retcrc_sw;
> +					}
> +					igt_pipe_crc_get_for_frame(data->gfx_fd, data->pipe_crc, fliphw, &retcrc_hw);
>   
> -						igt_debug("crc %.8s vs %.8s -- %.4s - %.4s crc buffered:%s rot1 %d rot2 %d\n",
> -							str1, str2,
> -							(char *) &p[0].format, (char *) &p[1].format,
> -							have_crc?"yes":" no",
> -							(int[]) {0, 90, 180, 270} [ctz(planeconfigs[i].rotation)],
> -							(int[]) {0, 90, 180, 270} [ctz(planeconfigs[j].rotation)]);
> +					str1 = igt_crc_to_string(&retcrc_sw);
> +					str2 = igt_crc_to_string(&retcrc_hw);
>   
> -						free(str1);
> -						free(str2);
> +					igt_debug("crc %.8s vs %.8s -- %.4s - %.4s crc buffered:%s rot1 %d rot2 %d\n",
> +						str1, str2,
> +						(char *) &p[0].format, (char *) &p[1].format,
> +						have_crc?"yes":" no",
> +						(int[]) {0, 90, 180, 270} [ctz(planeconfigs[i].rotation)],
> +						(int[]) {0, 90, 180, 270} [ctz(planeconfigs[j].rotation)]);
>   
> +					free(str1);
> +					free(str2);
>   
> -						igt_assert_crc_equal(&retcrc_sw, &retcrc_hw);
>   
> -						lastroundjformat = p[1].format;
> -						lastroundirotation = planeconfigs[i].rotation;
> -						lastroundjrotation = planeconfigs[j].rotation;
> -					}
> +					igt_assert_crc_equal(&retcrc_sw, &retcrc_hw);
> +
> +					lastroundjformat = p[1].format;
> +					lastroundirotation = planeconfigs[i].rotation;
> +					lastroundjrotation = planeconfigs[j].rotation;
>   				}
>   			}
>   		}
> -		igt_pipe_crc_stop(data->pipe_crc);
> -		igt_pipe_crc_free(data->pipe_crc);
> +	}
> +	igt_pipe_crc_stop(data->pipe_crc);
> +	igt_pipe_crc_free(data->pipe_crc);
> +	igt_plane_set_fb(p[0].plane, NULL);
> +	igt_plane_set_fb(p[1].plane, NULL);
> +	igt_display_commit_atomic(display, DRM_MODE_ATOMIC_ALLOW_MODESET, NULL);
>   
> -		igt_plane_set_fb(p[0].plane, NULL);
> -		igt_plane_set_fb(p[1].plane, NULL);
> -		igt_display_commit_atomic(display, DRM_MODE_ATOMIC_ALLOW_MODESET, NULL);
> +	for (i = 0; i < ARRAY_SIZE(crclog); i++)
> +		crclog[i].frame = 0;
>   
> -		for (i = 0; i < ARRAY_SIZE(crclog); i++)
> -			crclog[i].frame = 0;
> +	lastroundjformat = 0;
> +	lastroundirotation = 0;
> +	lastroundjrotation = 0;
>   
> -		lastroundjformat = 0;
> -		lastroundirotation = 0;
> -		lastroundjrotation = 0;
>   
> +	igt_output_set_pipe(output, PIPE_NONE);
>   
> -		igt_output_set_pipe(output, PIPE_NONE);
> -	}
>   	data->pipe_crc = NULL;
>   
>   	for (c = 0; c < ARRAY_SIZE(planeconfigs); c++) {
> @@ -1049,6 +1040,8 @@ igt_main_args("", long_opts, help_str, opt_handler, &data)
>   	};
>   
>   	int gen = 0;
> +	enum pipe pipe;
> +	igt_output_t *output;
>   
>   	igt_fixture {
>   		data.gfx_fd = drm_open_driver_master(DRIVER_ANY);
> @@ -1066,67 +1059,96 @@ igt_main_args("", long_opts, help_str, opt_handler, &data)
>   	}
>   
>   	igt_describe("Rotation test with 90/270 degree for primary and sprite planes of gen9+");
> -	for (subtest = subtests; subtest->rot; subtest++) {
> -		igt_subtest_f("%s-rotation-%s",
> -			      plane_test_str(subtest->plane),
> -			      rot_test_str(subtest->rot)) {
> -			if (is_amdgpu_device(data.gfx_fd)) {
> -				data.override_fmt = DRM_FORMAT_XRGB8888;
> -				if (igt_rotation_90_or_270(subtest->rot))
> -					data.override_modifier = AMD_FMT_MOD |
> -						AMD_FMT_MOD_SET(TILE, AMD_FMT_MOD_TILE_GFX9_64K_S) |
> -						AMD_FMT_MOD_SET(TILE_VERSION, AMD_FMT_MOD_TILE_VER_GFX9);
> -				else
> -					data.override_modifier = DRM_FORMAT_MOD_LINEAR;
> +	igt_subtest_with_dynamic("rotation") {
> +		for (subtest = subtests; subtest->rot; subtest++) {
> +			for_each_pipe(&data.display, pipe) {
> +				for_each_valid_output_on_pipe(&data.display, pipe, output) {

Please use for_each_pipe_with_valid_output().

> +					igt_dynamic_f("%s-rotation-%s-%s-pipe-%s",
> +						      plane_test_str(subtest->plane),
> +						      rot_test_str(subtest->rot),
> +						      output->name, kmstest_pipe_name(pipe)) {

Please use the dynamic subtest name as <pipe name>-<output name>.

These above 2 comments are applicable for all the subtests.

> +						if (is_amdgpu_device(data.gfx_fd)) {
> +							data.override_fmt = DRM_FORMAT_XRGB8888;
> +							if (igt_rotation_90_or_270(subtest->rot))
> +								data.override_modifier = AMD_FMT_MOD |
> +								AMD_FMT_MOD_SET(TILE, AMD_FMT_MOD_TILE_GFX9_64K_S) |
> +								AMD_FMT_MOD_SET(TILE_VERSION, AMD_FMT_MOD_TILE_VER_GFX9);
> +							else
> +								data.override_modifier = DRM_FORMAT_MOD_LINEAR;
> +						}
> +					data.rotation = subtest->rot;
> +					test_plane_rotation(&data, subtest->plane, false, pipe, output);

Please fix the indentation.

> +					}
> +				}
>   			}
> -			data.rotation = subtest->rot;
> -			test_plane_rotation(&data, subtest->plane, false);
>   		}
>   	}
>   
>   	igt_describe("Rotation test with 90 degree for a plane of gen9+ with given position");
> -	igt_subtest_f("sprite-rotation-90-pos-100-0") {
> +	igt_subtest_with_dynamic("sprite-rotation-90-pos-100-0") {
>   		data.rotation = IGT_ROTATION_90;
>   		data.pos_x = 100,
>   		data.pos_y = 0;
> -		test_plane_rotation(&data, DRM_PLANE_TYPE_OVERLAY, false);
> +		for_each_pipe(&data.display, pipe) {
> +			for_each_valid_output_on_pipe(&data.display, pipe, output) {
> +				igt_dynamic_f("%s-pipe-%s", output->name, kmstest_pipe_name(pipe))
> +					test_plane_rotation(&data, DRM_PLANE_TYPE_OVERLAY, false, pipe, output);
> +			}
> +		}
>   	}
>   	data.pos_x = 0,
>   	data.pos_y = 0;
>   
>   	igt_describe("Checking unsupported pixel format for gen9+ with 90 degree of rotation");
> -	igt_subtest_f("bad-pixel-format") {
> +	igt_subtest_with_dynamic("bad-pixel-format") {
>   		 /* gen11 enables RGB565 rotation for 90/270 degrees.
>   		  * so apart from this, any other gen11+ pixel format
>   		  * can be used which doesn't support 90/270 degree
>   		  * rotation */
>   		data.rotation = IGT_ROTATION_90;
>   		data.override_fmt = gen < 11 ? DRM_FORMAT_RGB565 : DRM_FORMAT_Y212;
> -		test_plane_rotation(&data, DRM_PLANE_TYPE_PRIMARY, true);
> +		for_each_pipe(&data.display, pipe) {
> +			for_each_valid_output_on_pipe(&data.display, pipe, output) {
> +				igt_dynamic_f("%s-pipe-%s", output->name, kmstest_pipe_name(pipe))
> +					test_plane_rotation(&data, DRM_PLANE_TYPE_PRIMARY, true, pipe, output);
> +			}
> +		}
>   	}
>   	data.override_fmt = 0;
>   
>   	igt_describe("Checking unsupported tiling for gen9+ with 90 degree of rotation");
> -	igt_subtest_f("bad-tiling") {
> +	igt_subtest_with_dynamic("bad-tiling") {
>   		data.rotation = IGT_ROTATION_90;
>   		data.override_modifier = I915_FORMAT_MOD_X_TILED;
> -		test_plane_rotation(&data, DRM_PLANE_TYPE_PRIMARY, true);
> +		for_each_pipe(&data.display, pipe) {
> +			for_each_valid_output_on_pipe(&data.display, pipe, output) {
> +				igt_dynamic_f("%s-pipe-%s", output->name, kmstest_pipe_name(pipe))
> +					test_plane_rotation(&data, DRM_PLANE_TYPE_PRIMARY, true, pipe, output);
> +			}
> +		}
>   	}
>   	data.override_modifier = 0;
>   
>   	igt_describe("Tiling and Rotation test for gen 10+ for primary plane");
> -	for (reflect_x = reflect_x_subtests; reflect_x->modifier; reflect_x++) {
> -		igt_subtest_f("primary-%s-reflect-x-%s",
> -			      modifier_test_str(reflect_x->modifier),
> -			      rot_test_str(reflect_x->rot)) {
> -			data.rotation = (IGT_REFLECT_X | reflect_x->rot);
> -			data.override_modifier = reflect_x->modifier;
> -			test_plane_rotation(&data, DRM_PLANE_TYPE_PRIMARY, false);
> +	igt_subtest_with_dynamic("reflect") {
> +		for (reflect_x = reflect_x_subtests; reflect_x->modifier; reflect_x++) {
> +			for_each_pipe(&data.display, pipe) {
> +				for_each_valid_output_on_pipe(&data.display, pipe, output) {
> +					igt_dynamic_f("primary-%s-reflect-x-%s-%s-pipe-%s",
> +						       modifier_test_str(reflect_x->modifier),
> +						       rot_test_str(reflect_x->rot),
> +						       output->name, kmstest_pipe_name(pipe)) {
> +						data.rotation = (IGT_REFLECT_X | reflect_x->rot);
> +						data.override_modifier = reflect_x->modifier;
> +						test_plane_rotation(&data, DRM_PLANE_TYPE_PRIMARY, false, pipe, output);
> +					}
> +				}
> +			}
>   		}
>   	}
>   
>   	igt_describe("Rotation test on both planes by making them fully visible");
> -	igt_subtest_f("multiplane-rotation") {
> +	igt_subtest_with_dynamic("multiplane-rotation") {
>   		igt_require(gen >= 9);
>   		cleanup_crtc(&data);
>   		data.planepos[0].origo = p_top | p_left;
> @@ -1135,12 +1157,18 @@ igt_main_args("", long_opts, help_str, opt_handler, &data)
>   		data.planepos[1].origo = p_top | p_right;
>   		data.planepos[1].x = -.4f;
>   		data.planepos[1].y = .1f;
> -		test_multi_plane_rotation(&data, 0);
> +		for_each_pipe(&data.display, pipe) {
> +			for_each_valid_output_on_pipe(&data.display, pipe, output) {
> +				igt_dynamic_f("%s-pipe-%s", output->name, kmstest_pipe_name(pipe)) {
> +					test_multi_plane_rotation(&data, pipe, output);
> +				}
> +			}
> +		}
>   	}
>   
>   	igt_describe("Rotation test on both planes by cropping left/top corner of primary plane and"
>   			"right/top corner of sprite plane");
> -	igt_subtest_f("multiplane-rotation-cropping-top") {
> +	igt_subtest_with_dynamic("multiplane-rotation-cropping-top") {
>   		igt_require(gen >= 9);
>   		cleanup_crtc(&data);
>   		data.planepos[0].origo = p_top | p_left;
> @@ -1149,12 +1177,18 @@ igt_main_args("", long_opts, help_str, opt_handler, &data)
>   		data.planepos[1].origo = p_top | p_right;
>   		data.planepos[1].x = -.15f;
>   		data.planepos[1].y = -.15f;
> -		test_multi_plane_rotation(&data, 0);
> +		for_each_pipe(&data.display, pipe) {
> +			for_each_valid_output_on_pipe(&data.display, pipe, output) {
> +				igt_dynamic_f("%s-pipe-%s", output->name, kmstest_pipe_name(pipe)) {
> +					test_multi_plane_rotation(&data, pipe, output);
> +				}
> +			}
> +		}
>   	}
>   
>   	igt_describe("Rotation test on both planes by cropping left/bottom corner of primary plane"
>   			"and right/bottom corner of sprite plane");
> -	igt_subtest_f("multiplane-rotation-cropping-bottom") {
> +	igt_subtest_with_dynamic("multiplane-rotation-cropping-bottom") {
>   		igt_require(gen >= 9);

Please group the subtests, those required gen >= 9 and add this check to 
igt_fixture.

>   		cleanup_crtc(&data);
>   		data.planepos[0].origo = p_bottom | p_left;
> @@ -1163,7 +1197,13 @@ igt_main_args("", long_opts, help_str, opt_handler, &data)
>   		data.planepos[1].origo = p_bottom | p_right;
>   		data.planepos[1].x = -.15f;
>   		data.planepos[1].y = -.20f;
> -		test_multi_plane_rotation(&data, 0);
> +		for_each_pipe(&data.display, pipe) {
> +			for_each_valid_output_on_pipe(&data.display, pipe, output) {
> +				igt_dynamic_f("%s-pipe-%s", output->name, kmstest_pipe_name(pipe)) {
> +					test_multi_plane_rotation(&data, pipe, output);
> +				}
> +			}
> +		}
>   	}
>   
>   	/*
> @@ -1171,17 +1211,18 @@ igt_main_args("", long_opts, help_str, opt_handler, &data)
>   	 * the following subtests otherwise.
>   	 */
>   	igt_describe("This test intends to check for fence leaks exhaustively");
> -	igt_subtest_f("exhaust-fences") {
> -		enum pipe pipe;
> -		igt_output_t *output;
> +	igt_subtest_with_dynamic("exhaust-fences") {
>   
>   		igt_display_require_output(&data.display);

Please move this to igt_fixture.

>   
> -		for_each_pipe_with_valid_output(&data.display, pipe, output) {
> -			igt_plane_t *primary = &data.display.pipes[pipe].planes[0];
> +		for_each_pipe(&data.display, pipe) {
> +			for_each_pipe_with_valid_output(&data.display, pipe, output) {
> +				igt_plane_t *primary = &data.display.pipes[pipe].planes[0];
> +				igt_dynamic_f("%s-pipe-%s", output->name, kmstest_pipe_name(pipe)) {
>   
> -			test_plane_rotation_exhaust_fences(&data, pipe, output, primary);
> -			break;
> +					test_plane_rotation_exhaust_fences(&data, pipe, output, primary);
> +				}
> +			}
>   		}
>   	}
>   

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [igt-dev] [PATCH i-g-t] tests/kms_rotation_crc: Create dynamic subtests
  2022-06-23 16:02 [igt-dev] [PATCH i-g-t] tests/kms_rotation_crc: Create dynamic subtests Jeevan B
                   ` (2 preceding siblings ...)
  2022-09-29 17:34 ` [igt-dev] [PATCH i-g-t] " Modem, Bhanuprakash
@ 2023-01-06  6:49 ` Swati Sharma
  3 siblings, 0 replies; 5+ messages in thread
From: Swati Sharma @ 2023-01-06  6:49 UTC (permalink / raw)
  To: Jeevan B, igt-dev

Hi Jeevan,

Please split the patch into smaller patches for easy review.

On 23-Jun-22 9:32 PM, Jeevan B wrote:
> Convert the existing subtests to dynamic subtests at pipe level.
> 
> Signed-off-by: Jeevan B <jeevan.b@intel.com>
> ---
>   tests/kms_rotation_crc.c | 591 +++++++++++++++++++++------------------
>   1 file changed, 316 insertions(+), 275 deletions(-)
> 
> diff --git a/tests/kms_rotation_crc.c b/tests/kms_rotation_crc.c
> index 50869a08..ae925844 100644
> --- a/tests/kms_rotation_crc.c
> +++ b/tests/kms_rotation_crc.c
> @@ -454,13 +454,13 @@ static bool test_format(data_t *data,
>   	return true;
>   }
>   
> -static void test_plane_rotation(data_t *data, int plane_type, bool test_bad_format)
> +static void test_plane_rotation(data_t *data, int plane_type, bool test_bad_format, int pipe,
> +				igt_output_t *output)
>   {
>   	igt_display_t *display = &data->display;
>   	drmModeModeInfo *mode;
> -	igt_output_t *output;
> -	enum pipe pipe;
> -	int pipe_count = 0, connected_outputs = 0;
> +	igt_plane_t *plane;
> +	int i, j, c;
>   
>   	if (is_amdgpu_device(data->gfx_fd))
>   		igt_require(plane_type != DRM_PLANE_TYPE_OVERLAY &&
> @@ -471,105 +471,90 @@ static void test_plane_rotation(data_t *data, int plane_type, bool test_bad_form
>   
>   	igt_display_require_output(display);
>   
> -	for_each_connected_output(&data->display, output)
> -		connected_outputs++;
> -
> -	for_each_pipe_with_valid_output(display, pipe, output) {
> -		igt_plane_t *plane;
> -		int i, j, c;
> -
> -		mode = igt_output_get_mode(output);
> -
> -		/*
> -		 * Find mode which is in use in connector. If this is mode
> -		 * which was not run on earlier we'll end up on zeroed
> -		 * struct crc_rect and recalculate reference crcs.
> -		 */
> -		for (data->output_crc_in_use = 0;
> -		     data->output_crc_in_use < data->max_crc_in_use &&
> -		     data->crc_rect[data->output_crc_in_use][0].mode != mode->vdisplay;
> -		     data->output_crc_in_use++)
> -			;
> +	mode = igt_output_get_mode(output);
>   
> -		/*
> -		 * This is if there was different mode on different connector
> -		 * and this mode was not run on before.
> -		 */
> -		if (data->crc_rect[data->output_crc_in_use][0].mode != mode->vdisplay) {
> -			data->crc_rect[data->output_crc_in_use][0].mode = mode->vdisplay;
> -			data->max_crc_in_use++;
> +	/*
> +	 * Find mode which is in use in connector. If this is mode
> +	 * which was not run on earlier we'll end up on zeroed
> +	 * struct crc_rect and recalculate reference crcs.
> +	 */
> +	for (data->output_crc_in_use = 0;
> +	     data->output_crc_in_use < data->max_crc_in_use &&
> +	     data->crc_rect[data->output_crc_in_use][0].mode != mode->vdisplay;
> +	     data->output_crc_in_use++)
> +		;
>   
> +	/*
> +	 * This is if there was different mode on different connector
> +	 * and this mode was not run on before.
> +	 */
> +	if (data->crc_rect[data->output_crc_in_use][0].mode != mode->vdisplay) {
> +		data->crc_rect[data->output_crc_in_use][0].mode = mode->vdisplay;
> +		data->max_crc_in_use++;
>   			if (data->max_crc_in_use >= MAX_TESTED_MODES)
>   				data->max_crc_in_use = MAX_TESTED_MODES - 1;
> -		}
> -
> -		for (c = 0; c < num_rectangle_types; c++)
> -			data->crc_rect[data->output_crc_in_use][c].valid = false;
> -
> -		/* restricting the execution to 2 pipes to reduce execution time*/
> -		if (pipe_count == 2 * connected_outputs && !data->extended)
> -			break;
> -		pipe_count++;
> -
> -		igt_output_set_pipe(output, pipe);
> +	}
>   
> -		plane = igt_output_get_plane_type(output, plane_type);
> -		igt_require(igt_plane_has_prop(plane, IGT_PLANE_ROTATION));
> -		igt_require(igt_plane_has_rotation(plane, data->rotation));
> -		/* CHV can't rotate and reflect simultaneously */
> -		igt_require(!is_i915_device(data->gfx_fd) ||
> -			    !IS_CHERRYVIEW(data->devid) ||
> -			    data->rotation != (IGT_ROTATION_180 | IGT_REFLECT_X));
> +	for (c = 0; c < num_rectangle_types; c++)
> +		data->crc_rect[data->output_crc_in_use][c].valid = false;
>   
> -		prepare_crtc(data, output, pipe, plane, true);
> +	igt_output_set_pipe(output, pipe);
>   
> -		for (i = 0; i < num_rectangle_types; i++) {
> -			/* Unsupported on i915 */
> -			if (plane_type == DRM_PLANE_TYPE_CURSOR &&
> -			    i != square)
> +	plane = igt_output_get_plane_type(output, plane_type);
> +	igt_require(igt_plane_has_prop(plane, IGT_PLANE_ROTATION));
> +	igt_require(igt_plane_has_rotation(plane, data->rotation));
> +	/* CHV can't rotate and reflect simultaneously */
> +	igt_require(!is_i915_device(data->gfx_fd) ||
> +		    !IS_CHERRYVIEW(data->devid) ||
> +		    data->rotation != (IGT_ROTATION_180 | IGT_REFLECT_X));
> +
> +	prepare_crtc(data, output, pipe, plane, true);
> +
> +	for (i = 0; i < num_rectangle_types; i++) {
> +		/* Unsupported on i915 */
> +		if (plane_type == DRM_PLANE_TYPE_CURSOR &&
> +		    i != square)
> +			continue;
> +
> +		/* Only support partial covering primary plane on gen9+ */
> +		if (is_amdgpu_device(data->gfx_fd) ||
> +			(plane_type == DRM_PLANE_TYPE_PRIMARY &&
> +			 is_i915_device(data->gfx_fd) &&
> +			 intel_display_ver(
> +				 intel_get_drm_devid(data->gfx_fd)) < 9)) {
> +			if (i != rectangle)
>   				continue;
> +			else
> +				data->use_native_resolution = true;
> +		} else {
> +			data->use_native_resolution = false;
> +		}
>   
> -			/* Only support partial covering primary plane on gen9+ */
> -			if (is_amdgpu_device(data->gfx_fd) ||
> -				(plane_type == DRM_PLANE_TYPE_PRIMARY &&
> -				 is_i915_device(data->gfx_fd) &&
> -				 intel_display_ver(
> -					 intel_get_drm_devid(data->gfx_fd)) < 9)) {
> -				if (i != rectangle)
> -					continue;
> -				else
> -					data->use_native_resolution = true;
> -			} else {
> -				data->use_native_resolution = false;
> -			}
> -
> -			if (!data->override_fmt) {
> -				struct igt_vec tested_formats;
> -
> -				igt_vec_init(&tested_formats, sizeof(uint32_t));
> +		if (!data->override_fmt) {
> +			struct igt_vec tested_formats;
>   
> -				for (j = 0; j < plane->drm_plane->count_formats; j++) {
> -					uint32_t format = plane->drm_plane->formats[j];
> +			igt_vec_init(&tested_formats, sizeof(uint32_t));
>   
> -					if (!test_format(data, &tested_formats, format))
> -						continue;
> +			for (j = 0; j < plane->drm_plane->count_formats; j++) {
> +				uint32_t format = plane->drm_plane->formats[j];
>   
> -					test_single_case(data, pipe, output, plane, i,
> -							 format, test_bad_format);
> -				}
> -
> -				igt_vec_fini(&tested_formats);
> -			} else {
> +				if (!test_format(data, &tested_formats, format))
> +					continue;
>   				test_single_case(data, pipe, output, plane, i,
> -						 data->override_fmt, test_bad_format);
> +						 format, test_bad_format);
>   			}
> +				igt_vec_fini(&tested_formats);
> +		} else {
> +			test_single_case(data, pipe, output, plane, i,
> +					 data->override_fmt, test_bad_format);
>   		}
> -		if (is_i915_device(data->gfx_fd)) {
> -			igt_pipe_crc_stop(data->pipe_crc);
> -		}
> +	}
> +	if (is_i915_device(data->gfx_fd)) {
> +		igt_pipe_crc_stop(data->pipe_crc);
>   	}
>   }
>   
> +
>   typedef struct {
>   	int32_t x1, y1;
>   	uint64_t width, height, modifier, format;
> @@ -665,10 +650,9 @@ static void pointlocation(data_t *data, planeinfos *p, drmModeModeInfo *mode,
>    * It is left here if this test ever was wanted to be run on
>    * different pipes.
>    */
> -static void test_multi_plane_rotation(data_t *data, enum pipe pipe)
> +static void test_multi_plane_rotation(data_t *data, enum pipe pipe, igt_output_t *output)
>   {
>   	igt_display_t *display = &data->display;
> -	igt_output_t *output;
>   	igt_crc_t retcrc_sw, retcrc_hw;
>   	planeinfos p[2];
>   	int used_w, used_h, lastroundirotation = 0, lastroundjrotation = 0,
> @@ -706,182 +690,189 @@ static void test_multi_plane_rotation(data_t *data, enum pipe pipe)
>   	{IGT_ROTATION_270, .2f, .4f, I915_FORMAT_MOD_Yf_TILED },
>   	};
>   
> -	for_each_valid_output_on_pipe(display, pipe, output) {
> -		int i, j, k, l, flipsw, fliphw;
> -		igt_output_set_pipe(output, pipe);
> -		mode = igt_output_get_mode(output);
> -		igt_display_require_output(display);
> -		igt_display_commit2(display, COMMIT_ATOMIC);
> -
> -		used_w = TEST_WIDTH(mode);
> -		used_h = TEST_HEIGHT(mode);
> -
> -		p[0].plane = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
> -		p[1].plane = igt_output_get_plane_type(output, DRM_PLANE_TYPE_OVERLAY);
> -
> -		data->pipe_crc = igt_pipe_crc_new(data->gfx_fd, pipe,
> -						  INTEL_PIPE_CRC_SOURCE_AUTO);
> -		igt_pipe_crc_start(data->pipe_crc);
> -
> -		for (i = 0; i < ARRAY_SIZE(planeconfigs); i++) {
> -			p[0].width = (uint64_t)(planeconfigs[i].width * used_w);
> -			p[0].height = (uint64_t)(planeconfigs[i].height * used_h);
> -			p[0].modifier = planeconfigs[i].modifier;
> -			pointlocation(data, (planeinfos *)&p, mode, 0);
> -
> -			for (k = 0; k < ARRAY_SIZE(formatlist); k++) {
> -				p[0].format = formatlist[k];
> +	int i, j, k, l, flipsw, fliphw;
>   
> -				for (j = 0; j < ARRAY_SIZE(planeconfigs); j++) {
> -					p[1].width = (uint64_t)(planeconfigs[j].width * used_w);
> -					p[1].height = (uint64_t)(planeconfigs[j].height * used_h);
> -					p[1].modifier = planeconfigs[j].modifier;
> -					pointlocation(data, (planeinfos *)&p,
> -						      mode, 1);
> -
> -					for (l = 0; l < ARRAY_SIZE(formatlist); l++) {
> -						p[1].format = formatlist[l];
> -						/*
> -						 * RGB565 90/270 degrees rotation is supported
> -						 * from gen11 onwards.
> -						 */
> -						if (p[0].format == DRM_FORMAT_RGB565 &&
> -						     igt_rotation_90_or_270(planeconfigs[i].rotation)
> -						     && intel_display_ver(data->devid) < 11)
> -							continue;
> +	igt_output_set_pipe(output, pipe);
> +	mode = igt_output_get_mode(output);
> +	igt_display_require_output(display);
> +	igt_display_commit2(display, COMMIT_ATOMIC);
> +
> +	used_w = TEST_WIDTH(mode);
> +	used_h = TEST_HEIGHT(mode);
> +
> +	p[0].plane = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
> +	p[1].plane = igt_output_get_plane_type(output, DRM_PLANE_TYPE_OVERLAY);
> +
> +	data->pipe_crc = igt_pipe_crc_new(data->gfx_fd, pipe,
> +					  INTEL_PIPE_CRC_SOURCE_AUTO);
> +	igt_pipe_crc_start(data->pipe_crc);
> +
> +	for (i = 0; i < ARRAY_SIZE(planeconfigs); i++) {
> +		p[0].width = (uint64_t)(planeconfigs[i].width * used_w);
> +		p[0].height = (uint64_t)(planeconfigs[i].height * used_h);
> +		p[0].modifier = planeconfigs[i].modifier;
> +		pointlocation(data, (planeinfos *)&p, mode, 0);
> +
> +		for (k = 0; k < ARRAY_SIZE(formatlist); k++) {
> +			p[0].format = formatlist[k];
> +
> +			for (j = 0; j < ARRAY_SIZE(planeconfigs); j++) {
> +				p[1].width = (uint64_t)(planeconfigs[j].width * used_w);
> +				p[1].height = (uint64_t)(planeconfigs[j].height * used_h);
> +				p[1].modifier = planeconfigs[j].modifier;
> +				pointlocation(data, (planeinfos *)&p,
> +					      mode, 1);
> +
> +				for (l = 0; l < ARRAY_SIZE(formatlist); l++) {
> +					p[1].format = formatlist[l];
> +					/*
> +					 * RGB565 90/270 degrees rotation is supported
> +					 * from gen11 onwards.
> +					 */
> +					if (p[0].format == DRM_FORMAT_RGB565 &&
> +					     igt_rotation_90_or_270(planeconfigs[i].rotation)
> +					     && intel_display_ver(data->devid) < 11)
> +						continue;
>   
> -						if (p[1].format == DRM_FORMAT_RGB565 &&
> -						     igt_rotation_90_or_270(planeconfigs[j].rotation)
> -						     && intel_display_ver(data->devid) < 11)
> -							continue;
> +					if (p[1].format == DRM_FORMAT_RGB565 &&
> +					     igt_rotation_90_or_270(planeconfigs[j].rotation)
> +					     && intel_display_ver(data->devid) < 11)
> +						continue;
>   
> -						if (!igt_plane_has_rotation(p[0].plane,
> -									    planeconfigs[i].rotation))
> -							continue;
> +					if (!igt_plane_has_rotation(p[0].plane,
> +								    planeconfigs[i].rotation))
> +						continue;
>   
> -						if (!igt_plane_has_rotation(p[1].plane,
> -									    planeconfigs[j].rotation))
> -							continue;
> +					if (!igt_plane_has_rotation(p[1].plane,
> +								    planeconfigs[j].rotation))
> +						continue;
>   
> +					/*
> +					 * if using packed formats crc's will be
> +					 * same and can store them so there's
> +					 * no need to redo comparison image and
> +					 * just use stored crc.
> +					 */
> +					if (!igt_format_is_yuv_semiplanar(p[0].format) &&
> +					    !igt_format_is_yuv_semiplanar(p[1].format) &&
> +					    crclog[ctz(planeconfigs[i].rotation) |
> +					    (ctz(planeconfigs[j].rotation) << 2)].frame != 0) {
> +						retcrc_sw = crclog[ctz(planeconfigs[i].rotation) |
> +							    (ctz(planeconfigs[j].rotation) << 2)];
> +						have_crc = true;
> +					} else if ((p[0].format == DRM_FORMAT_NV12 ||
> +						  p[0].format == DRM_FORMAT_P010) &&
> +						  p[1].format != DRM_FORMAT_NV12 &&
> +						  p[1].format != DRM_FORMAT_P010 &&
> +						  lastroundjformat != DRM_FORMAT_NV12 &&
> +						  lastroundjformat != DRM_FORMAT_P010 &&
> +						  planeconfigs[i].rotation == lastroundirotation &&
> +						  planeconfigs[j].rotation == lastroundjrotation) {
>   						/*
> -						 * if using packed formats crc's will be
> -						 * same and can store them so there's
> -						 * no need to redo comparison image and
> -						 * just use stored crc.
> +						 * With NV12 can benefit from
> +						 * previous crc if rotations
> +						 * stay same. If both planes
> +						 * have NV12 in use we need to
> +						 * skip that case.
> +						 * If last round right plane
> +						 * had NV12 need to skip this.
>   						 */
> -						if (!igt_format_is_yuv_semiplanar(p[0].format) && !igt_format_is_yuv_semiplanar(p[1].format) &&
> -						    crclog[ctz(planeconfigs[i].rotation) | (ctz(planeconfigs[j].rotation) << 2)].frame != 0) {
> -							retcrc_sw = crclog[ctz(planeconfigs[i].rotation) | (ctz(planeconfigs[j].rotation) << 2)];
> -							have_crc = true;
> -						} else if((p[0].format == DRM_FORMAT_NV12 || p[0].format == DRM_FORMAT_P010) &&
> -							   p[1].format != DRM_FORMAT_NV12 && p[1].format != DRM_FORMAT_P010 &&
> -							   lastroundjformat != DRM_FORMAT_NV12 && lastroundjformat != DRM_FORMAT_P010 &&
> -							   planeconfigs[i].rotation == lastroundirotation &&
> -							   planeconfigs[j].rotation == lastroundjrotation) {
> -							/*
> -							 * With NV12 can benefit from
> -							 * previous crc if rotations
> -							 * stay same. If both planes
> -							 * have NV12 in use we need to
> -							 * skip that case.
> -							 * If last round right plane
> -							 * had NV12 need to skip this.
> -							 */
> -							have_crc = true;
> -						} else {
> -							/*
> -							 * here will be created
> -							 * comparison image and get crc
> -							 * if didn't have stored crc
> -							 * or planar format is in use.
> -							 * have_crc flag will control
> -							 * crc comparison part.
> -							 */
> -							p[0].rotation_sw = planeconfigs[i].rotation;
> -							p[0].rotation_hw = IGT_ROTATION_0;
> -							p[1].rotation_sw = planeconfigs[j].rotation;
> -							p[1].rotation_hw = IGT_ROTATION_0;
> -							if (!setup_multiplane(data,
> -									(planeinfos *)&p,
> -									&planeconfigs[i].fbs[k][MULTIPLANE_REFERENCE],
> -									&planeconfigs[j].fbs[l][MULTIPLANE_REFERENCE]))
> -								continue;
> -							igt_display_commit_atomic(display, DRM_MODE_ATOMIC_ALLOW_MODESET, NULL);
> -							flipsw = kmstest_get_vblank(data->gfx_fd, pipe, 0) + 1;
> -							have_crc = false;
> -						}
> -
> +						have_crc = true;
> +					} else {
>   						/*
> -						 * create hw rotated image and
> -						 * get vblank where interesting
> -						 * crc will be at, grab crc bit later
> +						 * here will be created
> +						 * comparison image and get crc
> +						 * if didn't have stored crc
> +						 * or planar format is in use.
> +						 * have_crc flag will control
> +						 * crc comparison part.
>   						 */
> -						p[0].rotation_sw = IGT_ROTATION_0;
> -						p[0].rotation_hw = planeconfigs[i].rotation;
> -						p[1].rotation_sw = IGT_ROTATION_0;
> -						p[1].rotation_hw = planeconfigs[j].rotation;
> -
> +						p[0].rotation_sw = planeconfigs[i].rotation;
> +						p[0].rotation_hw = IGT_ROTATION_0;
> +						p[1].rotation_sw = planeconfigs[j].rotation;
> +						p[1].rotation_hw = IGT_ROTATION_0;
>   						if (!setup_multiplane(data,
> -								      (planeinfos *)&p,
> -								      &planeconfigs[i].fbs[k][MULTIPLANE_ROTATED],
> -								      &planeconfigs[j].fbs[l][MULTIPLANE_ROTATED]))
> +						    (planeinfos *)&p,
> +						    &planeconfigs[i].fbs[k][MULTIPLANE_REFERENCE],
> +						    &planeconfigs[j].fbs[l][MULTIPLANE_REFERENCE]))
>   							continue;
> +						igt_display_commit_atomic(display,
> +									  DRM_MODE_ATOMIC_ALLOW_MODESET, NULL);
> +						flipsw = kmstest_get_vblank(data->gfx_fd, pipe, 0) + 1;
> +						have_crc = false;
> +					}
>   
> -						igt_display_commit_atomic(display, DRM_MODE_ATOMIC_ALLOW_MODESET, NULL);
> -						fliphw = kmstest_get_vblank(data->gfx_fd, pipe, 0) + 1;
> +					/*
> +					 * create hw rotated image and
> +					 * get vblank where interesting
> +					 * crc will be at, grab crc bit later
> +					 */
> +					p[0].rotation_sw = IGT_ROTATION_0;
> +					p[0].rotation_hw = planeconfigs[i].rotation;
> +					p[1].rotation_sw = IGT_ROTATION_0;
> +					p[1].rotation_hw = planeconfigs[j].rotation;
> +
> +					if (!setup_multiplane(data,
> +							      (planeinfos *)&p,
> +							      &planeconfigs[i].fbs[k][MULTIPLANE_ROTATED],
> +							      &planeconfigs[j].fbs[l][MULTIPLANE_ROTATED]))
> +						continue;
>   
> -						if (!have_crc) {
> -							igt_pipe_crc_get_for_frame(data->gfx_fd,
> -										   data->pipe_crc,
> -										   flipsw,
> -										   &retcrc_sw);
> +					igt_display_commit_atomic(display, DRM_MODE_ATOMIC_ALLOW_MODESET, NULL);
> +					fliphw = kmstest_get_vblank(data->gfx_fd, pipe, 0) + 1;
>   
> -							if (!igt_format_is_yuv_semiplanar(p[0].format) &&!igt_format_is_yuv_semiplanar(p[1].format))
> -								crclog[ctz(planeconfigs[i].rotation) | (ctz(planeconfigs[j].rotation) << 2)]
> -								= retcrc_sw;
> -						}
> -						igt_pipe_crc_get_for_frame(data->gfx_fd, data->pipe_crc, fliphw, &retcrc_hw);
> +					if (!have_crc) {
> +						igt_pipe_crc_get_for_frame(data->gfx_fd,
> +									   data->pipe_crc,
> +									   flipsw,
> +									   &retcrc_sw);
>   
> -						str1 = igt_crc_to_string(&retcrc_sw);
> -						str2 = igt_crc_to_string(&retcrc_hw);
> +						if (!igt_format_is_yuv_semiplanar(p[0].format) &&
> +						    !igt_format_is_yuv_semiplanar(p[1].format))
> +							crclog[ctz(planeconfigs[i].rotation) | (ctz(planeconfigs[j].rotation) << 2)]
> +							= retcrc_sw;
> +					}
> +					igt_pipe_crc_get_for_frame(data->gfx_fd, data->pipe_crc, fliphw, &retcrc_hw);
>   
> -						igt_debug("crc %.8s vs %.8s -- %.4s - %.4s crc buffered:%s rot1 %d rot2 %d\n",
> -							str1, str2,
> -							(char *) &p[0].format, (char *) &p[1].format,
> -							have_crc?"yes":" no",
> -							(int[]) {0, 90, 180, 270} [ctz(planeconfigs[i].rotation)],
> -							(int[]) {0, 90, 180, 270} [ctz(planeconfigs[j].rotation)]);
> +					str1 = igt_crc_to_string(&retcrc_sw);
> +					str2 = igt_crc_to_string(&retcrc_hw);
>   
> -						free(str1);
> -						free(str2);
> +					igt_debug("crc %.8s vs %.8s -- %.4s - %.4s crc buffered:%s rot1 %d rot2 %d\n",
> +						str1, str2,
> +						(char *) &p[0].format, (char *) &p[1].format,
> +						have_crc?"yes":" no",
> +						(int[]) {0, 90, 180, 270} [ctz(planeconfigs[i].rotation)],
> +						(int[]) {0, 90, 180, 270} [ctz(planeconfigs[j].rotation)]);
>   
> +					free(str1);
> +					free(str2);
>   
> -						igt_assert_crc_equal(&retcrc_sw, &retcrc_hw);
>   
> -						lastroundjformat = p[1].format;
> -						lastroundirotation = planeconfigs[i].rotation;
> -						lastroundjrotation = planeconfigs[j].rotation;
> -					}
> +					igt_assert_crc_equal(&retcrc_sw, &retcrc_hw);
> +
> +					lastroundjformat = p[1].format;
> +					lastroundirotation = planeconfigs[i].rotation;
> +					lastroundjrotation = planeconfigs[j].rotation;
>   				}
>   			}
>   		}
> -		igt_pipe_crc_stop(data->pipe_crc);
> -		igt_pipe_crc_free(data->pipe_crc);
> +	}
> +	igt_pipe_crc_stop(data->pipe_crc);
> +	igt_pipe_crc_free(data->pipe_crc);
> +	igt_plane_set_fb(p[0].plane, NULL);
> +	igt_plane_set_fb(p[1].plane, NULL);
> +	igt_display_commit_atomic(display, DRM_MODE_ATOMIC_ALLOW_MODESET, NULL);
>   
> -		igt_plane_set_fb(p[0].plane, NULL);
> -		igt_plane_set_fb(p[1].plane, NULL);
> -		igt_display_commit_atomic(display, DRM_MODE_ATOMIC_ALLOW_MODESET, NULL);
> +	for (i = 0; i < ARRAY_SIZE(crclog); i++)
> +		crclog[i].frame = 0;
>   
> -		for (i = 0; i < ARRAY_SIZE(crclog); i++)
> -			crclog[i].frame = 0;
> +	lastroundjformat = 0;
> +	lastroundirotation = 0;
> +	lastroundjrotation = 0;
>   
> -		lastroundjformat = 0;
> -		lastroundirotation = 0;
> -		lastroundjrotation = 0;
>   
> +	igt_output_set_pipe(output, PIPE_NONE);
>   
> -		igt_output_set_pipe(output, PIPE_NONE);
> -	}
>   	data->pipe_crc = NULL;
>   
>   	for (c = 0; c < ARRAY_SIZE(planeconfigs); c++) {
> @@ -1049,6 +1040,8 @@ igt_main_args("", long_opts, help_str, opt_handler, &data)
>   	};
>   
>   	int gen = 0;
> +	enum pipe pipe;
> +	igt_output_t *output;
>   
>   	igt_fixture {
>   		data.gfx_fd = drm_open_driver_master(DRIVER_ANY);
> @@ -1066,67 +1059,96 @@ igt_main_args("", long_opts, help_str, opt_handler, &data)
>   	}
>   
>   	igt_describe("Rotation test with 90/270 degree for primary and sprite planes of gen9+");
> -	for (subtest = subtests; subtest->rot; subtest++) {
> -		igt_subtest_f("%s-rotation-%s",
> -			      plane_test_str(subtest->plane),
> -			      rot_test_str(subtest->rot)) {
> -			if (is_amdgpu_device(data.gfx_fd)) {
> -				data.override_fmt = DRM_FORMAT_XRGB8888;
> -				if (igt_rotation_90_or_270(subtest->rot))
> -					data.override_modifier = AMD_FMT_MOD |
> -						AMD_FMT_MOD_SET(TILE, AMD_FMT_MOD_TILE_GFX9_64K_S) |
> -						AMD_FMT_MOD_SET(TILE_VERSION, AMD_FMT_MOD_TILE_VER_GFX9);
> -				else
> -					data.override_modifier = DRM_FORMAT_MOD_LINEAR;
> +	igt_subtest_with_dynamic("rotation") {
> +		for (subtest = subtests; subtest->rot; subtest++) {
> +			for_each_pipe(&data.display, pipe) {
> +				for_each_valid_output_on_pipe(&data.display, pipe, output) {
> +					igt_dynamic_f("%s-rotation-%s-%s-pipe-%s",
> +						      plane_test_str(subtest->plane),
> +						      rot_test_str(subtest->rot),
> +						      output->name, kmstest_pipe_name(pipe)) {
> +						if (is_amdgpu_device(data.gfx_fd)) {
> +							data.override_fmt = DRM_FORMAT_XRGB8888;
> +							if (igt_rotation_90_or_270(subtest->rot))
> +								data.override_modifier = AMD_FMT_MOD |
> +								AMD_FMT_MOD_SET(TILE, AMD_FMT_MOD_TILE_GFX9_64K_S) |
> +								AMD_FMT_MOD_SET(TILE_VERSION, AMD_FMT_MOD_TILE_VER_GFX9);
> +							else
> +								data.override_modifier = DRM_FORMAT_MOD_LINEAR;
> +						}
> +					data.rotation = subtest->rot;
> +					test_plane_rotation(&data, subtest->plane, false, pipe, output);
> +					}
> +				}
>   			}
> -			data.rotation = subtest->rot;
> -			test_plane_rotation(&data, subtest->plane, false);
>   		}
>   	}
>   
>   	igt_describe("Rotation test with 90 degree for a plane of gen9+ with given position");
> -	igt_subtest_f("sprite-rotation-90-pos-100-0") {
> +	igt_subtest_with_dynamic("sprite-rotation-90-pos-100-0") {
>   		data.rotation = IGT_ROTATION_90;
>   		data.pos_x = 100,
>   		data.pos_y = 0;
> -		test_plane_rotation(&data, DRM_PLANE_TYPE_OVERLAY, false);
> +		for_each_pipe(&data.display, pipe) {
> +			for_each_valid_output_on_pipe(&data.display, pipe, output) {
> +				igt_dynamic_f("%s-pipe-%s", output->name, kmstest_pipe_name(pipe))
> +					test_plane_rotation(&data, DRM_PLANE_TYPE_OVERLAY, false, pipe, output);
> +			}
> +		}
>   	}
>   	data.pos_x = 0,
>   	data.pos_y = 0;
>   
>   	igt_describe("Checking unsupported pixel format for gen9+ with 90 degree of rotation");
> -	igt_subtest_f("bad-pixel-format") {
> +	igt_subtest_with_dynamic("bad-pixel-format") {
>   		 /* gen11 enables RGB565 rotation for 90/270 degrees.
>   		  * so apart from this, any other gen11+ pixel format
>   		  * can be used which doesn't support 90/270 degree
>   		  * rotation */
>   		data.rotation = IGT_ROTATION_90;
>   		data.override_fmt = gen < 11 ? DRM_FORMAT_RGB565 : DRM_FORMAT_Y212;
> -		test_plane_rotation(&data, DRM_PLANE_TYPE_PRIMARY, true);
> +		for_each_pipe(&data.display, pipe) {
> +			for_each_valid_output_on_pipe(&data.display, pipe, output) {
> +				igt_dynamic_f("%s-pipe-%s", output->name, kmstest_pipe_name(pipe))
> +					test_plane_rotation(&data, DRM_PLANE_TYPE_PRIMARY, true, pipe, output);
> +			}
> +		}
>   	}
>   	data.override_fmt = 0;
>   
>   	igt_describe("Checking unsupported tiling for gen9+ with 90 degree of rotation");
> -	igt_subtest_f("bad-tiling") {
> +	igt_subtest_with_dynamic("bad-tiling") {
>   		data.rotation = IGT_ROTATION_90;
>   		data.override_modifier = I915_FORMAT_MOD_X_TILED;
> -		test_plane_rotation(&data, DRM_PLANE_TYPE_PRIMARY, true);
> +		for_each_pipe(&data.display, pipe) {
> +			for_each_valid_output_on_pipe(&data.display, pipe, output) {
> +				igt_dynamic_f("%s-pipe-%s", output->name, kmstest_pipe_name(pipe))
> +					test_plane_rotation(&data, DRM_PLANE_TYPE_PRIMARY, true, pipe, output);
> +			}
> +		}
>   	}
>   	data.override_modifier = 0;
>   
>   	igt_describe("Tiling and Rotation test for gen 10+ for primary plane");
> -	for (reflect_x = reflect_x_subtests; reflect_x->modifier; reflect_x++) {
> -		igt_subtest_f("primary-%s-reflect-x-%s",
> -			      modifier_test_str(reflect_x->modifier),
> -			      rot_test_str(reflect_x->rot)) {
> -			data.rotation = (IGT_REFLECT_X | reflect_x->rot);
> -			data.override_modifier = reflect_x->modifier;
> -			test_plane_rotation(&data, DRM_PLANE_TYPE_PRIMARY, false);
> +	igt_subtest_with_dynamic("reflect") {
> +		for (reflect_x = reflect_x_subtests; reflect_x->modifier; reflect_x++) {
> +			for_each_pipe(&data.display, pipe) {
> +				for_each_valid_output_on_pipe(&data.display, pipe, output) {
> +					igt_dynamic_f("primary-%s-reflect-x-%s-%s-pipe-%s",
> +						       modifier_test_str(reflect_x->modifier),
> +						       rot_test_str(reflect_x->rot),
> +						       output->name, kmstest_pipe_name(pipe)) {
> +						data.rotation = (IGT_REFLECT_X | reflect_x->rot);
> +						data.override_modifier = reflect_x->modifier;
> +						test_plane_rotation(&data, DRM_PLANE_TYPE_PRIMARY, false, pipe, output);
> +					}
> +				}
> +			}
>   		}
>   	}
>   
>   	igt_describe("Rotation test on both planes by making them fully visible");
> -	igt_subtest_f("multiplane-rotation") {
> +	igt_subtest_with_dynamic("multiplane-rotation") {
>   		igt_require(gen >= 9);
>   		cleanup_crtc(&data);
>   		data.planepos[0].origo = p_top | p_left;
> @@ -1135,12 +1157,18 @@ igt_main_args("", long_opts, help_str, opt_handler, &data)
>   		data.planepos[1].origo = p_top | p_right;
>   		data.planepos[1].x = -.4f;
>   		data.planepos[1].y = .1f;
> -		test_multi_plane_rotation(&data, 0);
> +		for_each_pipe(&data.display, pipe) {
> +			for_each_valid_output_on_pipe(&data.display, pipe, output) {
> +				igt_dynamic_f("%s-pipe-%s", output->name, kmstest_pipe_name(pipe)) {
> +					test_multi_plane_rotation(&data, pipe, output);
> +				}
> +			}
> +		}
>   	}
>   
>   	igt_describe("Rotation test on both planes by cropping left/top corner of primary plane and"
>   			"right/top corner of sprite plane");
> -	igt_subtest_f("multiplane-rotation-cropping-top") {
> +	igt_subtest_with_dynamic("multiplane-rotation-cropping-top") {
>   		igt_require(gen >= 9);
>   		cleanup_crtc(&data);
>   		data.planepos[0].origo = p_top | p_left;
> @@ -1149,12 +1177,18 @@ igt_main_args("", long_opts, help_str, opt_handler, &data)
>   		data.planepos[1].origo = p_top | p_right;
>   		data.planepos[1].x = -.15f;
>   		data.planepos[1].y = -.15f;
> -		test_multi_plane_rotation(&data, 0);
> +		for_each_pipe(&data.display, pipe) {
> +			for_each_valid_output_on_pipe(&data.display, pipe, output) {
> +				igt_dynamic_f("%s-pipe-%s", output->name, kmstest_pipe_name(pipe)) {
> +					test_multi_plane_rotation(&data, pipe, output);
> +				}
> +			}
> +		}
>   	}
>   
>   	igt_describe("Rotation test on both planes by cropping left/bottom corner of primary plane"
>   			"and right/bottom corner of sprite plane");
> -	igt_subtest_f("multiplane-rotation-cropping-bottom") {
> +	igt_subtest_with_dynamic("multiplane-rotation-cropping-bottom") {
>   		igt_require(gen >= 9);
>   		cleanup_crtc(&data);
>   		data.planepos[0].origo = p_bottom | p_left;
> @@ -1163,7 +1197,13 @@ igt_main_args("", long_opts, help_str, opt_handler, &data)
>   		data.planepos[1].origo = p_bottom | p_right;
>   		data.planepos[1].x = -.15f;
>   		data.planepos[1].y = -.20f;
> -		test_multi_plane_rotation(&data, 0);
> +		for_each_pipe(&data.display, pipe) {
> +			for_each_valid_output_on_pipe(&data.display, pipe, output) {
> +				igt_dynamic_f("%s-pipe-%s", output->name, kmstest_pipe_name(pipe)) {
> +					test_multi_plane_rotation(&data, pipe, output);
> +				}
> +			}
> +		}
>   	}
>   
>   	/*
> @@ -1171,17 +1211,18 @@ igt_main_args("", long_opts, help_str, opt_handler, &data)
>   	 * the following subtests otherwise.
>   	 */
>   	igt_describe("This test intends to check for fence leaks exhaustively");
> -	igt_subtest_f("exhaust-fences") {
> -		enum pipe pipe;
> -		igt_output_t *output;
> +	igt_subtest_with_dynamic("exhaust-fences") {
>   
>   		igt_display_require_output(&data.display);
>   
> -		for_each_pipe_with_valid_output(&data.display, pipe, output) {
> -			igt_plane_t *primary = &data.display.pipes[pipe].planes[0];
> +		for_each_pipe(&data.display, pipe) {
> +			for_each_pipe_with_valid_output(&data.display, pipe, output) {
> +				igt_plane_t *primary = &data.display.pipes[pipe].planes[0];
> +				igt_dynamic_f("%s-pipe-%s", output->name, kmstest_pipe_name(pipe)) {
>   
> -			test_plane_rotation_exhaust_fences(&data, pipe, output, primary);
> -			break;
> +					test_plane_rotation_exhaust_fences(&data, pipe, output, primary);
> +				}
> +			}
>   		}
>   	}
>   

-- 
~Swati Sharma

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2023-01-06  6:49 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-06-23 16:02 [igt-dev] [PATCH i-g-t] tests/kms_rotation_crc: Create dynamic subtests Jeevan B
2022-06-23 17:08 ` [igt-dev] ✓ Fi.CI.BAT: success for " Patchwork
2022-06-27 15:49 ` [igt-dev] ✗ Fi.CI.IGT: failure " Patchwork
2022-09-29 17:34 ` [igt-dev] [PATCH i-g-t] " Modem, Bhanuprakash
2023-01-06  6:49 ` Swati Sharma

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.