[PATCH i-g-t 3/3] tests/intel/kms_dirtyfb: Ensure that enabling feature is possible

Jouni Högander jouni.hogander at intel.com
Mon Mar 25 16:53:49 UTC 2024


In certain cases feature support is informed, but it doesn't get enabled
due to some limitations. This is causing failures which are actually just
expected behaviour. Fix this by checking if feature can be really enabled
and do not add dynamic test if it can't be added.

Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/9737
Signed-off-by: Jouni Högander <jouni.hogander at intel.com>
---
 tests/intel/kms_dirtyfb.c | 62 +++++++++++++++++++++------------------
 1 file changed, 33 insertions(+), 29 deletions(-)

diff --git a/tests/intel/kms_dirtyfb.c b/tests/intel/kms_dirtyfb.c
index a39f78757..6aadbfbb6 100644
--- a/tests/intel/kms_dirtyfb.c
+++ b/tests/intel/kms_dirtyfb.c
@@ -96,35 +96,6 @@ static const char *feature_str(int feature)
 	}
 }
 
-static bool check_support(data_t *data)
-{
-	bool supported = false;
-
-	switch (data->feature) {
-	case FEATURE_NONE:
-	case FEATURE_DEFAULT:
-		supported = true;
-		break;
-	case FEATURE_FBC:
-		supported = intel_fbc_supported_on_chipset(data->drm_fd, data->pipe);
-		break;
-	case FEATURE_PSR:
-		if (data->output->config.connector->connector_type ==
-		    DRM_MODE_CONNECTOR_eDP)
-			supported = psr_sink_support(data->drm_fd, data->debugfs_fd,
-					PSR_MODE_1, NULL);
-		break;
-	case FEATURE_DRRS:
-		supported = intel_is_drrs_supported(data->drm_fd, data->pipe) &&
-			intel_output_has_drrs(data->drm_fd, data->output);
-		break;
-	default:
-		igt_assert(false);
-	}
-
-	return supported;
-}
-
 static void enable_feature(data_t *data)
 {
 	switch (data->feature) {
@@ -246,6 +217,39 @@ static void cleanup(data_t *data)
 	igt_display_commit2(&data->display, COMMIT_ATOMIC);
 }
 
+static bool check_support(data_t *data)
+{
+	bool supported = false;
+
+	switch (data->feature) {
+	case FEATURE_NONE:
+	case FEATURE_DEFAULT:
+		supported = true;
+		break;
+	case FEATURE_FBC:
+		supported = intel_fbc_supported_on_chipset(data->drm_fd, data->pipe);
+		break;
+	case FEATURE_PSR:
+		if (data->output->config.connector->connector_type ==
+		    DRM_MODE_CONNECTOR_eDP)
+			supported = psr_sink_support(data->drm_fd, data->debugfs_fd,
+					PSR_MODE_1, NULL);
+		break;
+	case FEATURE_DRRS:
+		supported = intel_is_drrs_supported(data->drm_fd, data->pipe) &&
+			intel_output_has_drrs(data->drm_fd, data->output);
+		break;
+	default:
+		igt_assert(false);
+	}
+
+	prepare(data);
+	supported = check_feature(data);
+	cleanup(data);
+
+	return supported;
+}
+
 static void run_test(data_t *data)
 {
 	igt_crc_t crc;
-- 
2.34.1



More information about the Intel-gfx-trybot mailing list