[igt-dev] [PATCH i-g-t] tests/kms_ccs: Select highest resolution

Mika Kahola mika.kahola at intel.com
Tue Jan 28 14:30:54 UTC 2020


In some cases we select resolution that is insufficient for testing
and we receive unnecessary skips on CI. Let's loop through all available
modes and select the higest one when running the tests.

Signed-off-by: Mika Kahola <mika.kahola at intel.com>
---
 tests/kms_ccs.c | 30 ++++++++++++++++++++++++------
 1 file changed, 24 insertions(+), 6 deletions(-)

diff --git a/tests/kms_ccs.c b/tests/kms_ccs.c
index 2259a4f1..ddc6a30b 100644
--- a/tests/kms_ccs.c
+++ b/tests/kms_ccs.c
@@ -276,12 +276,28 @@ static igt_plane_t *compatible_main_plane(data_t *data)
 	return igt_output_get_plane_type(data->output, DRM_PLANE_TYPE_PRIMARY);
 }
 
+static drmModeModeInfo get_mode(igt_output_t *output)
+{
+	const drmModeModeInfo *mode;
+	drmModeModeInfo *tmp;
+	int i;
+
+	mode = &output->config.connector->modes[0];
+	for (i = 1; i < output->config.connector->count_modes; i++) {
+		tmp = &output->config.connector->modes[i];
+		if (tmp->vdisplay > mode->vdisplay)
+			mode = tmp;
+	}
+
+	return *mode;
+}
+
 static bool try_config(data_t *data, enum test_fb_flags fb_flags,
 		       igt_crc_t *crc)
 {
 	igt_display_t *display = &data->display;
 	igt_plane_t *primary = compatible_main_plane(data);
-	drmModeModeInfo *drm_mode = igt_output_get_mode(data->output);
+	drmModeModeInfo drm_mode = get_mode(data->output);
 	enum igt_commit_style commit;
 	struct igt_fb fb, fb_sprite;
 	int ret;
@@ -298,25 +314,27 @@ static bool try_config(data_t *data, enum test_fb_flags fb_flags,
 				      data->ccs_modifier))
 		return false;
 
+	igt_output_override_mode(data->output, &drm_mode);
+
 	if (data->plane && fb_flags & FB_COMPRESSED) {
 		if (!igt_plane_has_format_mod(data->plane, data->format,
 					      data->ccs_modifier))
 			return false;
 
-		generate_fb(data, &fb, min(MAX_SPRITE_PLANE_WIDTH, drm_mode->hdisplay),
-			    drm_mode->vdisplay,
+		generate_fb(data, &fb, min(MAX_SPRITE_PLANE_WIDTH, drm_mode.hdisplay),
+			    drm_mode.vdisplay,
 			    (fb_flags & ~FB_COMPRESSED) | FB_HAS_PLANE);
 		generate_fb(data, &fb_sprite, 256, 256, fb_flags);
 	} else {
-		generate_fb(data, &fb, min(MAX_SPRITE_PLANE_WIDTH, drm_mode->hdisplay),
-			    drm_mode->vdisplay, fb_flags);
+		generate_fb(data, &fb, min(MAX_SPRITE_PLANE_WIDTH, drm_mode.hdisplay),
+			    drm_mode.vdisplay, fb_flags);
 	}
 
 	if (data->flags & TEST_FAIL_ON_ADDFB2)
 		return true;
 
 	igt_plane_set_position(primary, 0, 0);
-	igt_plane_set_size(primary, drm_mode->hdisplay, drm_mode->vdisplay);
+	igt_plane_set_size(primary, drm_mode.hdisplay, drm_mode.vdisplay);
 	igt_plane_set_fb(primary, &fb);
 
 	if (data->plane && fb_flags & FB_COMPRESSED) {
-- 
2.17.1



More information about the igt-dev mailing list