[igt-dev] [i-g-t v5 06/52] tests/kms_atomic_transition: Add support for Bigjoiner

Gupta, Nidhi1 nidhi1.gupta at intel.com
Wed Dec 28 03:39:34 UTC 2022


On Tue, 2022-11-15 at 04:43 +0530, Bhanuprakash Modem wrote:
>This patch will add a check to Skip the subtest if a selected pipe/output
>combo won't support Bigjoiner or 8K mode.
>
>Example:
>* Pipe-D wont support a mode > 5K
>* To use 8K mode on a pipe then consecutive pipe must be available & free.
>
>V2: - Use updated helper name
>
>Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem at intel.com>
Reviewed-by: Nidhi Gupta <nidhi1.gupta at intel.com>
>---
 >tests/kms_atomic_transition.c | 50 ++++++++++++++++++++++++++++++++---
 >1 file changed, 46 insertions(+), 4 deletions(-)
>diff --git a/tests/kms_atomic_transition.c b/tests/kms_atomic_transition.c
>index 6d2ebbbf..5285585f 100644
>--- a/tests/kms_atomic_transition.c
>+++ b/tests/kms_atomic_transition.c
>@@ -68,6 +68,10 @@  run_primary_test(data_t *data, enum pipe pipe, igt_output_t *output)
> 	unsigned flags = DRM_MODE_ATOMIC_TEST_ONLY | DRM_MODE_ATOMIC_ALLOW_MODESET;
> 
> 	igt_display_reset(&data->display);
>+
>+	igt_info("Using (pipe %s + %s) to run the subtest.\n",
>+		 kmstest_pipe_name(pipe), igt_output_name(output));
>+
> 	igt_output_set_pipe(output, pipe);
> 	primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
> 
>@@ -487,6 +491,9 @@  run_transition_test(data_t *data, enum pipe pipe, igt_output_t *output,
> 	unsigned flags = 0;
>	int ret;
> 
>+	igt_info("Using (pipe %s + %s) to run the subtest.\n",
>+		 kmstest_pipe_name(pipe), igt_output_name(output));
>+
> 	if (fencing)
> 		prepare_fencing(data, pipe);
> 	else
>@@ -753,8 +760,13 @@  static unsigned set_combinations(data_t *data, unsigned mask, struct igt_fb *fb)
> 			if (output->pending_pipe != PIPE_NONE)
> 				continue;
> 
>-			mode = igt_output_get_mode(output);
>-			break;
>+			igt_output_set_pipe(output, pipe);
>+			if (i915_pipe_output_combo_valid(&data->display)) {
>+				mode = igt_output_get_mode(output);
>+				break;
>+			} else {
>+				igt_output_set_pipe(output, PIPE_NONE);
>+			}
> 		}
> 
> 		if (!mode)
>@@ -840,8 +852,17 @@  retry:
> 				continue;
> 
> 			igt_output_set_pipe(output, i);
>-			mode = igt_output_get_mode(output);
>-			break;
>+			if (i915_pipe_output_combo_valid(&data->display)) {
>+				mode = igt_output_get_mode(output);
>+
>+				igt_info("(pipe %s + %s), mode:",
>+					 kmstest_pipe_name(i), igt_output_name(output));
>+				kmstest_dump_mode(mode);
>+
>+				break;
>+			} else {
>+				igt_output_set_pipe(output, PIPE_NONE);
>+			}
> 		}
> 
> 		if (mode) {
>@@ -980,6 +1001,21 @@  static void run_modeset_transition(data_t *data, int requested_outputs, bool non
> 	igt_remove_fb(data->drm_fd, &data->fbs[1]);
>}
> 
>+static bool pipe_output_combo_valid(igt_display_t *display,
>+				    enum pipe pipe, igt_output_t *output)
>+{
>+	bool ret = true;
>+
>+	igt_display_reset(display);
>+
>+	igt_output_set_pipe(output, pipe);
>+	if (!i915_pipe_output_combo_valid(display))
>+		ret = false;
>+	igt_output_set_pipe(output, PIPE_NONE);
>+
>+	return ret;
>+}
>+
>static int opt_handler(int opt, int opt_index, void *_data)
>{
> 	data_t *data = _data;
>@@ -1079,6 +1115,9 @@  igt_main_args("", long_opts, help_str, opt_handler, &data)
> 			if (pipe_count == 2 * count && !data.extended)
> 				break;
> 
>+			if (!pipe_output_combo_valid(&data.display, pipe, output))
>+				continue;
>+
> 			pipe_count++;
> 			igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), igt_output_name(output))
> 				run_primary_test(&data, pipe, output);
>@@ -1108,6 +1147,9 @@  igt_main_args("", long_opts, help_str, opt_handler, &data)
> 				if (pipe_count == 2 * count && !data.extended)
> 					break;
> 
>+				if (!pipe_output_combo_valid(&data.display, pipe, output))
>+					continue;
>+
> 				pipe_count++;
> 				igt_dynamic_f("pipe-%s-%s",
> 					      kmstest_pipe_name(pipe),


More information about the igt-dev mailing list