All of lore.kernel.org
 help / color / mirror / Atom feed
* [igt-dev] [i-g-t V2 00/52] Add IGT support for Bigjoiner
@ 2022-09-06  9:49 Bhanuprakash Modem
  2022-09-06  9:49 ` [igt-dev] [i-g-t V2 01/52] lib/igt_kms: Add a helper for igt test constraint Bhanuprakash Modem
                   ` (53 more replies)
  0 siblings, 54 replies; 58+ messages in thread
From: Bhanuprakash Modem @ 2022-09-06  9:49 UTC (permalink / raw)
  To: igt-dev

Add IGT support for bigjoiner:
* Pipe-D won't support mode > 5K
* To use 8K mode on a pipe then consecutive pipe must be available & free.

V2: - Rebase

Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>

Bhanuprakash Modem (52):
  lib/igt_kms: Add a helper for igt test constraint
  lib/igt_kms: Bigjoiner check in max_bpc constraint
  tests/kms_async_flips: Add support for Bigjoiner
  tests/kms_atomic: Add support for Bigjoiner
  tests/kms_atomic_interruptible: Add support for Bigjoiner
  tests/kms_atomic_transition: Add support for Bigjoiner
  tests/kms_color_helper: Helper to check Bigjoiner constraint
  tests/kms_color: Add support for Bigjoiner
  tests/chamelium/kms_color_chamelium: Add support for Bigjoiner
  tests/kms_concurrent: Add support for Bigjoiner
  tests/kms_content_protection: Add support for Bigjoiner
  tests/kms_cursor_crc: Add support for Bigjoiner
  tests/kms_cursor_edge_walk: Add support for Bigjoiner
  tests/kms_cursor_legacy: Add support for Bigjoiner
  tests/kms_display_modes: Add support for Bigjoiner
  tests/kms_dp_tiled_display: Add support for Bigjoiner
  tests/kms_flip_event_leak: Add support for Bigjoiner
  tests/kms_invalid_mode: Add support for Bigjoiner
  tests/kms_lease: Add support for Bigjoiner
  tests/kms_multipipe_modeset: Find the suitable mode instead of using
    default
  tests/kms_pipe_crc_basic: Add support for Bigjoiner
  tests/kms_plane: Add support for Bigjoiner
  tests/kms_plane_alpha_blend: Add support for Bigjoiner
  tests/kms_plane_cursor: Add support for Bigjoiner
  tests/kms_plane_lowres: Add support for Bigjoiner
  tests/kms_plane_multiple: Add support for Bigjoiner
  tests/kms_plane_scaling: Add support for Bigjoiner
  tests/kms_prime: Add support for Bigjoiner
  tests/kms_properties: Add support for Bigjoiner
  tests/kms_rmfb: Add support for Bigjoiner
  tests/kms_rotation_crc: Add support for Bigjoiner
  tests/kms_scaling_modes: Add support for Bigjoiner
  tests/kms_sequence: Add support for Bigjoiner
  tests/kms_universal_plane: Add support for Bigjoiner
  tests/kms_vblank: Add support for Bigjoiner
  tests/kms_vrr: Add support for Bigjoiner
  tests/i915/kms_big_fb: Add support for Bigjoiner
  tests/i915/kms_big_joiner: Negative tests for Bigjoiner
  tests/i915/kms_busy: Add support for Bigjoiner
  tests/i915/kms_ccs: Add support for Bigjoiner
  tests/i915/kms_cdclk: Add support for Bigjoiner
  tests/i915/kms_draw_crc: Add support for Bigjoiner
  tests/i915/kms_fence_pin_leak: Add support for Bigjoiner
  tests/i915/kms_flip_scaled_crc: Add support for Bigjoiner
  tests/i915/kms_flip_tiling: Add support for Bigjoiner
  tests/i915/kms_frontbuffer_tracking: Add support for Bigjoiner
  tests/i915/kms_mmap_write_crc: Add support for Bigjoiner
  tests/i915/kms_psr2_sf: Add support for Bigjoiner
  tests/i915/kms_psr2_su: Add support for Bigjoiner
  tests/i915/kms_psr: Add support for Bigjoiner
  tests/i915/kms_psr_stress_test: Add support for Bigjoiner
  tests/i915/kms_pwrite_crc: Add support for Bigjoiner

 lib/igt_kms.c                         |  44 ++++++
 lib/igt_kms.h                         |   1 +
 tests/chamelium/kms_color_chamelium.c |   9 ++
 tests/i915/kms_big_fb.c               |  13 ++
 tests/i915/kms_big_joiner.c           | 118 +++++++++++---
 tests/i915/kms_busy.c                 | 104 ++++++++----
 tests/i915/kms_ccs.c                  |  18 ++-
 tests/i915/kms_cdclk.c                |  93 ++++++-----
 tests/i915/kms_draw_crc.c             |  11 +-
 tests/i915/kms_fence_pin_leak.c       |   9 ++
 tests/i915/kms_flip_scaled_crc.c      |  13 +-
 tests/i915/kms_flip_tiling.c          |   7 +
 tests/i915/kms_frontbuffer_tracking.c |  16 +-
 tests/i915/kms_mmap_write_crc.c       |   6 +
 tests/i915/kms_psr.c                  |   4 +
 tests/i915/kms_psr2_sf.c              |   7 +
 tests/i915/kms_psr2_su.c              |   7 +
 tests/i915/kms_psr_stress_test.c      |   8 +-
 tests/i915/kms_pwrite_crc.c           |   7 +
 tests/kms_async_flips.c               |  24 ++-
 tests/kms_atomic.c                    |  32 +++-
 tests/kms_atomic_interruptible.c      |  40 +++++
 tests/kms_atomic_transition.c         | 142 ++++++++++++++---
 tests/kms_color.c                     |   9 +-
 tests/kms_color_helper.c              |  12 ++
 tests/kms_color_helper.h              |   1 +
 tests/kms_concurrent.c                |  10 +-
 tests/kms_content_protection.c        |  17 ++
 tests/kms_cursor_crc.c                |  47 +++++-
 tests/kms_cursor_edge_walk.c          |   6 +
 tests/kms_cursor_legacy.c             | 202 +++++++++++++++---------
 tests/kms_display_modes.c             | 104 +++++++-----
 tests/kms_dp_tiled_display.c          |   1 +
 tests/kms_flip_event_leak.c           |  10 ++
 tests/kms_invalid_mode.c              |   6 +
 tests/kms_lease.c                     |   6 +
 tests/kms_multipipe_modeset.c         |   9 ++
 tests/kms_pipe_crc_basic.c            |  24 +++
 tests/kms_plane.c                     |  30 ++--
 tests/kms_plane_alpha_blend.c         |   7 +
 tests/kms_plane_cursor.c              |   8 +-
 tests/kms_plane_lowres.c              |   3 +
 tests/kms_plane_multiple.c            |  15 +-
 tests/kms_plane_scaling.c             | 217 +++++++++++++++++---------
 tests/kms_prime.c                     |  11 +-
 tests/kms_properties.c                |  18 +++
 tests/kms_rmfb.c                      |  10 +-
 tests/kms_rotation_crc.c              |  25 ++-
 tests/kms_scaling_modes.c             |   8 +-
 tests/kms_sequence.c                  |   6 +
 tests/kms_universal_plane.c           |  93 +++++++++--
 tests/kms_vblank.c                    |  53 ++++++-
 tests/kms_vrr.c                       |   6 +
 53 files changed, 1316 insertions(+), 391 deletions(-)

--
2.35.1

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

* [igt-dev] [i-g-t V2 01/52] lib/igt_kms: Add a helper for igt test constraint
  2022-09-06  9:49 [igt-dev] [i-g-t V2 00/52] Add IGT support for Bigjoiner Bhanuprakash Modem
@ 2022-09-06  9:49 ` Bhanuprakash Modem
  2022-09-08 15:21   ` Petri Latvala
  2022-09-06  9:49 ` [igt-dev] [i-g-t V2 02/52] lib/igt_kms: Bigjoiner check in max_bpc constraint Bhanuprakash Modem
                   ` (52 subsequent siblings)
  53 siblings, 1 reply; 58+ messages in thread
From: Bhanuprakash Modem @ 2022-09-06  9:49 UTC (permalink / raw)
  To: igt-dev

Add an IGT helper to check the test constraints to decide whether to run/skip
the subtest.

Example:
* Pipe-D can't support mode > 5K
* To use 8K mode on a pipe then consecutive pipe must be available & free.
* MSO is supported only on PIPE_A/PIPE_B.

This helper is supposed to be a superset of all test constraints. But as of
now, only Intel specific hardware/configuration-related limitations like
Bigjoiner/MSO can go through this helper.

Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 lib/igt_kms.c | 39 +++++++++++++++++++++++++++++++++++++++
 lib/igt_kms.h |  1 +
 2 files changed, 40 insertions(+)

diff --git a/lib/igt_kms.c b/lib/igt_kms.c
index 7d4916a7..3a1bc391 100644
--- a/lib/igt_kms.c
+++ b/lib/igt_kms.c
@@ -5824,3 +5824,42 @@ bool igt_parse_mode_string(const char *mode_string, drmModeModeInfo *mode)
 
 	return true;
 }
+
+/*
+ * igt_test_constraint:
+ * @display: a pointer to an #igt_display_t structure
+ *
+ * Every individual test must use igt_output_set_pipe() before calling this
+ * helper, so that this function will get all active pipes from connected
+ * outputs (i.e. pending_pipe != PIPE_NONE) and check the selected combo is
+ * valid or not.
+ *
+ * This helper is supposed to be a superset of all test constraints.
+ *
+ * Example:
+ *  * Pipe-D can't support mode > 5K
+ *  * To use 8K mode on a pipe then consecutive pipe must be free.
+ *  * MSO is supported only on PIPE_A/PIPE_B.
+ *
+ * Returns: true if a valid crtc/connector mode combo found, else false
+ */
+bool igt_test_constraint(igt_display_t *display)
+{
+	bool result = true;
+
+	/*
+	 * TODO: Add all possible test constraints here.
+	 *
+	 * Intention of this helper is that all kms tests should use this
+	 * helper to decide whether to run/skip the subtest.
+	 *
+	 * As of now, only Intel specific hardware/configuration-related
+	 * limitations like Bigjoiner/MSO are going through this helper.
+	 *
+	 * Please update this helper as per the requirement.
+	 */
+	if (is_i915_device(display->drm_fd))
+		result &= igt_check_bigjoiner_support(display);
+
+	return result;
+}
diff --git a/lib/igt_kms.h b/lib/igt_kms.h
index a2cf0937..82186cfe 100644
--- a/lib/igt_kms.h
+++ b/lib/igt_kms.h
@@ -975,5 +975,6 @@ bool igt_max_bpc_constraint(igt_display_t *display, enum pipe pipe,
 		igt_output_t *output, int bpc);
 bool igt_check_bigjoiner_support(igt_display_t *display);
 bool igt_parse_mode_string(const char *mode_string, drmModeModeInfo *mode);
+bool igt_test_constraint(igt_display_t *display);
 
 #endif /* __IGT_KMS_H__ */
-- 
2.35.1

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

* [igt-dev] [i-g-t V2 02/52] lib/igt_kms: Bigjoiner check in max_bpc constraint
  2022-09-06  9:49 [igt-dev] [i-g-t V2 00/52] Add IGT support for Bigjoiner Bhanuprakash Modem
  2022-09-06  9:49 ` [igt-dev] [i-g-t V2 01/52] lib/igt_kms: Add a helper for igt test constraint Bhanuprakash Modem
@ 2022-09-06  9:49 ` Bhanuprakash Modem
  2022-09-06  9:49 ` [igt-dev] [i-g-t V2 03/52] tests/kms_async_flips: Add support for Bigjoiner Bhanuprakash Modem
                   ` (51 subsequent siblings)
  53 siblings, 0 replies; 58+ messages in thread
From: Bhanuprakash Modem @ 2022-09-06  9:49 UTC (permalink / raw)
  To: igt-dev

There is a possibility of commit failure if the selected pipe/output
won't support Bigjoiner or 8K. So we need to handle this case.

Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 lib/igt_kms.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/lib/igt_kms.c b/lib/igt_kms.c
index 3a1bc391..6d1fcfed 100644
--- a/lib/igt_kms.c
+++ b/lib/igt_kms.c
@@ -5713,6 +5713,11 @@ bool igt_max_bpc_constraint(igt_display_t *display, enum pipe pipe,
 
 	for_each_connector_mode(output) {
 		igt_output_override_mode(output, &connector->modes[j__]);
+
+		if (is_i915_device(display->drm_fd) &&
+		    !igt_check_bigjoiner_support(display))
+			continue;
+
 		igt_display_commit2(display, display->is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY);
 
 		if (!igt_check_output_bpc_equal(display->drm_fd, pipe,
-- 
2.35.1

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

* [igt-dev] [i-g-t V2 03/52] tests/kms_async_flips: Add support for Bigjoiner
  2022-09-06  9:49 [igt-dev] [i-g-t V2 00/52] Add IGT support for Bigjoiner Bhanuprakash Modem
  2022-09-06  9:49 ` [igt-dev] [i-g-t V2 01/52] lib/igt_kms: Add a helper for igt test constraint Bhanuprakash Modem
  2022-09-06  9:49 ` [igt-dev] [i-g-t V2 02/52] lib/igt_kms: Bigjoiner check in max_bpc constraint Bhanuprakash Modem
@ 2022-09-06  9:49 ` Bhanuprakash Modem
  2022-09-06  9:49 ` [igt-dev] [i-g-t V2 04/52] tests/kms_atomic: " Bhanuprakash Modem
                   ` (50 subsequent siblings)
  53 siblings, 0 replies; 58+ messages in thread
From: Bhanuprakash Modem @ 2022-09-06  9:49 UTC (permalink / raw)
  To: igt-dev

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.

Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 tests/kms_async_flips.c | 24 +++++++++++-------------
 1 file changed, 11 insertions(+), 13 deletions(-)

diff --git a/tests/kms_async_flips.c b/tests/kms_async_flips.c
index 695aea74..5609a93d 100644
--- a/tests/kms_async_flips.c
+++ b/tests/kms_async_flips.c
@@ -330,15 +330,6 @@ static void test_cursor(data_t *data)
 	struct igt_fb cursor_fb;
 	struct drm_mode_cursor cur;
 
-	/*
-	 * Intel's PSR2 selective fetch adds other planes to state when
-	 * necessary, causing the async flip to fail because async flip is not
-	 * supported in cursor plane.
-	 */
-	igt_skip_on_f(i915_psr2_selective_fetch_check(data->drm_fd),
-		      "PSR2 sel fetch causes cursor to be added to primary plane " \
-		      "pages flips and async flip is not supported in cursor\n");
-
 	do_or_die(drmGetCap(data->drm_fd, DRM_CAP_CURSOR_WIDTH, &width));
 	do_or_die(drmGetCap(data->drm_fd, DRM_CAP_CURSOR_WIDTH, &height));
 
@@ -380,12 +371,12 @@ static void test_invalid(data_t *data)
 	struct igt_fb fb;
 	drmModeModeInfo *mode;
 
+	test_init(data);
+
 	mode = igt_output_get_mode(data->output);
 	width = mode->hdisplay;
 	height = mode->vdisplay;
 
-	test_init(data);
-
 	igt_create_fb(data->drm_fd, width, height, DRM_FORMAT_XRGB8888,
 		      I915_FORMAT_MOD_Y_TILED, &fb);
 
@@ -542,9 +533,16 @@ static void run_test(data_t *data, void (*test)(data_t *))
 {
 	igt_output_t *output;
 	enum pipe pipe;
+	igt_display_t *display = &data->display;
+
+	for_each_pipe(display, pipe) {
+		for_each_valid_output_on_pipe(display, pipe, output) {
+			igt_display_reset(display);
+
+			igt_output_set_pipe(output, pipe);
+			if (!igt_test_constraint(display))
+				continue;
 
-	for_each_pipe(&data->display, pipe) {
-		for_each_valid_output_on_pipe(&data->display, pipe, output) {
 			igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), output->name) {
 				data->output = output;
 				data->pipe = pipe;
-- 
2.35.1

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

* [igt-dev] [i-g-t V2 04/52] tests/kms_atomic: Add support for Bigjoiner
  2022-09-06  9:49 [igt-dev] [i-g-t V2 00/52] Add IGT support for Bigjoiner Bhanuprakash Modem
                   ` (2 preceding siblings ...)
  2022-09-06  9:49 ` [igt-dev] [i-g-t V2 03/52] tests/kms_async_flips: Add support for Bigjoiner Bhanuprakash Modem
@ 2022-09-06  9:49 ` Bhanuprakash Modem
  2022-09-06  9:49 ` [igt-dev] [i-g-t V2 05/52] tests/kms_atomic_interruptible: " Bhanuprakash Modem
                   ` (49 subsequent siblings)
  53 siblings, 0 replies; 58+ messages in thread
From: Bhanuprakash Modem @ 2022-09-06  9:49 UTC (permalink / raw)
  To: igt-dev

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.

Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 tests/kms_atomic.c | 32 ++++++++++++++++++++++++++++----
 1 file changed, 28 insertions(+), 4 deletions(-)

diff --git a/tests/kms_atomic.c b/tests/kms_atomic.c
index 253829f2..4688a616 100644
--- a/tests/kms_atomic.c
+++ b/tests/kms_atomic.c
@@ -1265,6 +1265,10 @@ static void atomic_plane_damage(igt_pipe_t *pipe, igt_plane_t *plane, struct igt
 
 static void atomic_setup(igt_display_t *display, enum pipe pipe, igt_output_t *output, igt_plane_t *primary, struct igt_fb *fb)
 {
+	igt_info("Using (pipe %s + %s) to run the subtest.\n",
+		 kmstest_pipe_name(pipe), igt_output_name(output));
+
+	igt_display_reset(display);
 	igt_output_set_pipe(output, pipe);
 	igt_plane_set_fb(primary, fb);
 
@@ -1293,6 +1297,7 @@ igt_main
 	igt_plane_t *primary = NULL;
 	drmModeModeInfo *mode;
 	struct igt_fb fb;
+	bool valid_config = false;
 
 	igt_fixture {
 		display.drm_fd = drm_open_driver_master(DRIVER_ANY);
@@ -1303,8 +1308,16 @@ igt_main
 		igt_require(display.is_atomic);
 		igt_display_require_output(&display);
 
-		for_each_pipe_with_valid_output(&display, pipe, output)
-			break;
+		for_each_pipe_with_valid_output(&display, pipe, output) {
+			igt_display_reset(&display);
+
+			igt_output_set_pipe(output, pipe);
+			if (igt_test_constraint(&display)) {
+				valid_config = true;
+				break;
+			}
+		}
+		igt_require(valid_config);
 
 		pipe_obj = &display.pipes[pipe];
 		primary = igt_pipe_get_plane_type(pipe_obj, DRM_PLANE_TYPE_PRIMARY);
@@ -1342,9 +1355,13 @@ igt_main
 	igt_subtest("plane-primary-overlay-mutable-zpos") {
 		uint32_t format_primary = DRM_FORMAT_ARGB8888;
 		uint32_t format_overlay = DRM_FORMAT_ARGB1555;
+		igt_plane_t *overlay;
 
-		igt_plane_t *overlay =
-			igt_pipe_get_plane_type(pipe_obj, DRM_PLANE_TYPE_OVERLAY);
+		igt_info("Using (pipe %s + %s) to run the subtest.\n",
+			 kmstest_pipe_name(pipe), igt_output_name(output));
+
+		igt_display_reset(&display);
+		overlay = igt_pipe_get_plane_type(pipe_obj, DRM_PLANE_TYPE_OVERLAY);
 		igt_require(overlay);
 
 		igt_require(igt_plane_has_prop(primary, IGT_PLANE_ZPOS));
@@ -1361,6 +1378,10 @@ igt_main
 	igt_describe("Verify the reported zpos property of planes by making sure "\
 		     "only higher zpos planes cover the lower zpos ones.");
 	igt_subtest("plane-immutable-zpos") {
+		igt_info("Using (pipe %s + %s) to run the subtest.\n",
+			 kmstest_pipe_name(pipe), igt_output_name(output));
+
+		igt_display_reset(&display);
 		igt_output_set_pipe(output, pipe);
 		plane_immutable_zpos(&display, pipe_obj, output);
 	}
@@ -1370,6 +1391,9 @@ igt_main
 	igt_subtest("test-only") {
 		atomic_clear(&display, pipe, primary, output);
 
+		igt_info("Using (pipe %s + %s) to run the subtest.\n",
+			 kmstest_pipe_name(pipe), igt_output_name(output));
+
 		test_only(pipe_obj, primary, output);
 	}
 
-- 
2.35.1

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

* [igt-dev] [i-g-t V2 05/52] tests/kms_atomic_interruptible: Add support for Bigjoiner
  2022-09-06  9:49 [igt-dev] [i-g-t V2 00/52] Add IGT support for Bigjoiner Bhanuprakash Modem
                   ` (3 preceding siblings ...)
  2022-09-06  9:49 ` [igt-dev] [i-g-t V2 04/52] tests/kms_atomic: " Bhanuprakash Modem
@ 2022-09-06  9:49 ` Bhanuprakash Modem
  2022-09-06  9:49 ` [igt-dev] [i-g-t V2 06/52] tests/kms_atomic_transition: " Bhanuprakash Modem
                   ` (48 subsequent siblings)
  53 siblings, 0 replies; 58+ messages in thread
From: Bhanuprakash Modem @ 2022-09-06  9:49 UTC (permalink / raw)
  To: igt-dev

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.

Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 tests/kms_atomic_interruptible.c | 40 ++++++++++++++++++++++++++++++++
 1 file changed, 40 insertions(+)

diff --git a/tests/kms_atomic_interruptible.c b/tests/kms_atomic_interruptible.c
index 038cb286..0dd293a1 100644
--- a/tests/kms_atomic_interruptible.c
+++ b/tests/kms_atomic_interruptible.c
@@ -82,11 +82,15 @@ static void run_plane_test(igt_display_t *display, enum pipe pipe, igt_output_t
 	igt_plane_t *primary, *plane;
 	int block;
 
+	igt_info("Using (pipe %s + %s) to run the subtest.\n",
+		 kmstest_pipe_name(pipe), igt_output_name(output));
+
 	/*
 	 * Make sure we start with everything disabled to force a real modeset.
 	 * igt_display_require only sets sw state, and assumes the first test
 	 * doesn't care about hw state.
 	 */
+	igt_display_reset(display);
 	igt_display_commit2(display, COMMIT_ATOMIC);
 
 	igt_output_set_pipe(output, pipe);
@@ -265,6 +269,21 @@ static void run_plane_test(igt_display_t *display, enum pipe pipe, igt_output_t
 	igt_remove_fb(display->drm_fd, &fb);
 }
 
+static bool is_valid_combo(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 (!igt_test_constraint(display))
+		ret = false;
+	igt_output_set_pipe(output, PIPE_NONE);
+
+	return ret;
+}
+
 igt_main
 {
 	igt_display_t display;
@@ -286,6 +305,9 @@ igt_main
 	igt_describe("Tests the interrupt properties of legacy modeset");
 	igt_subtest_with_dynamic("legacy-setmode") {
 		for_each_pipe_with_valid_output(&display, pipe, output) {
+			if (!is_valid_combo(&display, pipe, output))
+				continue;
+
 			igt_dynamic_f("%s-pipe-%s", igt_output_name(output), kmstest_pipe_name(pipe))
 				run_plane_test(&display, pipe, output, test_legacy_modeset, DRM_PLANE_TYPE_PRIMARY);
 			break;
@@ -295,6 +317,9 @@ igt_main
 	igt_describe("Tests the interrupt properties of atomic modeset");
 	igt_subtest_with_dynamic("atomic-setmode") {
 		for_each_pipe_with_valid_output(&display, pipe, output) {
+			if (!is_valid_combo(&display, pipe, output))
+				continue;
+
 			igt_dynamic_f("%s-pipe-%s", igt_output_name(output), kmstest_pipe_name(pipe))
 				run_plane_test(&display, pipe, output, test_atomic_modeset, DRM_PLANE_TYPE_PRIMARY);
 			break;
@@ -304,6 +329,9 @@ igt_main
 	igt_describe("Tests the interrupt properties for DPMS");
 	igt_subtest_with_dynamic("legacy-dpms") {
 		for_each_pipe_with_valid_output(&display, pipe, output) {
+			if (!is_valid_combo(&display, pipe, output))
+				continue;
+
 			igt_dynamic_f("%s-pipe-%s", igt_output_name(output), kmstest_pipe_name(pipe))
 				run_plane_test(&display, pipe, output, test_legacy_dpms, DRM_PLANE_TYPE_PRIMARY);
 			break;
@@ -313,6 +341,9 @@ igt_main
 	igt_describe("Tests the interrupt properties for pageflip");
 	igt_subtest_with_dynamic("legacy-pageflip") {
 		for_each_pipe_with_valid_output(&display, pipe, output) {
+			if (!is_valid_combo(&display, pipe, output))
+				continue;
+
 			igt_dynamic_f("%s-pipe-%s", igt_output_name(output), kmstest_pipe_name(pipe))
 				run_plane_test(&display, pipe, output, test_pageflip, DRM_PLANE_TYPE_PRIMARY);
 			break;
@@ -322,6 +353,9 @@ igt_main
 	igt_describe("Tests the interrupt properties for cursor");
 	igt_subtest_with_dynamic("legacy-cursor") {
 		for_each_pipe_with_valid_output(&display, pipe, output) {
+			if (!is_valid_combo(&display, pipe, output))
+				continue;
+
 			igt_dynamic_f("%s-pipe-%s", igt_output_name(output), kmstest_pipe_name(pipe))
 				run_plane_test(&display, pipe, output, test_setcursor, DRM_PLANE_TYPE_CURSOR);
 			break;
@@ -331,6 +365,9 @@ igt_main
 	igt_describe("Tests the interrupt properties for primary plane");
 	igt_subtest_with_dynamic("universal-setplane-primary") {
 		for_each_pipe_with_valid_output(&display, pipe, output) {
+			if (!is_valid_combo(&display, pipe, output))
+				continue;
+
 			igt_dynamic_f("%s-pipe-%s", igt_output_name(output), kmstest_pipe_name(pipe))
 				run_plane_test(&display, pipe, output, test_setplane, DRM_PLANE_TYPE_PRIMARY);
 			break;
@@ -340,6 +377,9 @@ igt_main
 	igt_describe("Tests the interrupt properties for cursor plane");
 	igt_subtest_with_dynamic("universal-setplane-cursor") {
 		for_each_pipe_with_valid_output(&display, pipe, output) {
+			if (!is_valid_combo(&display, pipe, output))
+				continue;
+
 			igt_dynamic_f("%s-pipe-%s", igt_output_name(output), kmstest_pipe_name(pipe))
 				run_plane_test(&display, pipe, output, test_setplane, DRM_PLANE_TYPE_CURSOR);
 			break;
-- 
2.35.1

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

* [igt-dev] [i-g-t V2 06/52] tests/kms_atomic_transition: Add support for Bigjoiner
  2022-09-06  9:49 [igt-dev] [i-g-t V2 00/52] Add IGT support for Bigjoiner Bhanuprakash Modem
                   ` (4 preceding siblings ...)
  2022-09-06  9:49 ` [igt-dev] [i-g-t V2 05/52] tests/kms_atomic_interruptible: " Bhanuprakash Modem
@ 2022-09-06  9:49 ` Bhanuprakash Modem
  2022-09-06  9:49 ` [igt-dev] [i-g-t V2 07/52] tests/kms_color_helper: Helper to check Bigjoiner constraint Bhanuprakash Modem
                   ` (47 subsequent siblings)
  53 siblings, 0 replies; 58+ messages in thread
From: Bhanuprakash Modem @ 2022-09-06  9:49 UTC (permalink / raw)
  To: igt-dev

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.

Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 tests/kms_atomic_transition.c | 142 ++++++++++++++++++++++++++++------
 1 file changed, 120 insertions(+), 22 deletions(-)

diff --git a/tests/kms_atomic_transition.c b/tests/kms_atomic_transition.c
index 10b21c92..8b8c5079 100644
--- a/tests/kms_atomic_transition.c
+++ b/tests/kms_atomic_transition.c
@@ -66,6 +66,9 @@ run_primary_test(data_t *data, enum pipe pipe, igt_output_t *output)
 	int i, ret;
 	unsigned flags = DRM_MODE_ATOMIC_TEST_ONLY | DRM_MODE_ATOMIC_ALLOW_MODESET;
 
+	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);
 
@@ -490,6 +493,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
@@ -755,8 +761,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 (igt_test_constraint(&data->display)) {
+				mode = igt_output_get_mode(output);
+				break;
+			} else {
+				igt_output_set_pipe(output, PIPE_NONE);
+			}
 		}
 
 		if (!mode)
@@ -843,8 +854,17 @@ retry:
 				continue;
 
 			igt_output_set_pipe(output, i);
-			mode = igt_output_get_mode(output);
-			break;
+			if (igt_test_constraint(&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) {
@@ -979,6 +999,21 @@ static void run_modeset_transition(data_t *data, int requested_outputs, bool non
 	run_modeset_tests(data, requested_outputs, nonblocking, fencing);
 }
 
+static bool is_valid_combo(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 (!igt_test_constraint(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;
@@ -1025,94 +1060,131 @@ igt_main_args("", long_opts, help_str, opt_handler, &data)
 
 	igt_describe("Check toggling of primary plane with vblank");
 	igt_subtest("plane-primary-toggle-with-vblank-wait") {
+		bool found = false;
+
+		pipe_count = 0;
 		for_each_pipe_with_valid_output(&data.display, pipe, output) {
 			if (pipe_count == 2 * count && !data.extended)
 				break;
+
+			if (!is_valid_combo(&data.display, pipe, output))
+				continue;
+
 			pipe_count++;
+			found = true;
 			run_primary_test(&data, pipe, output);
-
 		}
-		pipe_count = 0;
+		igt_require(found);
 	}
 
 	igt_describe("Transition test for all plane combinations");
 	igt_subtest_with_dynamic("plane-all-transition") {
+		pipe_count = 0;
+
 		for_each_pipe_with_valid_output(&data.display, pipe, output) {
 			if (pipe_count == 2 * count && !data.extended)
 				break;
+
+			if (!is_valid_combo(&data.display, pipe, output))
+				continue;
+
 			pipe_count++;
 			igt_dynamic_f("%s-pipe-%s", igt_output_name(output), kmstest_pipe_name(pipe))
 				run_transition_test(&data, pipe, output, TRANSITION_PLANES, false, false);
 			test_cleanup(&data, pipe, output, false);
 		}
-		pipe_count = 0;
 	}
 
 	igt_describe("Transition test for all plane combinations with fencing commit");
 	igt_subtest_with_dynamic("plane-all-transition-fencing") {
+		pipe_count = 0;
+
 		for_each_pipe_with_valid_output(&data.display, pipe, output) {
 			if (pipe_count == 2 * count && !data.extended)
 				break;
+
+			if (!is_valid_combo(&data.display, pipe, output))
+				continue;
+
 			pipe_count++;
 			igt_dynamic_f("%s-pipe-%s", igt_output_name(output), kmstest_pipe_name(pipe))
 				run_transition_test(&data, pipe, output, TRANSITION_PLANES, false, true);
 			test_cleanup(&data, pipe, output, true);
 		}
-		pipe_count = 0;
 	}
 
 	igt_describe("Transition test for all plane combinations with nonblocking commit");
 	igt_subtest_with_dynamic("plane-all-transition-nonblocking") {
+		pipe_count = 0;
+
 		for_each_pipe_with_valid_output(&data.display, pipe, output) {
 			if (pipe_count == 2 * count && !data.extended)
 				break;
+
+			if (!is_valid_combo(&data.display, pipe, output))
+				continue;
+
 			pipe_count++;
 			igt_dynamic_f("%s-pipe-%s", igt_output_name(output), kmstest_pipe_name(pipe))
 				run_transition_test(&data, pipe, output, TRANSITION_PLANES, true, false);
 			test_cleanup(&data, pipe, output, false);
 		}
-		pipe_count = 0;
 	}
 
 	igt_describe("Transition test for all plane combinations with nonblocking and fencing commit");
 	igt_subtest_with_dynamic("plane-all-transition-nonblocking-fencing") {
+		pipe_count = 0;
+
 		for_each_pipe_with_valid_output(&data.display, pipe, output) {
 			if (pipe_count == 2 * count && !data.extended)
 				break;
+
+			if (!is_valid_combo(&data.display, pipe, output))
+				continue;
+
 			pipe_count++;
 			igt_dynamic_f("%s-pipe-%s", igt_output_name(output), kmstest_pipe_name(pipe))
 				run_transition_test(&data, pipe, output, TRANSITION_PLANES, true, true);
 			test_cleanup(&data, pipe, output, true);
 		}
-		pipe_count = 0;
 	}
 
 	igt_describe("Transition test with non blocking commit and make sure commit of disabled plane has "
 		       "to complete before atomic commit on that plane");
 	igt_subtest_with_dynamic("plane-use-after-nonblocking-unbind") {
+		pipe_count = 0;
+
 		for_each_pipe_with_valid_output(&data.display, pipe, output) {
 			if (pipe_count == 2 * count && !data.extended)
 				break;
+
+			if (!is_valid_combo(&data.display, pipe, output))
+				continue;
+
 			pipe_count++;
 			igt_dynamic_f("%s-pipe-%s", igt_output_name(output), kmstest_pipe_name(pipe))
 				run_transition_test(&data, pipe, output, TRANSITION_AFTER_FREE, true, false);
 			test_cleanup(&data, pipe, output, false);
 		}
-		pipe_count = 0;
 	}
 
 	igt_describe("Transition test with non blocking and fencing commit and make sure commit of "
 		       "disabled plane has to complete before atomic commit on that plane");
 	igt_subtest_with_dynamic("plane-use-after-nonblocking-unbind-fencing") {
+		pipe_count = 0;
+
 		for_each_pipe_with_valid_output(&data.display, pipe, output) {
 			if (pipe_count == 2 * count && !data.extended)
 				break;
+
+			if (!is_valid_combo(&data.display, pipe, output))
+				continue;
+
 			pipe_count++;
 			igt_dynamic_f("%s-pipe-%s", igt_output_name(output), kmstest_pipe_name(pipe))
 				run_transition_test(&data, pipe, output, TRANSITION_AFTER_FREE, true, true);
 			test_cleanup(&data, pipe, output, true);
 		}
-		pipe_count = 0;
 	}
 
 	/*
@@ -1122,78 +1194,104 @@ igt_main_args("", long_opts, help_str, opt_handler, &data)
 	 */
 	igt_describe("Modeset test for all plane combinations");
 	igt_subtest_with_dynamic("plane-all-modeset-transition") {
+		pipe_count = 0;
+
 		for_each_pipe_with_valid_output(&data.display, pipe, output) {
 			if (pipe_count == 2 * count && !data.extended)
 				break;
-			pipe_count++;
+
 			if (output_is_internal_panel(output))
 				continue;
 
+			if (!is_valid_combo(&data.display, pipe, output))
+				continue;
+
+			pipe_count++;
 			igt_dynamic_f("%s-pipe-%s", igt_output_name(output), kmstest_pipe_name(pipe))
 				run_transition_test(&data, pipe, output, TRANSITION_MODESET, false, false);
 			test_cleanup(&data, pipe, output, false);
 		}
-		pipe_count = 0;
 	}
 
 	igt_describe("Modeset test for all plane combinations with fencing commit");
 	igt_subtest_with_dynamic("plane-all-modeset-transition-fencing") {
+		pipe_count = 0;
+
 		for_each_pipe_with_valid_output(&data.display, pipe, output) {
 			if (pipe_count == 2 * count && !data.extended)
 				break;
-			pipe_count++;
+
 			if (output_is_internal_panel(output))
 				continue;
 
+			if (!is_valid_combo(&data.display, pipe, output))
+				continue;
+
+			pipe_count++;
 			igt_dynamic_f("%s-pipe-%s", igt_output_name(output), kmstest_pipe_name(pipe))
 				run_transition_test(&data, pipe, output, TRANSITION_MODESET, false, true);
 			test_cleanup(&data, pipe, output, true);
 		}
-		pipe_count = 0;
 	}
 
 	igt_describe("Modeset test for all plane combinations on internal panels");
 	igt_subtest_with_dynamic("plane-all-modeset-transition-internal-panels") {
+		pipe_count = 0;
+
 		for_each_pipe_with_valid_output(&data.display, pipe, output) {
 			if (pipe_count == 2 * count && !data.extended)
 				break;
-			pipe_count++;
+
 			if (!output_is_internal_panel(output))
 				continue;
 
+			if (!is_valid_combo(&data.display, pipe, output))
+				continue;
+
+			pipe_count++;
 			igt_dynamic_f("%s-pipe-%s", igt_output_name(output), kmstest_pipe_name(pipe))
 				run_transition_test(&data, pipe, output, TRANSITION_MODESET_FAST, false, false);
 			test_cleanup(&data, pipe, output, false);
 		}
-		pipe_count = 0;
 	}
 
 	igt_describe("Modeset test for all plane combinations on internal panels with fencing commit");
 	igt_subtest_with_dynamic("plane-all-modeset-transition-fencing-internal-panels") {
+		pipe_count = 0;
+
 		for_each_pipe_with_valid_output(&data.display, pipe, output) {
 			if (pipe_count == 2 * count && !data.extended)
 				break;
-			pipe_count++;
+
 			if (!output_is_internal_panel(output))
 				continue;
 
+			if (!is_valid_combo(&data.display, pipe, output))
+				continue;
+
+			pipe_count++;
 			igt_dynamic_f("%s-pipe-%s", igt_output_name(output), kmstest_pipe_name(pipe))
 				run_transition_test(&data, pipe, output, TRANSITION_MODESET_FAST, false, true);
 			test_cleanup(&data, pipe, output, true);
 		}
-		pipe_count = 0;
 	}
 
 	igt_describe("Check toggling and modeset transition on plane");
 	igt_subtest("plane-toggle-modeset-transition") {
+		pipe_count = 0;
+
 		for_each_pipe_with_valid_output(&data.display, pipe, output) {
 			if (pipe_count == 2 * count && !data.extended)
 				break;
+
+			if (!is_valid_combo(&data.display, pipe, output))
+				continue;
+
 			pipe_count++;
-			run_transition_test(&data, pipe, output, TRANSITION_MODESET_DISABLE, false, false);
+			igt_dynamic_f("%s-pipe-%s", igt_output_name(output), kmstest_pipe_name(pipe))
+				run_transition_test(&data, pipe, output, TRANSITION_MODESET_DISABLE, false, false);
 			test_cleanup(&data, pipe, output, false);
 		}
-		pipe_count = 0;
 	}
 
 	igt_describe("Modeset transition tests for combinations of crtc enabled");
-- 
2.35.1

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

* [igt-dev] [i-g-t V2 07/52] tests/kms_color_helper: Helper to check Bigjoiner constraint
  2022-09-06  9:49 [igt-dev] [i-g-t V2 00/52] Add IGT support for Bigjoiner Bhanuprakash Modem
                   ` (5 preceding siblings ...)
  2022-09-06  9:49 ` [igt-dev] [i-g-t V2 06/52] tests/kms_atomic_transition: " Bhanuprakash Modem
@ 2022-09-06  9:49 ` Bhanuprakash Modem
  2022-09-06  9:49 ` [igt-dev] [i-g-t V2 08/52] tests/kms_color: Add support for Bigjoiner Bhanuprakash Modem
                   ` (46 subsequent siblings)
  53 siblings, 0 replies; 58+ messages in thread
From: Bhanuprakash Modem @ 2022-09-06  9:49 UTC (permalink / raw)
  To: igt-dev

Add a helper 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.

Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 tests/kms_color_helper.c | 12 ++++++++++++
 tests/kms_color_helper.h |  1 +
 2 files changed, 13 insertions(+)

diff --git a/tests/kms_color_helper.c b/tests/kms_color_helper.c
index 55f3e409..a5b45c80 100644
--- a/tests/kms_color_helper.c
+++ b/tests/kms_color_helper.c
@@ -24,6 +24,18 @@
 
 #include "kms_color_helper.h"
 
+bool test_constraint(data_t *data, enum pipe pipe)
+{
+	bool ret = true;
+
+	igt_output_set_pipe(data->output, pipe);
+	if (!igt_test_constraint(&data->display))
+		ret = false;
+	igt_output_set_pipe(data->output, PIPE_NONE);
+
+	return ret;
+}
+
 bool
 panel_supports_deep_color(int drm_fd, char *output_name)
 {
diff --git a/tests/kms_color_helper.h b/tests/kms_color_helper.h
index f0ae30e3..576c2416 100644
--- a/tests/kms_color_helper.h
+++ b/tests/kms_color_helper.h
@@ -69,6 +69,7 @@ typedef struct {
 	color_t coeffs[];
 } gamma_lut_t;
 
+bool test_constraint(data_t *data, enum pipe pipe);
 bool panel_supports_deep_color(int fd, char *output_name);
 uint64_t get_max_bpc(igt_output_t *output);
 void paint_gradient_rectangles(data_t *data,
-- 
2.35.1

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

* [igt-dev] [i-g-t V2 08/52] tests/kms_color: Add support for Bigjoiner
  2022-09-06  9:49 [igt-dev] [i-g-t V2 00/52] Add IGT support for Bigjoiner Bhanuprakash Modem
                   ` (6 preceding siblings ...)
  2022-09-06  9:49 ` [igt-dev] [i-g-t V2 07/52] tests/kms_color_helper: Helper to check Bigjoiner constraint Bhanuprakash Modem
@ 2022-09-06  9:49 ` Bhanuprakash Modem
  2022-09-06  9:49 ` [igt-dev] [i-g-t V2 09/52] tests/chamelium/kms_color_chamelium: " Bhanuprakash Modem
                   ` (45 subsequent siblings)
  53 siblings, 0 replies; 58+ messages in thread
From: Bhanuprakash Modem @ 2022-09-06  9:49 UTC (permalink / raw)
  To: igt-dev

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.

Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 tests/kms_color.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/tests/kms_color.c b/tests/kms_color.c
index c202547e..9b60f1e8 100644
--- a/tests/kms_color.c
+++ b/tests/kms_color.c
@@ -722,9 +722,13 @@ run_gamma_degamma_tests_for_pipe(data_t *data, enum pipe p,
 	data->drm_format = DRM_FORMAT_XRGB8888;
 	data->mode = igt_output_get_mode(data->output);
 
+	if (!test_constraint(data, p))
+		goto out;
+
 	igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(p), data->output->name)
 		igt_assert(test_t(data, data->primary));
 
+out:
 	test_cleanup(data);
 }
 
@@ -752,6 +756,9 @@ run_ctm_tests_for_pipe(data_t *data, enum pipe p,
 	data->drm_format = DRM_FORMAT_XRGB8888;
 	data->mode = igt_output_get_mode(data->output);
 
+	if (!test_constraint(data, p))
+		goto out;
+
 	igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(p), data->output->name) {
 		bool success = false;
 		int i;
@@ -780,6 +787,7 @@ run_ctm_tests_for_pipe(data_t *data, enum pipe p,
 		igt_assert(success);
 	}
 
+out:
 	test_cleanup(data);
 }
 
@@ -820,7 +828,6 @@ run_deep_color_tests_for_pipe(data_t *data, enum pipe p)
 		igt_display_reset(&data->display);
 		igt_output_set_prop_value(output, IGT_CONNECTOR_MAX_BPC, 10);
 		igt_output_set_pipe(output, p);
-		igt_display_commit_atomic(&data->display, DRM_MODE_ATOMIC_ALLOW_MODESET, NULL);
 
 		if (is_i915_device(data->drm_fd) &&
 		    !igt_max_bpc_constraint(&data->display, p, output, 10))
-- 
2.35.1

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

* [igt-dev] [i-g-t V2 09/52] tests/chamelium/kms_color_chamelium: Add support for Bigjoiner
  2022-09-06  9:49 [igt-dev] [i-g-t V2 00/52] Add IGT support for Bigjoiner Bhanuprakash Modem
                   ` (7 preceding siblings ...)
  2022-09-06  9:49 ` [igt-dev] [i-g-t V2 08/52] tests/kms_color: Add support for Bigjoiner Bhanuprakash Modem
@ 2022-09-06  9:49 ` Bhanuprakash Modem
  2022-09-06  9:49 ` [igt-dev] [i-g-t V2 10/52] tests/kms_concurrent: " Bhanuprakash Modem
                   ` (44 subsequent siblings)
  53 siblings, 0 replies; 58+ messages in thread
From: Bhanuprakash Modem @ 2022-09-06  9:49 UTC (permalink / raw)
  To: igt-dev

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.

Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 tests/chamelium/kms_color_chamelium.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/tests/chamelium/kms_color_chamelium.c b/tests/chamelium/kms_color_chamelium.c
index 678931aa..42289e91 100644
--- a/tests/chamelium/kms_color_chamelium.c
+++ b/tests/chamelium/kms_color_chamelium.c
@@ -458,6 +458,9 @@ run_gamma_degamma_tests_for_pipe(data_t *data, enum pipe p,
 	data->drm_format = DRM_FORMAT_XRGB8888;
 	data->mode = igt_output_get_mode(data->output);
 
+	if (!test_constraint(data, p))
+		return;
+
 	igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(p), data->output->name)
 		igt_assert(test_t(data, data->primary, data->ports[port_idx]));
 }
@@ -493,6 +496,9 @@ run_ctm_tests_for_pipe(data_t *data, enum pipe p,
 	data->drm_format = DRM_FORMAT_XRGB8888;
 	data->mode = igt_output_get_mode(data->output);
 
+	if (!test_constraint(data, p))
+		return;
+
 	igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(p), data->output->name) {
 		bool success = false;
 		int i;
@@ -538,6 +544,9 @@ run_limited_range_ctm_test_for_pipe(data_t *data, enum pipe p,
 	data->drm_format = DRM_FORMAT_XRGB8888;
 	data->mode = igt_output_get_mode(data->output);
 
+	if (!test_constraint(data, p))
+		return;
+
 	igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(p), data->output->name)
 		igt_assert(test_t(data, data->primary, data->ports[port_idx]));
 }
-- 
2.35.1

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

* [igt-dev] [i-g-t V2 10/52] tests/kms_concurrent: Add support for Bigjoiner
  2022-09-06  9:49 [igt-dev] [i-g-t V2 00/52] Add IGT support for Bigjoiner Bhanuprakash Modem
                   ` (8 preceding siblings ...)
  2022-09-06  9:49 ` [igt-dev] [i-g-t V2 09/52] tests/chamelium/kms_color_chamelium: " Bhanuprakash Modem
@ 2022-09-06  9:49 ` Bhanuprakash Modem
  2022-09-06  9:49 ` [igt-dev] [i-g-t V2 11/52] tests/kms_content_protection: " Bhanuprakash Modem
                   ` (43 subsequent siblings)
  53 siblings, 0 replies; 58+ messages in thread
From: Bhanuprakash Modem @ 2022-09-06  9:49 UTC (permalink / raw)
  To: igt-dev

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.

Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 tests/kms_concurrent.c | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/tests/kms_concurrent.c b/tests/kms_concurrent.c
index 6f8ffd4a..a6b9189e 100644
--- a/tests/kms_concurrent.c
+++ b/tests/kms_concurrent.c
@@ -330,9 +330,17 @@ run_tests_for_pipe(data_t *data, enum pipe pipe)
 	igt_describe("Test atomic mode setting concurrently with multiple planes and screen "
 		     "resolution.");
 	igt_subtest_with_dynamic_f("pipe-%s", kmstest_pipe_name(pipe)) {
-		for_each_valid_output_on_pipe(&data->display, pipe, output)
+		for_each_valid_output_on_pipe(&data->display, pipe, output) {
+			igt_display_reset(&data->display);
+
+			igt_output_set_pipe(output, pipe);
+			if (!igt_test_constraint(&data->display))
+				continue;
+
+			igt_output_set_pipe(output, PIPE_NONE);
 			igt_dynamic_f("%s", igt_output_name(output))
 				run_test(data, pipe, output);
+		}
 	}
 }
 
-- 
2.35.1

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

* [igt-dev] [i-g-t V2 11/52] tests/kms_content_protection: Add support for Bigjoiner
  2022-09-06  9:49 [igt-dev] [i-g-t V2 00/52] Add IGT support for Bigjoiner Bhanuprakash Modem
                   ` (9 preceding siblings ...)
  2022-09-06  9:49 ` [igt-dev] [i-g-t V2 10/52] tests/kms_concurrent: " Bhanuprakash Modem
@ 2022-09-06  9:49 ` Bhanuprakash Modem
  2022-09-06  9:49 ` [igt-dev] [i-g-t V2 12/52] tests/kms_cursor_crc: " Bhanuprakash Modem
                   ` (42 subsequent siblings)
  53 siblings, 0 replies; 58+ messages in thread
From: Bhanuprakash Modem @ 2022-09-06  9:49 UTC (permalink / raw)
  To: igt-dev

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.

Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 tests/kms_content_protection.c | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/tests/kms_content_protection.c b/tests/kms_content_protection.c
index 3041f1cd..9134e1ca 100644
--- a/tests/kms_content_protection.c
+++ b/tests/kms_content_protection.c
@@ -338,6 +338,15 @@ static void test_content_protection_on_output(igt_output_t *output,
 		if (!igt_pipe_is_free(display, pipe))
 			continue;
 
+		igt_output_set_pipe(output, pipe);
+		if (!igt_test_constraint(display)) {
+			igt_output_set_pipe(output, PIPE_NONE);
+			continue;
+		}
+
+		igt_info("Using (pipe %s + %s) to run the subtest.\n",
+			 kmstest_pipe_name(pipe), igt_output_name(output));
+
 		modeset_with_fb(pipe, output, s);
 		test_cp_enable_with_retry(output, s, 3, content_type, false,
 					  false);
@@ -610,6 +619,14 @@ test_content_protection_mst(int content_type)
 		igt_assert_f(igt_pipe_connector_valid(pipe, output), "Output-pipe combination invalid\n");
 
 		igt_output_set_pipe(output, pipe);
+		if (!igt_test_constraint(display)){
+			igt_output_set_pipe(output, PIPE_NONE);
+			continue;
+		}
+
+		igt_info("Using (pipe %s + %s) to run the subtest.\n",
+			 kmstest_pipe_name(pipe), igt_output_name(output));
+
 		prepare_modeset_on_mst_output(output);
 		mst_output[dp_mst_outputs++] = output;
 
-- 
2.35.1

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

* [igt-dev] [i-g-t V2 12/52] tests/kms_cursor_crc: Add support for Bigjoiner
  2022-09-06  9:49 [igt-dev] [i-g-t V2 00/52] Add IGT support for Bigjoiner Bhanuprakash Modem
                   ` (10 preceding siblings ...)
  2022-09-06  9:49 ` [igt-dev] [i-g-t V2 11/52] tests/kms_content_protection: " Bhanuprakash Modem
@ 2022-09-06  9:49 ` Bhanuprakash Modem
  2022-09-06  9:49 ` [igt-dev] [i-g-t V2 13/52] tests/kms_cursor_edge_walk: " Bhanuprakash Modem
                   ` (41 subsequent siblings)
  53 siblings, 0 replies; 58+ messages in thread
From: Bhanuprakash Modem @ 2022-09-06  9:49 UTC (permalink / raw)
  To: igt-dev

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.

Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 tests/kms_cursor_crc.c | 47 +++++++++++++++++++++++++++++++++++-------
 1 file changed, 40 insertions(+), 7 deletions(-)

diff --git a/tests/kms_cursor_crc.c b/tests/kms_cursor_crc.c
index 53f18f4f..8338a372 100644
--- a/tests/kms_cursor_crc.c
+++ b/tests/kms_cursor_crc.c
@@ -687,6 +687,21 @@ static void test_rapid_movement(data_t *data)
 	igt_assert_lt(usec, 0.9 * 400 * 1000000 / data->refresh);
 }
 
+static bool is_valid_combo(data_t *data, enum pipe pipe)
+{
+	bool ret = true;
+	igt_display_t *display = &data->display;
+
+	igt_display_reset(display);
+
+	igt_output_set_pipe(data->output, pipe);
+	if (!igt_test_constraint(display))
+		ret = false;
+	igt_output_set_pipe(data->output, PIPE_NONE);
+
+	return ret;
+}
+
 static void run_size_tests(data_t *data, void (*testfunc)(data_t *),
 			   int w, int h)
 {
@@ -708,15 +723,18 @@ static void run_size_tests(data_t *data, void (*testfunc)(data_t *),
 	}
 
 	create_cursor_fb(data, w, h);
-	if (require_cursor_size(data, w, h)) {
-		igt_info("Cursor size %dx%d not supported by driver\n", w, h);
-
-		igt_remove_fb(data->drm_fd, &data->fb);
-		return;
-	}
-
 	for_each_pipe(&data->display, pipe) {
 		data->pipe = pipe;
+
+		if (!is_valid_combo(data, pipe))
+			continue;
+
+		if (require_cursor_size(data, w, h)) {
+			igt_info("Cursor size %dx%d not supported by driver\n", w, h);
+
+			continue;
+		}
+
 		igt_dynamic_f("pipe-%s-%s",
 			      kmstest_pipe_name(pipe), igt_output_name(data->output))
 			run_test(data, testfunc, w, h);
@@ -761,6 +779,9 @@ static void run_tests_on_pipe(data_t *data)
 		for_each_pipe(&data->display, pipe) {
 			data->pipe = pipe;
 
+			if (!is_valid_combo(data, pipe))
+				continue;
+
 			igt_dynamic_f("pipe-%s-%s",
 				      kmstest_pipe_name(pipe),
 				      data->output->name)
@@ -775,6 +796,9 @@ static void run_tests_on_pipe(data_t *data)
 		for_each_pipe(&data->display, pipe) {
 			data->pipe = pipe;
 
+			if (!is_valid_combo(data, pipe))
+				continue;
+
 			igt_dynamic_f("pipe-%s-%s",
 				      kmstest_pipe_name(pipe),
 				      data->output->name)
@@ -789,6 +813,9 @@ static void run_tests_on_pipe(data_t *data)
 		for_each_pipe(&data->display, pipe) {
 			data->pipe = pipe;
 
+			if (!is_valid_combo(data, pipe))
+				continue;
+
 			igt_dynamic_f("pipe-%s-%s",
 				      kmstest_pipe_name(pipe),
 				      data->output->name)
@@ -807,6 +834,9 @@ static void run_tests_on_pipe(data_t *data)
 			data->pipe = pipe;
 			data->flags = TEST_DPMS;
 
+			if (!is_valid_combo(data, pipe))
+				continue;
+
 			if (require_cursor_size(data, data->cursor_max_w, data->cursor_max_h)) {
 				igt_debug("Cursor size %dx%d not supported by driver\n",
 					  data->cursor_max_w, data->cursor_max_h);
@@ -828,6 +858,9 @@ static void run_tests_on_pipe(data_t *data)
 			data->pipe = pipe;
 			data->flags = TEST_SUSPEND;
 
+			if (!is_valid_combo(data, pipe))
+				continue;
+
 			if (require_cursor_size(data, data->cursor_max_w, data->cursor_max_h)) {
 				igt_debug("Cursor size %dx%d not supported by driver\n",
 					  data->cursor_max_w, data->cursor_max_h);
-- 
2.35.1

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

* [igt-dev] [i-g-t V2 13/52] tests/kms_cursor_edge_walk: Add support for Bigjoiner
  2022-09-06  9:49 [igt-dev] [i-g-t V2 00/52] Add IGT support for Bigjoiner Bhanuprakash Modem
                   ` (11 preceding siblings ...)
  2022-09-06  9:49 ` [igt-dev] [i-g-t V2 12/52] tests/kms_cursor_crc: " Bhanuprakash Modem
@ 2022-09-06  9:49 ` Bhanuprakash Modem
  2022-09-06  9:49 ` [igt-dev] [i-g-t V2 14/52] tests/kms_cursor_legacy: " Bhanuprakash Modem
                   ` (40 subsequent siblings)
  53 siblings, 0 replies; 58+ messages in thread
From: Bhanuprakash Modem @ 2022-09-06  9:49 UTC (permalink / raw)
  To: igt-dev

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.

Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 tests/kms_cursor_edge_walk.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/tests/kms_cursor_edge_walk.c b/tests/kms_cursor_edge_walk.c
index b75fc216..3e5832a9 100644
--- a/tests/kms_cursor_edge_walk.c
+++ b/tests/kms_cursor_edge_walk.c
@@ -351,6 +351,12 @@ igt_main_args("", long_opts, help_str, opt_handler, &data)
 						data.curh = data.curw;
 						igt_require(data.curw <= max_curw && data.curh <= max_curh);
 
+						igt_display_reset(&data.display);
+						igt_output_set_pipe(data.output, data.pipe);
+						if (!igt_test_constraint(&data.display))
+							continue;
+
+						igt_output_set_pipe(data.output, PIPE_NONE);
 						igt_dynamic_f("pipe-%s-%s-%dx%d",
 							      kmstest_pipe_name(data.pipe),
 							      data.output->name,
-- 
2.35.1

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

* [igt-dev] [i-g-t V2 14/52] tests/kms_cursor_legacy: Add support for Bigjoiner
  2022-09-06  9:49 [igt-dev] [i-g-t V2 00/52] Add IGT support for Bigjoiner Bhanuprakash Modem
                   ` (12 preceding siblings ...)
  2022-09-06  9:49 ` [igt-dev] [i-g-t V2 13/52] tests/kms_cursor_edge_walk: " Bhanuprakash Modem
@ 2022-09-06  9:49 ` Bhanuprakash Modem
  2022-09-06  9:49 ` [igt-dev] [i-g-t V2 15/52] tests/kms_display_modes: " Bhanuprakash Modem
                   ` (39 subsequent siblings)
  53 siblings, 0 replies; 58+ messages in thread
From: Bhanuprakash Modem @ 2022-09-06  9:49 UTC (permalink / raw)
  To: igt-dev

As many 2x tests are currently running on Pipe-A & B only, those
tests will always SKIP if there is any 8K supported panel in the
config. Instead of Skipping the test, add some intelligence to
the subtest to identify the valid pipe/output combo to execute
the subtest.

Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 tests/kms_cursor_legacy.c | 202 +++++++++++++++++++++++---------------
 1 file changed, 124 insertions(+), 78 deletions(-)

diff --git a/tests/kms_cursor_legacy.c b/tests/kms_cursor_legacy.c
index 1b697667..e8361170 100644
--- a/tests/kms_cursor_legacy.c
+++ b/tests/kms_cursor_legacy.c
@@ -177,31 +177,21 @@ static void stress(igt_display_t *display,
 	munmap(results, PAGE_SIZE);
 }
 
-static igt_output_t *set_fb_on_crtc(igt_display_t *display, enum pipe pipe, struct igt_fb *fb_info)
+static void set_fb_on_crtc(igt_display_t *display, enum pipe pipe,
+			   igt_output_t *output, struct igt_fb *fb_info)
 {
-	igt_output_t *output;
-
-	for_each_valid_output_on_pipe(display, pipe, output) {
-		drmModeModeInfoPtr mode;
-		igt_plane_t *primary;
-
-		if (output->pending_pipe != PIPE_NONE)
-			continue;
-
-		igt_output_set_pipe(output, pipe);
-		mode = igt_output_get_mode(output);
+	drmModeModeInfoPtr mode;
+	igt_plane_t *primary;
 
-		igt_create_pattern_fb(display->drm_fd,
-			      mode->hdisplay, mode->vdisplay,
-			      DRM_FORMAT_XRGB8888, I915_TILING_NONE, fb_info);
+	igt_output_set_pipe(output, pipe);
+	mode = igt_output_get_mode(output);
 
-		primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
-		igt_plane_set_fb(primary, fb_info);
+	igt_create_pattern_fb(display->drm_fd,
+		      mode->hdisplay, mode->vdisplay,
+		      DRM_FORMAT_XRGB8888, I915_TILING_NONE, fb_info);
 
-		return output;
-	}
-
-	return NULL;
+	primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
+	igt_plane_set_fb(primary, fb_info);
 }
 
 static	igt_plane_t
@@ -236,36 +226,44 @@ static void populate_cursor_args(igt_display_t *display, enum pipe pipe,
 	arg[1] = *arg;
 }
 
-static enum pipe find_connected_pipe(igt_display_t *display, bool second)
+static enum pipe
+find_connected_pipe(igt_display_t *display, bool second, igt_output_t **output)
 {
-	enum pipe pipe, first = PIPE_NONE;
-	igt_output_t *output;
-	igt_output_t *first_output = NULL;
+	enum pipe pipe;
+	bool first_output = false;
 	bool found = false;
 
 	if (!second) {
 		igt_pipe_crc_free(pipe_crc);
 		pipe_crc = NULL;
-
-		/* Clear display, events will be eaten by commit.. */
-		igt_display_reset(display);
 	}
 
-	for_each_pipe_with_valid_output(display, pipe, output) {
-		if (first == pipe || output == first_output)
-			continue;
+	/* Clear display, events will be eaten by commit.. */
+	igt_display_reset(display);
 
-		if (second) {
-			first = pipe;
-			first_output = output;
-			second = false;
-			continue;
-		}
+	for_each_pipe(display, pipe) {
+		for_each_valid_output_on_pipe(display, pipe, *output) {
+			if((*output)->pending_pipe != PIPE_NONE)
+				continue;
 
-		found = true;
-		break;
+			igt_output_set_pipe(*output, pipe);
+			if (igt_test_constraint(display)) {
+				found = true;
+
+				if (second) {
+					first_output = true;
+					second = false;
+					found = false;
+				}
+				break;
+			}
+			igt_output_set_pipe(*output, PIPE_NONE);
+		}
+		if (found)
+			break;
 	}
 
+	igt_display_reset(display);
 	if (first_output)
 		igt_require_f(found, "No second valid output found\n");
 	else
@@ -429,10 +427,9 @@ static void flip(igt_display_t *display,
 	results = mmap(NULL, PAGE_SIZE, PROT_WRITE, MAP_SHARED | MAP_ANON, -1, 0);
 	igt_assert(results != MAP_FAILED);
 
-	igt_display_reset(display);
-
-	flip_pipe = find_connected_pipe(display, !!flip_pipe);
-	cursor_pipe = find_connected_pipe(display, !!cursor_pipe);
+	flip_pipe = find_connected_pipe(display, !!flip_pipe, &output);
+	cursor_pipe = find_connected_pipe(display, !!cursor_pipe, &output2);
+	igt_skip_on(!output || !output2);
 
 	igt_info("Using pipe %s for page flip, pipe %s for cursor\n",
 		  kmstest_pipe_name(flip_pipe), kmstest_pipe_name(cursor_pipe));
@@ -446,15 +443,15 @@ static void flip(igt_display_t *display,
 					DRM_PLANE_TYPE_OVERLAY));
 	}
 
-	igt_require((output = set_fb_on_crtc(display, flip_pipe, &fb_info)));
+	set_fb_on_crtc(display, flip_pipe, output, &fb_info);
 	if (flip_pipe != cursor_pipe) {
-		igt_require((output2 = set_fb_on_crtc(display, cursor_pipe, &fb_info2)));
+		set_fb_on_crtc(display, cursor_pipe, output2, &fb_info2);
 
 		if (try_commit(display)) {
 			override_output_modes(display, output, output2);
 
-			igt_require((output = set_fb_on_crtc(display, flip_pipe, &fb_info)));
-			igt_require((output2 = set_fb_on_crtc(display, cursor_pipe, &fb_info2)));
+			set_fb_on_crtc(display, flip_pipe, output, &fb_info);
+			set_fb_on_crtc(display, cursor_pipe, output2, &fb_info2);
 		}
 	}
 
@@ -546,7 +543,7 @@ static void basic_flip_cursor(igt_display_t *display,
 	struct drm_event_vblank vbl;
 	struct igt_fb fb_info, cursor_fb, cursor_fb2, argb_fb;
 	unsigned vblank_start;
-	enum pipe pipe = find_connected_pipe(display, false);
+	enum pipe pipe;
 	uint64_t ahnd = 0;
 	igt_spin_t *spin;
 	int i, miss1 = 0, miss2 = 0, delta;
@@ -562,7 +559,13 @@ static void basic_flip_cursor(igt_display_t *display,
 	if (mode >= flip_test_atomic)
 		igt_require(display->is_atomic);
 
-	igt_require((output = set_fb_on_crtc(display, pipe, &fb_info)));
+	pipe = find_connected_pipe(display, false, &output);
+	igt_require(output);
+
+	igt_info("Using pipe %s & %s\n",
+		 kmstest_pipe_name(pipe), igt_output_name(output));
+
+	set_fb_on_crtc(display, pipe, output, &fb_info);
 
 	igt_create_color_fb(display->drm_fd, 64, 64, DRM_FORMAT_ARGB8888, 0, 1., 1., 1., &cursor_fb);
 	cursor = set_cursor_on_pipe(display, pipe, &cursor_fb);
@@ -717,7 +720,7 @@ static void flip_vs_cursor(igt_display_t *display, enum flip_test mode, int nloo
 	struct igt_fb fb_info, cursor_fb, cursor_fb2, argb_fb;
 	unsigned vblank_start;
 	int target, cpu;
-	enum pipe pipe = find_connected_pipe(display, false);
+	enum pipe pipe;
 	volatile unsigned long *shared;
 	cpu_set_t mask, oldmask;
 	igt_output_t *output;
@@ -726,7 +729,13 @@ static void flip_vs_cursor(igt_display_t *display, enum flip_test mode, int nloo
 	if (mode >= flip_test_atomic)
 		igt_require(display->is_atomic);
 
-	igt_require((output = set_fb_on_crtc(display, pipe, &fb_info)));
+	pipe = find_connected_pipe(display, false, &output);
+	igt_require(output);
+
+	igt_info("Using pipe %s & %s\n",
+		 kmstest_pipe_name(pipe), igt_output_name(output));
+
+	set_fb_on_crtc(display, pipe, output, &fb_info);
 
 	igt_create_color_fb(display->drm_fd, 64, 64, DRM_FORMAT_ARGB8888, 0, 1., 1., 1., &cursor_fb);
 	cursor = set_cursor_on_pipe(display, pipe, &cursor_fb);
@@ -843,12 +852,18 @@ static void nonblocking_modeset_vs_cursor(igt_display_t *display, int loops)
 {
 	struct igt_fb fb_info, cursor_fb;
 	igt_output_t *output;
-	enum pipe pipe = find_connected_pipe(display, false);
+	enum pipe pipe;
 	struct drm_mode_cursor arg[2];
 	igt_plane_t *primary, *cursor = NULL;
 
 	igt_require(display->is_atomic);
-	igt_require((output = set_fb_on_crtc(display, pipe, &fb_info)));
+	pipe = find_connected_pipe(display, false, &output);
+	igt_require(output);
+
+	igt_info("Using pipe %s & %s\n",
+		 kmstest_pipe_name(pipe), igt_output_name(output));
+
+	set_fb_on_crtc(display, pipe, output, &fb_info);
 	primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
 	igt_create_color_fb(display->drm_fd, 64, 64, DRM_FORMAT_ARGB8888, 0, 1., 1., 1., &cursor_fb);
 	cursor = set_cursor_on_pipe(display, pipe, &cursor_fb);
@@ -935,8 +950,7 @@ static void two_screens_flip_vs_cursor(igt_display_t *display, int nloops, bool
 {
 	struct drm_mode_cursor arg1[2], arg2[2];
 	struct igt_fb fb_info, fb2_info, cursor_fb;
-	enum pipe pipe = find_connected_pipe(display, false);
-	enum pipe pipe2 = find_connected_pipe(display, true);
+	enum pipe pipe, pipe2;
 	igt_output_t *output, *output2;
 	bool enabled = false;
 	volatile unsigned long *shared;
@@ -952,22 +966,28 @@ static void two_screens_flip_vs_cursor(igt_display_t *display, int nloops, bool
 		igt_require(drmGetCap(display->drm_fd, DRM_CAP_CRTC_IN_VBLANK_EVENT, &val) == 0);
 	}
 
+	if (atomic)
+		igt_require(display->is_atomic);
+
 	shared = mmap(NULL, PAGE_SIZE, PROT_WRITE, MAP_SHARED | MAP_ANON, -1, 0);
 	igt_assert(shared != MAP_FAILED);
 
-	igt_fail_on(modeset && !atomic);
+	pipe = find_connected_pipe(display, false, &output);
+	pipe2 = find_connected_pipe(display, true, &output2);
+	igt_skip_on(!output || !output2);
 
-	if (atomic)
-		igt_require(display->is_atomic);
+	igt_info("Using pipe %s & %s and pipe %s & %s\n",
+		 kmstest_pipe_name(pipe), igt_output_name(output),
+		 kmstest_pipe_name(pipe2), igt_output_name(output2));
 
-	igt_require((output = set_fb_on_crtc(display, pipe, &fb_info)));
-	igt_require((output2 = set_fb_on_crtc(display, pipe2, &fb2_info)));
+	set_fb_on_crtc(display, pipe, output, &fb_info);
+	set_fb_on_crtc(display, pipe2, output2, &fb2_info);
 
 	if (try_commit(display)) {
 		override_output_modes(display, output, output2);
 
-		igt_require((output = set_fb_on_crtc(display, pipe, &fb_info)));
-		igt_require((output2 = set_fb_on_crtc(display, pipe2, &fb2_info)));
+		set_fb_on_crtc(display, pipe, output, &fb_info);
+		set_fb_on_crtc(display, pipe2, output2, &fb2_info);
 	}
 
 	igt_create_color_fb(display->drm_fd, 64, 64, DRM_FORMAT_ARGB8888, 0, 1., 1., 1., &cursor_fb);
@@ -1120,7 +1140,7 @@ static void cursor_vs_flip(igt_display_t *display, enum flip_test mode, int nloo
 	unsigned vblank_start, vblank_last;
 	volatile unsigned long *shared;
 	long target;
-	enum pipe pipe = find_connected_pipe(display, false);
+	enum pipe pipe;
 	igt_output_t *output;
 	uint32_t vrefresh;
 	int fail_count;
@@ -1132,7 +1152,13 @@ static void cursor_vs_flip(igt_display_t *display, enum flip_test mode, int nloo
 	shared = mmap(NULL, PAGE_SIZE, PROT_WRITE, MAP_SHARED | MAP_ANON, -1, 0);
 	igt_assert(shared != MAP_FAILED);
 
-	igt_require((output = set_fb_on_crtc(display, pipe, &fb_info)));
+	pipe = find_connected_pipe(display, false, &output);
+	igt_require(output);
+
+	igt_info("Using pipe %s & %s\n",
+		 kmstest_pipe_name(pipe), igt_output_name(output));
+
+	set_fb_on_crtc(display, pipe, output, &fb_info);
 	vrefresh = igt_output_get_mode(output)->vrefresh;
 
 	igt_create_color_fb(display->drm_fd, 64, 64, DRM_FORMAT_ARGB8888, 0, 1., 1., 1., &cursor_fb);
@@ -1224,10 +1250,7 @@ static void two_screens_cursor_vs_flip(igt_display_t *display, int nloops, bool
 	struct igt_fb fb_info[2], cursor_fb;
 	volatile unsigned long *shared;
 	int target[2];
-	enum pipe pipe[2] = {
-		find_connected_pipe(display, false),
-		find_connected_pipe(display, true)
-	};
+	enum pipe pipe[2];
 	igt_output_t *outputs[2];
 	igt_plane_t *cursors[2];
 
@@ -1237,14 +1260,22 @@ static void two_screens_cursor_vs_flip(igt_display_t *display, int nloops, bool
 	if (atomic)
 		igt_require(display->is_atomic);
 
-	igt_require((outputs[0] = set_fb_on_crtc(display, pipe[0], &fb_info[0])));
-	igt_require((outputs[1] = set_fb_on_crtc(display, pipe[1], &fb_info[1])));
+	pipe[0] = find_connected_pipe(display, false, &outputs[0]);
+	pipe[1] = find_connected_pipe(display, true, &outputs[1]);
+	igt_skip_on(!outputs[0] || !outputs[1]);
+
+	igt_info("Using pipe %s & %s and pipe %s & %s\n",
+		 kmstest_pipe_name(pipe[0]), igt_output_name(outputs[0]),
+		 kmstest_pipe_name(pipe[1]), igt_output_name(outputs[1]));
+
+	set_fb_on_crtc(display, pipe[0], outputs[0], &fb_info[0]);
+	set_fb_on_crtc(display, pipe[1], outputs[1], &fb_info[1]);
 
 	if (try_commit(display)) {
 		override_output_modes(display, outputs[0], outputs[1]);
 
-		igt_require((outputs[0] = set_fb_on_crtc(display, pipe[0], &fb_info[0])));
-		igt_require((outputs[1] = set_fb_on_crtc(display, pipe[1], &fb_info[1])));
+		set_fb_on_crtc(display, pipe[0], outputs[0], &fb_info[0]);
+		set_fb_on_crtc(display, pipe[1], outputs[1], &fb_info[1]);
 	}
 
 	igt_create_color_fb(display->drm_fd, 64, 64, DRM_FORMAT_ARGB8888, 0, 1., 1., 1., &cursor_fb);
@@ -1345,7 +1376,7 @@ static void flip_vs_cursor_crc(igt_display_t *display, bool atomic)
 	struct drm_event_vblank vbl;
 	struct igt_fb fb_info, cursor_fb;
 	unsigned vblank_start;
-	enum pipe pipe = find_connected_pipe(display, false);
+	enum pipe pipe;
 	igt_crc_t crcs[3];
 	igt_output_t *output;
 	igt_plane_t *cursor;
@@ -1353,7 +1384,13 @@ static void flip_vs_cursor_crc(igt_display_t *display, bool atomic)
 	if (atomic)
 		igt_require(display->is_atomic);
 
-	igt_require((output = set_fb_on_crtc(display, pipe, &fb_info)));
+	pipe = find_connected_pipe(display, false, &output);
+	igt_require(output);
+
+	igt_info("Using pipe %s & %s\n",
+		 kmstest_pipe_name(pipe), igt_output_name(output));
+
+	set_fb_on_crtc(display, pipe, output, &fb_info);
 
 	igt_create_color_fb(display->drm_fd, 64, 64, DRM_FORMAT_ARGB8888, 0, 1., 1., 1., &cursor_fb);
 	populate_cursor_args(display, pipe, arg, &cursor_fb);
@@ -1409,9 +1446,9 @@ static void flip_vs_cursor_busy_crc(igt_display_t *display, bool atomic)
 	struct drm_event_vblank vbl;
 	struct igt_fb fb_info[2], cursor_fb;
 	unsigned vblank_start;
-	enum pipe pipe = find_connected_pipe(display, false);
-	igt_pipe_t *pipe_connected = &display->pipes[pipe];
-	igt_plane_t *plane_primary = igt_pipe_get_plane_type(pipe_connected, DRM_PLANE_TYPE_PRIMARY);
+	enum pipe pipe;
+	igt_pipe_t *pipe_connected;
+	igt_plane_t *plane_primary;
 	igt_crc_t crcs[2], test_crc;
 	uint64_t ahnd;
 	igt_output_t *output;
@@ -1423,7 +1460,16 @@ static void flip_vs_cursor_busy_crc(igt_display_t *display, bool atomic)
 	if (atomic)
 		igt_require(display->is_atomic);
 
-	igt_require((output = set_fb_on_crtc(display, pipe, &fb_info[0])));
+	pipe = find_connected_pipe(display, false, &output);
+	igt_require(output);
+
+	igt_info("Using pipe %s & %s\n",
+		 kmstest_pipe_name(pipe), igt_output_name(output));
+
+	pipe_connected = &display->pipes[pipe];
+	plane_primary = igt_pipe_get_plane_type(pipe_connected, DRM_PLANE_TYPE_PRIMARY);
+
+	set_fb_on_crtc(display, pipe, output, &fb_info[0]);
 	igt_create_color_pattern_fb(display->drm_fd, fb_info[0].width, fb_info[0].height,
 				    DRM_FORMAT_XRGB8888, I915_FORMAT_MOD_X_TILED, .1, .1, .1, &fb_info[1]);
 
-- 
2.35.1

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

* [igt-dev] [i-g-t V2 15/52] tests/kms_display_modes: Add support for Bigjoiner
  2022-09-06  9:49 [igt-dev] [i-g-t V2 00/52] Add IGT support for Bigjoiner Bhanuprakash Modem
                   ` (13 preceding siblings ...)
  2022-09-06  9:49 ` [igt-dev] [i-g-t V2 14/52] tests/kms_cursor_legacy: " Bhanuprakash Modem
@ 2022-09-06  9:49 ` Bhanuprakash Modem
  2022-09-06  9:49 ` [igt-dev] [i-g-t V2 16/52] tests/kms_dp_tiled_display: " Bhanuprakash Modem
                   ` (38 subsequent siblings)
  53 siblings, 0 replies; 58+ messages in thread
From: Bhanuprakash Modem @ 2022-09-06  9:49 UTC (permalink / raw)
  To: igt-dev

As many 2x tests are currently running on Pipe-A & B only, those
tests will always SKIP if there is any 8K supported panel in the
config. Instead of Skipping the test, add some intelligence to
the subtest to identify the valid pipe/output combo to execute
the subtest.

Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 tests/kms_display_modes.c | 104 +++++++++++++++++++++++---------------
 1 file changed, 62 insertions(+), 42 deletions(-)

diff --git a/tests/kms_display_modes.c b/tests/kms_display_modes.c
index eff30cbb..816efcf8 100644
--- a/tests/kms_display_modes.c
+++ b/tests/kms_display_modes.c
@@ -34,31 +34,26 @@ typedef struct {
 	int n_pipes;
 } data_t;
 
-static void run_extendedmode_basic(data_t *data, int pipe1, int pipe2)
+static void run_extendedmode_basic(data_t *data,
+				   enum pipe pipe1, igt_output_t *output1,
+				   enum pipe pipe2, igt_output_t *output2)
 {
 	struct igt_fb fb, fbs[2];
 	drmModeModeInfo *mode[2];
-	igt_output_t *output, *extended_output[2];
 	igt_display_t *display = &data->display;
 	igt_plane_t *plane[2];
 	igt_pipe_crc_t *pipe_crc[2] = { 0 };
 	igt_crc_t ref_crc[2], crc[2];
-	int count = 0, width, height;
+	int width, height;
 	cairo_t *cr;
 
-	for_each_connected_output(display, output) {
-		extended_output[count] = output;
-		count++;
+	igt_display_reset(display);
 
-		if (count > 1)
-			break;
-	}
-
-	igt_output_set_pipe(extended_output[0], pipe1);
-	igt_output_set_pipe(extended_output[1], pipe2);
+	igt_output_set_pipe(output1, pipe1);
+	igt_output_set_pipe(output2, pipe2);
 
-	mode[0] = igt_output_get_mode(extended_output[0]);
-	mode[1] = igt_output_get_mode(extended_output[1]);
+	mode[0] = igt_output_get_mode(output1);
+	mode[1] = igt_output_get_mode(output2);
 
 	pipe_crc[0] = igt_pipe_crc_new(data->drm_fd, pipe1, INTEL_PIPE_CRC_SOURCE_AUTO);
 	pipe_crc[1] = igt_pipe_crc_new(data->drm_fd, pipe2, INTEL_PIPE_CRC_SOURCE_AUTO);
@@ -115,8 +110,8 @@ static void run_extendedmode_basic(data_t *data, int pipe1, int pipe2)
 	igt_pipe_crc_free(pipe_crc[0]);
 	igt_pipe_crc_free(pipe_crc[1]);
 
-	igt_output_set_pipe(extended_output[0], PIPE_NONE);
-	igt_output_set_pipe(extended_output[1], PIPE_NONE);
+	igt_output_set_pipe(output1, PIPE_NONE);
+	igt_output_set_pipe(output2, PIPE_NONE);
 
 	igt_plane_set_fb(igt_pipe_get_plane_type(&display->pipes[pipe1],
 			  DRM_PLANE_TYPE_PRIMARY), NULL);
@@ -129,43 +124,68 @@ static void run_extendedmode_basic(data_t *data, int pipe1, int pipe2)
 	igt_assert_crc_equal(&crc[1], &ref_crc[1]);
 }
 
+#define for_each_connected_output_local(display, output)		\
+	for (int j__ = 0;  assert(igt_can_fail()), j__ < (display)->n_outputs; j__++)	\
+		for_each_if ((((output) = &(display)->outputs[j__]), \
+			      igt_output_is_connected((output))))
+
+#define for_each_valid_output_on_pipe_local(display, pipe, output) \
+	for_each_connected_output_local((display), (output)) \
+		for_each_if (igt_pipe_connector_valid((pipe), (output)))
+
+static void run_extendedmode_test(data_t *data) {
+	enum pipe pipe1, pipe2;
+	igt_output_t *output1, *output2;
+	igt_display_t *display = &data->display;
+
+	igt_display_reset(display);
+
+	for_each_pipe(display, pipe1) {
+		for_each_valid_output_on_pipe(display, pipe1, output1) {
+			for_each_pipe(display, pipe2) {
+				if (pipe1 == pipe2)
+					continue;
+
+				for_each_valid_output_on_pipe_local(display, pipe2, output2) {
+					if (output1 == output2)
+						continue;
+
+					igt_display_reset(display);
+
+					igt_output_set_pipe(output1, pipe1);
+					igt_output_set_pipe(output2, pipe2);
+
+					if (!igt_test_constraint(display))
+						continue;
+
+					igt_dynamic_f("pipe-%s-%s-pipe-%s-%s",
+						      kmstest_pipe_name(pipe1),
+						      igt_output_name(output1),
+						      kmstest_pipe_name(pipe2),
+						      igt_output_name(output2))
+						run_extendedmode_basic(data,
+								pipe1, output1,
+								pipe2, output2);
+				}
+			}
+		}
+	}
+}
+
 igt_main
 {
 	data_t data;
-	int valid_output = 0, i, j = 0;
-	igt_output_t *output;
-	int pipe[IGT_MAX_PIPES];
 
 	igt_fixture {
 		data.drm_fd = drm_open_driver_master(DRIVER_ANY);
 		kmstest_set_vt_graphics_mode();
 		igt_display_require(&data.display, data.drm_fd);
-
-		for_each_connected_output(&data.display, output) {
-			valid_output++;
-
-			if (valid_output > 1)
-				break;
-		}
-
-		data.n_pipes = 0;
-		for_each_pipe(&data.display, i) {
-			data.n_pipes++;
-			pipe[j] = i;
-			j++;
-		}
-
-		igt_require_f(valid_output > 1, "No valid second output found\n");
+		igt_display_require_output(&data.display);
 	}
 
 	igt_describe("Test for validating display extended mode with a pair of connected displays");
-	igt_subtest_with_dynamic("extended-mode-basic") {
-		for (i = 0; i < data.n_pipes - 1; i++) {
-			igt_dynamic_f("pipe-%s%s", kmstest_pipe_name(pipe[i]),
-					kmstest_pipe_name(pipe[i+1]));
-			run_extendedmode_basic(&data, pipe[i], pipe[i+1]);
-		}
-	}
+	igt_subtest_with_dynamic("extended-mode-basic")
+		run_extendedmode_test(&data);
 
 	igt_fixture {
 		igt_display_fini(&data.display);
-- 
2.35.1

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

* [igt-dev] [i-g-t V2 16/52] tests/kms_dp_tiled_display: Add support for Bigjoiner
  2022-09-06  9:49 [igt-dev] [i-g-t V2 00/52] Add IGT support for Bigjoiner Bhanuprakash Modem
                   ` (14 preceding siblings ...)
  2022-09-06  9:49 ` [igt-dev] [i-g-t V2 15/52] tests/kms_display_modes: " Bhanuprakash Modem
@ 2022-09-06  9:49 ` Bhanuprakash Modem
  2022-09-06  9:49 ` [igt-dev] [i-g-t V2 17/52] tests/kms_flip_event_leak: " Bhanuprakash Modem
                   ` (37 subsequent siblings)
  53 siblings, 0 replies; 58+ messages in thread
From: Bhanuprakash Modem @ 2022-09-06  9:49 UTC (permalink / raw)
  To: igt-dev

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.

Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 tests/kms_dp_tiled_display.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/tests/kms_dp_tiled_display.c b/tests/kms_dp_tiled_display.c
index 8f503e40..1ef815a0 100644
--- a/tests/kms_dp_tiled_display.c
+++ b/tests/kms_dp_tiled_display.c
@@ -271,6 +271,7 @@ static void setup_mode(data_t *data)
 		igt_require(found);
 		igt_output_override_mode(output, mode);
 	}
+	igt_require(igt_test_constraint(data->display));
 	igt_display_commit_atomic(data->display, DRM_MODE_ATOMIC_ALLOW_MODESET,
 				  NULL);
 }
-- 
2.35.1

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

* [igt-dev] [i-g-t V2 17/52] tests/kms_flip_event_leak: Add support for Bigjoiner
  2022-09-06  9:49 [igt-dev] [i-g-t V2 00/52] Add IGT support for Bigjoiner Bhanuprakash Modem
                   ` (15 preceding siblings ...)
  2022-09-06  9:49 ` [igt-dev] [i-g-t V2 16/52] tests/kms_dp_tiled_display: " Bhanuprakash Modem
@ 2022-09-06  9:49 ` Bhanuprakash Modem
  2022-09-06  9:49 ` [igt-dev] [i-g-t V2 18/52] tests/kms_invalid_mode: " Bhanuprakash Modem
                   ` (36 subsequent siblings)
  53 siblings, 0 replies; 58+ messages in thread
From: Bhanuprakash Modem @ 2022-09-06  9:49 UTC (permalink / raw)
  To: igt-dev

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.

Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 tests/kms_flip_event_leak.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/tests/kms_flip_event_leak.c b/tests/kms_flip_event_leak.c
index ac201293..1df2474c 100644
--- a/tests/kms_flip_event_leak.c
+++ b/tests/kms_flip_event_leak.c
@@ -48,6 +48,9 @@ static void test(data_t *data, enum pipe pipe, igt_output_t *output)
 	struct igt_fb fb[2];
 	int fd, ret;
 
+	igt_info("Using (pipe %s + %s) to run the subtest.\n",
+		 kmstest_pipe_name(pipe), igt_output_name(output));
+
 	/* select the pipe we want to use */
 	igt_output_set_pipe(output, pipe);
 
@@ -102,6 +105,13 @@ igt_simple_main
 	igt_display_require(&data.display, data.drm_fd);
 
 	for_each_pipe_with_valid_output(&data.display, pipe, output) {
+		igt_display_reset(&data.display);
+
+		igt_output_set_pipe(output, pipe);
+		if (!igt_test_constraint(&data.display))
+			continue;
+
+		igt_output_set_pipe(output, PIPE_NONE);
 		test(&data, pipe, output);
 		valid_tests++;
 	}
-- 
2.35.1

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

* [igt-dev] [i-g-t V2 18/52] tests/kms_invalid_mode: Add support for Bigjoiner
  2022-09-06  9:49 [igt-dev] [i-g-t V2 00/52] Add IGT support for Bigjoiner Bhanuprakash Modem
                   ` (16 preceding siblings ...)
  2022-09-06  9:49 ` [igt-dev] [i-g-t V2 17/52] tests/kms_flip_event_leak: " Bhanuprakash Modem
@ 2022-09-06  9:49 ` Bhanuprakash Modem
  2022-09-06  9:49 ` [igt-dev] [i-g-t V2 19/52] tests/kms_lease: " Bhanuprakash Modem
                   ` (35 subsequent siblings)
  53 siblings, 0 replies; 58+ messages in thread
From: Bhanuprakash Modem @ 2022-09-06  9:49 UTC (permalink / raw)
  To: igt-dev

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.

Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 tests/kms_invalid_mode.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/tests/kms_invalid_mode.c b/tests/kms_invalid_mode.c
index 0ae98a31..7c3866d8 100644
--- a/tests/kms_invalid_mode.c
+++ b/tests/kms_invalid_mode.c
@@ -293,6 +293,12 @@ igt_main
 	for (int i = 0; i < ARRAY_SIZE(subtests); i++) {
 		igt_subtest_with_dynamic(subtests[i].name) {
 			for_each_pipe_with_valid_output(&data.display, pipe, output) {
+				igt_display_reset(&data.display);
+
+				igt_output_set_pipe(output, pipe);
+				if (!igt_test_constraint(&data.display))
+					continue;
+
 				igt_dynamic_f("%s-pipe-%s", igt_output_name(output), kmstest_pipe_name(pipe)) {
 					data.output = output;
 					data.pipe = pipe;
-- 
2.35.1

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

* [igt-dev] [i-g-t V2 19/52] tests/kms_lease: Add support for Bigjoiner
  2022-09-06  9:49 [igt-dev] [i-g-t V2 00/52] Add IGT support for Bigjoiner Bhanuprakash Modem
                   ` (17 preceding siblings ...)
  2022-09-06  9:49 ` [igt-dev] [i-g-t V2 18/52] tests/kms_invalid_mode: " Bhanuprakash Modem
@ 2022-09-06  9:49 ` Bhanuprakash Modem
  2022-09-06  9:49 ` [igt-dev] [i-g-t V2 20/52] tests/kms_multipipe_modeset: Find the suitable mode instead of using default Bhanuprakash Modem
                   ` (34 subsequent siblings)
  53 siblings, 0 replies; 58+ messages in thread
From: Bhanuprakash Modem @ 2022-09-06  9:49 UTC (permalink / raw)
  To: igt-dev

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.

Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 tests/kms_lease.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/tests/kms_lease.c b/tests/kms_lease.c
index 0bf102a6..512d2fc3 100644
--- a/tests/kms_lease.c
+++ b/tests/kms_lease.c
@@ -823,6 +823,12 @@ static void run_test(data_t *data, void (*testfunc)(data_t *))
 			 kmstest_pipe_name(p),
 			 igt_output_name(output));
 
+		igt_display_reset(display);
+
+		igt_output_set_pipe(output, p);
+		if (!igt_test_constraint(display))
+			continue;
+
 		data->pipe = p;
 		data->crtc_id = pipe_to_crtc_id(display, p);
 		data->connector_id = output->id;
-- 
2.35.1

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

* [igt-dev] [i-g-t V2 20/52] tests/kms_multipipe_modeset: Find the suitable mode instead of using default
  2022-09-06  9:49 [igt-dev] [i-g-t V2 00/52] Add IGT support for Bigjoiner Bhanuprakash Modem
                   ` (18 preceding siblings ...)
  2022-09-06  9:49 ` [igt-dev] [i-g-t V2 19/52] tests/kms_lease: " Bhanuprakash Modem
@ 2022-09-06  9:49 ` Bhanuprakash Modem
  2022-09-06  9:49 ` [igt-dev] [i-g-t V2 21/52] tests/kms_pipe_crc_basic: Add support for Bigjoiner Bhanuprakash Modem
                   ` (33 subsequent siblings)
  53 siblings, 0 replies; 58+ messages in thread
From: Bhanuprakash Modem @ 2022-09-06  9:49 UTC (permalink / raw)
  To: igt-dev

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.

Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 tests/kms_multipipe_modeset.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/tests/kms_multipipe_modeset.c b/tests/kms_multipipe_modeset.c
index 6358d930..6ba6943e 100644
--- a/tests/kms_multipipe_modeset.c
+++ b/tests/kms_multipipe_modeset.c
@@ -46,6 +46,15 @@ static void run_test(data_t *data, int valid_outputs)
 	drmModeModeInfo *mode;
 	int i = 0;
 
+	/* Find suitable mode/resolution combo */
+	for_each_connected_output(display, output) {
+		pipe = &display->pipes[i];
+		igt_output_set_pipe(output, i);
+
+		i++;
+	}
+	igt_require(igt_override_all_active_output_modes_to_fit_bw(display));
+
 	for_each_connected_output(display, output) {
 		mode = igt_output_get_mode(output);
 		igt_assert(mode);
-- 
2.35.1

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

* [igt-dev] [i-g-t V2 21/52] tests/kms_pipe_crc_basic: Add support for Bigjoiner
  2022-09-06  9:49 [igt-dev] [i-g-t V2 00/52] Add IGT support for Bigjoiner Bhanuprakash Modem
                   ` (19 preceding siblings ...)
  2022-09-06  9:49 ` [igt-dev] [i-g-t V2 20/52] tests/kms_multipipe_modeset: Find the suitable mode instead of using default Bhanuprakash Modem
@ 2022-09-06  9:49 ` Bhanuprakash Modem
  2022-09-06  9:50 ` [igt-dev] [i-g-t V2 22/52] tests/kms_plane: " Bhanuprakash Modem
                   ` (32 subsequent siblings)
  53 siblings, 0 replies; 58+ messages in thread
From: Bhanuprakash Modem @ 2022-09-06  9:49 UTC (permalink / raw)
  To: igt-dev

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.

Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 tests/kms_pipe_crc_basic.c | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/tests/kms_pipe_crc_basic.c b/tests/kms_pipe_crc_basic.c
index 2ff40f72..16ec1fd4 100644
--- a/tests/kms_pipe_crc_basic.c
+++ b/tests/kms_pipe_crc_basic.c
@@ -271,6 +271,21 @@ static void test_disable_crc_after_crtc(data_t *data, enum pipe pipe,
 	igt_remove_fb(data->drm_fd, &data->fb);
 }
 
+static bool is_valid_combo(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 (!igt_test_constraint(display))
+		ret = false;
+	igt_output_set_pipe(output, PIPE_NONE);
+
+	return ret;
+}
+
 data_t data = {0, };
 
 igt_main
@@ -319,6 +334,9 @@ igt_main
 		igt_describe(tests[i].desc);
 		igt_subtest_with_dynamic(tests[i].name) {
 			for_each_pipe_with_single_output(&data.display, pipe, output) {
+				if(!is_valid_combo(&data.display, pipe, output))
+					continue;
+
 				igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), output->name) {
 					if (tests[i].flags & TEST_SUSPEND) {
 						test_read_crc(&data, pipe, output, 0);
@@ -347,6 +365,9 @@ igt_main
 		     "does not cause issues.");
 	igt_subtest_with_dynamic("disable-crc-after-crtc") {
 		for_each_pipe_with_single_output(&data.display, pipe, output) {
+			if(!is_valid_combo(&data.display, pipe, output))
+				continue;
+
 			igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), output->name)
 				test_disable_crc_after_crtc(&data, pipe, output);
 		}
@@ -355,6 +376,9 @@ igt_main
 	igt_describe("Basic sanity check for CRC mismatches");
 	igt_subtest_with_dynamic("compare-crc-sanitycheck") {
 		for_each_pipe_with_single_output(&data.display, pipe, output) {
+			if(!is_valid_combo(&data.display, pipe, output))
+				continue;
+
 			igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), output->name)
 				test_compare_crc(&data, pipe, output);
 		}
-- 
2.35.1

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

* [igt-dev] [i-g-t V2 22/52] tests/kms_plane: Add support for Bigjoiner
  2022-09-06  9:49 [igt-dev] [i-g-t V2 00/52] Add IGT support for Bigjoiner Bhanuprakash Modem
                   ` (20 preceding siblings ...)
  2022-09-06  9:49 ` [igt-dev] [i-g-t V2 21/52] tests/kms_pipe_crc_basic: Add support for Bigjoiner Bhanuprakash Modem
@ 2022-09-06  9:50 ` Bhanuprakash Modem
  2022-09-06  9:50 ` [igt-dev] [i-g-t V2 23/52] tests/kms_plane_alpha_blend: " Bhanuprakash Modem
                   ` (31 subsequent siblings)
  53 siblings, 0 replies; 58+ messages in thread
From: Bhanuprakash Modem @ 2022-09-06  9:50 UTC (permalink / raw)
  To: igt-dev

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.

Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 tests/kms_plane.c | 30 +++++++++++++++++++-----------
 1 file changed, 19 insertions(+), 11 deletions(-)

diff --git a/tests/kms_plane.c b/tests/kms_plane.c
index 3cf3cfd3..62dc9af6 100644
--- a/tests/kms_plane.c
+++ b/tests/kms_plane.c
@@ -56,6 +56,7 @@ typedef struct {
 typedef struct {
 	int drm_fd;
 	igt_display_t display;
+	igt_output_t *output;
 	igt_pipe_crc_t *pipe_crc;
 	const color_t *colors;
 	int num_colors;
@@ -273,11 +274,11 @@ static void
 test_plane_position(data_t *data, enum pipe pipe)
 {
 	int n_planes = data->display.pipes[pipe].n_planes;
-	igt_output_t *output;
+	igt_output_t *output = data->output;
 	igt_crc_t reference_crc;
 
-	output = igt_get_single_output_for_pipe(&data->display, pipe);
-	igt_require(output);
+	igt_info("Using (pipe %s + %s) to run the subtest.\n",
+		 kmstest_pipe_name(pipe), igt_output_name(output));
 
 	test_init(data, pipe);
 	test_grab_crc(data, output, pipe, &green, data->flags, &reference_crc);
@@ -380,11 +381,11 @@ test_plane_panning_with_output(data_t *data,
 static void
 test_plane_panning(data_t *data, enum pipe pipe)
 {
-	igt_output_t *output;
+	igt_output_t *output = data->output;
 	igt_crc_t ref_crc;
 
-	output = igt_get_single_output_for_pipe(&data->display, pipe);
-	igt_require(output);
+	igt_info("Using (pipe %s + %s) to run the subtest.\n",
+		 kmstest_pipe_name(pipe), igt_output_name(output));
 
 	test_init(data, pipe);
 
@@ -1050,7 +1051,7 @@ test_pixel_formats(data_t *data, enum pipe pipe)
 	igt_plane_t *primary;
 	drmModeModeInfo *mode;
 	bool result;
-	igt_output_t *output;
+	igt_output_t *output = data->output;
 	igt_plane_t *plane;
 
 	if (data->extended) {
@@ -1061,10 +1062,10 @@ test_pixel_formats(data_t *data, enum pipe pipe)
 		data->num_colors = ARRAY_SIZE(colors_reduced);
 	}
 
-	test_init(data, pipe);
+	igt_info("Using (pipe %s + %s) to run the subtest.\n",
+		 kmstest_pipe_name(pipe), igt_output_name(output));
 
-	output = igt_get_single_output_for_pipe(&data->display, pipe);
-	igt_require(output);
+	test_init(data, pipe);
 
 	mode = igt_output_get_mode(output);
 
@@ -1108,7 +1109,14 @@ static void run_test(data_t *data, void (*test)(data_t *, enum pipe))
 	enum pipe pipe;
 	int count = 0;
 
-	for_each_pipe(&data->display, pipe) {
+	for_each_pipe_with_single_output(&data->display, pipe, data->output) {
+		igt_display_reset(&data->display);
+
+		igt_output_set_pipe(data->output, pipe);
+		if (!igt_test_constraint(&data->display))
+			continue;
+
+		igt_output_set_pipe(data->output, PIPE_NONE);
 		igt_dynamic_f("pipe-%s-planes", kmstest_pipe_name(pipe))
 			test(data, pipe);
 
-- 
2.35.1

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

* [igt-dev] [i-g-t V2 23/52] tests/kms_plane_alpha_blend: Add support for Bigjoiner
  2022-09-06  9:49 [igt-dev] [i-g-t V2 00/52] Add IGT support for Bigjoiner Bhanuprakash Modem
                   ` (21 preceding siblings ...)
  2022-09-06  9:50 ` [igt-dev] [i-g-t V2 22/52] tests/kms_plane: " Bhanuprakash Modem
@ 2022-09-06  9:50 ` Bhanuprakash Modem
  2022-09-06  9:50 ` [igt-dev] [i-g-t V2 24/52] tests/kms_plane_cursor: " Bhanuprakash Modem
                   ` (30 subsequent siblings)
  53 siblings, 0 replies; 58+ messages in thread
From: Bhanuprakash Modem @ 2022-09-06  9:50 UTC (permalink / raw)
  To: igt-dev

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.

Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 tests/kms_plane_alpha_blend.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/tests/kms_plane_alpha_blend.c b/tests/kms_plane_alpha_blend.c
index bd064d1e..41cdb99e 100644
--- a/tests/kms_plane_alpha_blend.c
+++ b/tests/kms_plane_alpha_blend.c
@@ -476,6 +476,13 @@ static void run_test_on_pipe_planes(data_t *data, enum pipe pipe, bool blend,
 	bool found = false;
 	bool multiply = false;
 
+	igt_display_reset(display);
+	igt_output_set_pipe(output, pipe);
+	igt_require(igt_test_constraint(display));
+
+	igt_info("Using (pipe %s + %s) to run the subtest.\n",
+		 kmstest_pipe_name(pipe), igt_output_name(output));
+
 	for_each_plane_on_pipe(display, pipe, plane) {
 		if (!igt_plane_has_prop(plane, IGT_PLANE_ALPHA))
 			continue;
-- 
2.35.1

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

* [igt-dev] [i-g-t V2 24/52] tests/kms_plane_cursor: Add support for Bigjoiner
  2022-09-06  9:49 [igt-dev] [i-g-t V2 00/52] Add IGT support for Bigjoiner Bhanuprakash Modem
                   ` (22 preceding siblings ...)
  2022-09-06  9:50 ` [igt-dev] [i-g-t V2 23/52] tests/kms_plane_alpha_blend: " Bhanuprakash Modem
@ 2022-09-06  9:50 ` Bhanuprakash Modem
  2022-09-06  9:50 ` [igt-dev] [i-g-t V2 25/52] tests/kms_plane_lowres: " Bhanuprakash Modem
                   ` (29 subsequent siblings)
  53 siblings, 0 replies; 58+ messages in thread
From: Bhanuprakash Modem @ 2022-09-06  9:50 UTC (permalink / raw)
  To: igt-dev

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.

Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 tests/kms_plane_cursor.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/tests/kms_plane_cursor.c b/tests/kms_plane_cursor.c
index 6b7e5cef..23d24fa4 100644
--- a/tests/kms_plane_cursor.c
+++ b/tests/kms_plane_cursor.c
@@ -83,12 +83,16 @@ static void test_init(data_t *data, enum pipe pipe_id, igt_output_t *output)
 	data->overlay = igt_pipe_get_plane_type(data->pipe, DRM_PLANE_TYPE_OVERLAY);
 	data->cursor = igt_pipe_get_plane_type(data->pipe, DRM_PLANE_TYPE_CURSOR);
 
+	igt_output_set_pipe(data->output, data->pipe_id);
+	igt_require(igt_test_constraint(display));
+
+	igt_info("Using (pipe %s + %s) to run the subtest.\n",
+		 kmstest_pipe_name(data->pipe_id), igt_output_name(data->output));
+
 	igt_require_pipe_crc(data->drm_fd);
 	data->pipe_crc = igt_pipe_crc_new(data->drm_fd, data->pipe_id,
 					  INTEL_PIPE_CRC_SOURCE_AUTO);
 
-	igt_output_set_pipe(data->output, data->pipe_id);
-
 	/* Overlay rectangle for a rect in the center of the screen */
 	data->or.x = data->mode->hdisplay / 4;
 	data->or.y = data->mode->vdisplay / 4;
-- 
2.35.1

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

* [igt-dev] [i-g-t V2 25/52] tests/kms_plane_lowres: Add support for Bigjoiner
  2022-09-06  9:49 [igt-dev] [i-g-t V2 00/52] Add IGT support for Bigjoiner Bhanuprakash Modem
                   ` (23 preceding siblings ...)
  2022-09-06  9:50 ` [igt-dev] [i-g-t V2 24/52] tests/kms_plane_cursor: " Bhanuprakash Modem
@ 2022-09-06  9:50 ` Bhanuprakash Modem
  2022-09-06  9:50 ` [igt-dev] [i-g-t V2 26/52] tests/kms_plane_multiple: " Bhanuprakash Modem
                   ` (28 subsequent siblings)
  53 siblings, 0 replies; 58+ messages in thread
From: Bhanuprakash Modem @ 2022-09-06  9:50 UTC (permalink / raw)
  To: igt-dev

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.

Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 tests/kms_plane_lowres.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/tests/kms_plane_lowres.c b/tests/kms_plane_lowres.c
index f37dbd16..ca6b0eae 100644
--- a/tests/kms_plane_lowres.c
+++ b/tests/kms_plane_lowres.c
@@ -277,6 +277,9 @@ static void run_test(data_t *data, uint64_t modifier)
 			igt_display_reset(&data->display);
 			igt_output_set_pipe(data->output, data->pipe);
 
+			if (!igt_test_constraint(&data->display))
+				continue;
+
 			data->pipe_crc = igt_pipe_crc_new(data->drm_fd, data->pipe,
 							  INTEL_PIPE_CRC_SOURCE_AUTO);
 
-- 
2.35.1

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

* [igt-dev] [i-g-t V2 26/52] tests/kms_plane_multiple: Add support for Bigjoiner
  2022-09-06  9:49 [igt-dev] [i-g-t V2 00/52] Add IGT support for Bigjoiner Bhanuprakash Modem
                   ` (24 preceding siblings ...)
  2022-09-06  9:50 ` [igt-dev] [i-g-t V2 25/52] tests/kms_plane_lowres: " Bhanuprakash Modem
@ 2022-09-06  9:50 ` Bhanuprakash Modem
  2022-09-06  9:50 ` [igt-dev] [i-g-t V2 27/52] tests/kms_plane_scaling: " Bhanuprakash Modem
                   ` (27 subsequent siblings)
  53 siblings, 0 replies; 58+ messages in thread
From: Bhanuprakash Modem @ 2022-09-06  9:50 UTC (permalink / raw)
  To: igt-dev

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.

Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 tests/kms_plane_multiple.c | 15 ++++++++++++---
 1 file changed, 12 insertions(+), 3 deletions(-)

diff --git a/tests/kms_plane_multiple.c b/tests/kms_plane_multiple.c
index cbe8c189..4b5fd6ef 100644
--- a/tests/kms_plane_multiple.c
+++ b/tests/kms_plane_multiple.c
@@ -102,6 +102,7 @@ get_reference_crc(data_t *data, igt_output_t *output, enum pipe pipe,
 	igt_plane_t *primary;
 	int ret;
 
+	igt_display_reset(&data->display);
 	igt_output_set_pipe(output, pipe);
 
 	primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
@@ -289,6 +290,9 @@ test_plane_position_with_output(data_t *data, enum pipe pipe,
 	bool loop_forever;
 	char info[256];
 
+	igt_info("Using (pipe %s + %s) to run the subtest.\n",
+		 kmstest_pipe_name(pipe), igt_output_name(output));
+
 	if (opt.iterations == LOOP_FOREVER) {
 		loop_forever = true;
 		sprintf(info, "forever");
@@ -374,12 +378,17 @@ static void run_test(data_t *data, uint64_t modifier)
 {
 	enum pipe pipe;
 	igt_output_t *output;
+	igt_display_t *display = &data->display;
 
-	if (!igt_display_has_format_mod(&data->display, DRM_FORMAT_XRGB8888, modifier))
+	if (!igt_display_has_format_mod(display, DRM_FORMAT_XRGB8888, modifier))
 		return;
 
-	for_each_pipe_with_valid_output(&data->display, pipe, output) {
-		igt_display_reset(&data->display);
+	for_each_pipe_with_valid_output(display, pipe, output) {
+		igt_display_reset(display);
+
+		igt_output_set_pipe(output, pipe);
+		if (!igt_test_constraint(display))
+			continue;
 
 		igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), output->name)
 			test_plane_position(data, pipe, output, modifier);
-- 
2.35.1

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

* [igt-dev] [i-g-t V2 27/52] tests/kms_plane_scaling: Add support for Bigjoiner
  2022-09-06  9:49 [igt-dev] [i-g-t V2 00/52] Add IGT support for Bigjoiner Bhanuprakash Modem
                   ` (25 preceding siblings ...)
  2022-09-06  9:50 ` [igt-dev] [i-g-t V2 26/52] tests/kms_plane_multiple: " Bhanuprakash Modem
@ 2022-09-06  9:50 ` Bhanuprakash Modem
  2022-09-06  9:50 ` [igt-dev] [i-g-t V2 28/52] tests/kms_prime: " Bhanuprakash Modem
                   ` (26 subsequent siblings)
  53 siblings, 0 replies; 58+ messages in thread
From: Bhanuprakash Modem @ 2022-09-06  9:50 UTC (permalink / raw)
  To: igt-dev

As many 2x tests are currently running on Pipe-A & B only, those
tests will always SKIP if there is any 8K supported panel in the
config. Instead of Skipping the test, add some intelligence to
the subtest to identify the valid pipe/output combo to execute
the subtest.

Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 tests/kms_plane_scaling.c | 217 +++++++++++++++++++++++++-------------
 1 file changed, 144 insertions(+), 73 deletions(-)

diff --git a/tests/kms_plane_scaling.c b/tests/kms_plane_scaling.c
index fc8250b5..2ab7a80f 100644
--- a/tests/kms_plane_scaling.c
+++ b/tests/kms_plane_scaling.c
@@ -546,30 +546,45 @@ static void test_scaler_with_pixel_format_pipe(data_t *d, int width, int height,
 	}
 }
 
-static void find_connected_pipe(igt_display_t *display, bool second, enum pipe *pipe, igt_output_t **output)
+static enum pipe
+find_connected_pipe(igt_display_t *display, bool second, igt_output_t **output)
 {
-	enum pipe first = PIPE_NONE;
-	igt_output_t *first_output = NULL;
+	enum pipe pipe;
+	bool first_output = false;
 	bool found = false;
 
-	for_each_pipe_with_valid_output(display, *pipe, *output) {
-		if (first == *pipe || *output == first_output)
-			continue;
+	igt_display_reset(display);
 
-		if (second) {
-			first = *pipe;
-			first_output = *output;
-			second = false;
-			continue;
-		}
+	for_each_pipe(display, pipe) {
+		for_each_valid_output_on_pipe(display, pipe, *output) {
+			if((*output)->pending_pipe != PIPE_NONE)
+				continue;
 
-		return;
+			igt_output_set_pipe(*output, pipe);
+			if (igt_test_constraint(display)) {
+				found = true;
+
+				if (second) {
+					first_output = true;
+					second = false;
+					found = false;
+				}
+				break;
+			}
+			igt_output_set_pipe(*output, PIPE_NONE);
+		}
+		if (found)
+			break;
 	}
 
+	igt_display_reset(display);
+
 	if (first_output)
 		igt_require_f(found, "No second valid output found\n");
 	else
 		igt_require_f(found, "No valid outputs found\n");
+
+	return pipe;
 }
 
 static void
@@ -749,13 +764,16 @@ static void test_scaler_with_multi_pipe_plane(data_t *d)
 	enum pipe pipe1, pipe2;
 	int ret1, ret2;
 
-	cleanup_crtc(d);
-
-	find_connected_pipe(display, false, &pipe1, &output1);
-	find_connected_pipe(display, true, &pipe2, &output2);
+	cleanup_fbs(d);
 
+	pipe1 = find_connected_pipe(display, false, &output1);
+	pipe2 = find_connected_pipe(display, true, &output2);
 	igt_skip_on(!output1 || !output2);
 
+	igt_info("Using (pipe %s + %s) and (pipe %s + %s) to run the subtest.\n",
+		 kmstest_pipe_name(pipe1), igt_output_name(output1),
+		 kmstest_pipe_name(pipe2), igt_output_name(output2));
+
 	igt_output_set_pipe(output1, pipe1);
 	igt_output_set_pipe(output2, pipe2);
 
@@ -820,6 +838,21 @@ static void test_scaler_with_multi_pipe_plane(data_t *d)
 	igt_assert_eq(ret1 && ret2, 0);
 }
 
+static bool
+is_valid_combo(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 (!igt_test_constraint(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;
@@ -861,17 +894,22 @@ igt_main_args("", long_opts, help_str, opt_handler, &data)
 		for (int index = 0; index < ARRAY_SIZE(scaler_with_pixel_format_tests); index++) {
 			igt_describe(scaler_with_pixel_format_tests[index].describe);
 			igt_subtest_with_dynamic(scaler_with_pixel_format_tests[index].name) {
-			for_each_pipe_with_single_output(&data.display, pipe, output)
-				igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), igt_output_name(output)) {
-					drmModeModeInfo *mode;
-
-					mode = igt_output_get_mode(output);
-
-					test_scaler_with_pixel_format_pipe(&data,
-							get_width(mode, scaler_with_pixel_format_tests[index].sf),
-							get_height(mode, scaler_with_pixel_format_tests[index].sf),
-							scaler_with_pixel_format_tests[index].is_upscale,
-							pipe, output);
+				for_each_pipe(&data.display, pipe) {
+					for_each_valid_output_on_pipe(&data.display, pipe, output) {
+						if (!is_valid_combo(&data.display, pipe, output))
+							continue;
+
+						igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), igt_output_name(output)) {
+							drmModeModeInfo *mode = igt_output_get_mode(output);
+
+							test_scaler_with_pixel_format_pipe(&data,
+								get_width(mode, scaler_with_pixel_format_tests[index].sf),
+								get_height(mode, scaler_with_pixel_format_tests[index].sf),
+								scaler_with_pixel_format_tests[index].is_upscale,
+								pipe, output);
+						}
+						break;
+					}
 				}
 			}
 		}
@@ -879,17 +917,22 @@ igt_main_args("", long_opts, help_str, opt_handler, &data)
 		for (int index = 0; index < ARRAY_SIZE(scaler_with_rotation_tests); index++) {
 			igt_describe(scaler_with_rotation_tests[index].describe);
 			igt_subtest_with_dynamic(scaler_with_rotation_tests[index].name) {
-			for_each_pipe_with_single_output(&data.display, pipe, output)
-				igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), igt_output_name(output)) {
-					drmModeModeInfo *mode;
-
-					mode = igt_output_get_mode(output);
-
-					test_scaler_with_rotation_pipe(&data,
-							get_width(mode, scaler_with_rotation_tests[index].sf),
-							get_height(mode, scaler_with_rotation_tests[index].sf),
-							scaler_with_rotation_tests[index].is_upscale,
-							pipe, output);
+				for_each_pipe(&data.display, pipe) {
+					for_each_valid_output_on_pipe(&data.display, pipe, output) {
+						if (!is_valid_combo(&data.display, pipe, output))
+							continue;
+
+						igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), igt_output_name(output)) {
+							drmModeModeInfo *mode = igt_output_get_mode(output);
+
+							test_scaler_with_rotation_pipe(&data,
+								get_width(mode, scaler_with_rotation_tests[index].sf),
+								get_height(mode, scaler_with_rotation_tests[index].sf),
+								scaler_with_rotation_tests[index].is_upscale,
+								pipe, output);
+						}
+						break;
+					}
 				}
 			}
 		}
@@ -897,85 +940,113 @@ igt_main_args("", long_opts, help_str, opt_handler, &data)
 		for (int index = 0; index < ARRAY_SIZE(scaler_with_modifiers_tests); index++) {
 			igt_describe(scaler_with_modifiers_tests[index].describe);
 			igt_subtest_with_dynamic(scaler_with_modifiers_tests[index].name) {
-			for_each_pipe_with_single_output(&data.display, pipe, output)
-				igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), igt_output_name(output)) {
-					drmModeModeInfo *mode;
-
-					mode = igt_output_get_mode(output);
-
-					test_scaler_with_modifier_pipe(&data,
-							get_width(mode, scaler_with_rotation_tests[index].sf),
-							get_height(mode, scaler_with_rotation_tests[index].sf),
-							scaler_with_rotation_tests[index].is_upscale,
-							pipe, output);
+				for_each_pipe(&data.display, pipe) {
+					for_each_valid_output_on_pipe(&data.display, pipe, output) {
+						if (!is_valid_combo(&data.display, pipe, output))
+							continue;
+
+						igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), igt_output_name(output)) {
+							drmModeModeInfo *mode = igt_output_get_mode(output);
+
+							test_scaler_with_modifier_pipe(&data,
+								get_width(mode, scaler_with_rotation_tests[index].sf),
+								get_height(mode, scaler_with_rotation_tests[index].sf),
+								scaler_with_rotation_tests[index].is_upscale,
+								pipe, output);
+						}
+						break;
+					}
 				}
 			}
 		}
 
 		igt_describe("Tests scaling with clipping and clamping, pixel formats.");
 		igt_subtest_with_dynamic("plane-scaler-with-clipping-clamping-pixel-formats") {
-			for_each_pipe_with_single_output(&data.display, pipe, output) {
-				drmModeModeInfo *mode;
+			for_each_pipe(&data.display, pipe) {
+				for_each_valid_output_on_pipe(&data.display, pipe, output) {
+					if (!is_valid_combo(&data.display, pipe, output))
+						continue;
 
-				mode = igt_output_get_mode(output);
+					igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), igt_output_name(output)) {
+						drmModeModeInfo *mode = igt_output_get_mode(output);
 
-				igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), igt_output_name(output))
-					test_scaler_with_pixel_format_pipe(&data, mode->hdisplay + 100,
+						test_scaler_with_pixel_format_pipe(&data, mode->hdisplay + 100,
 							mode->vdisplay + 100, false, pipe, output);
+					}
+					break;
+				}
 			}
 		}
 
 		igt_describe("Tests scaling with clipping and clamping, rotation.");
 		igt_subtest_with_dynamic("plane-scaler-with-clipping-clamping-rotation") {
-			for_each_pipe_with_single_output(&data.display, pipe, output) {
-				drmModeModeInfo *mode;
+			for_each_pipe(&data.display, pipe) {
+				for_each_valid_output_on_pipe(&data.display, pipe, output) {
+					if (!is_valid_combo(&data.display, pipe, output))
+						continue;
 
-				mode = igt_output_get_mode(output);
+					igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), igt_output_name(output)) {
+						drmModeModeInfo *mode = igt_output_get_mode(output);
 
-				igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), igt_output_name(output))
-					test_scaler_with_rotation_pipe(&data, mode->hdisplay + 100,
+						test_scaler_with_rotation_pipe(&data, mode->hdisplay + 100,
 							mode->vdisplay + 100, false, pipe, output);
+					}
+					break;
+				}
 			}
 		}
 
 		igt_describe("Tests scaling with clipping and clamping, modifiers.");
 		igt_subtest_with_dynamic("plane-scaler-with-clipping-clamping-modifiers") {
-			for_each_pipe_with_single_output(&data.display, pipe, output) {
-				drmModeModeInfo *mode;
-
-				mode = igt_output_get_mode(output);
-
-				igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), igt_output_name(output))
-					test_scaler_with_modifier_pipe(&data, mode->hdisplay + 100,
+			for_each_pipe(&data.display, pipe) {
+				for_each_valid_output_on_pipe(&data.display, pipe, output) {
+					if (!is_valid_combo(&data.display, pipe, output))
+						continue;
+
+					igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), igt_output_name(output)) {
+						drmModeModeInfo *mode = igt_output_get_mode(output);
+						test_scaler_with_modifier_pipe(&data, mode->hdisplay + 100,
 							mode->vdisplay + 100, false, pipe, output);
+					}
+					break;
+				}
 			}
 		}
 
 		for (int index = 0; index < ARRAY_SIZE(scaler_with_2_planes_tests); index++) {
 			igt_describe(scaler_with_2_planes_tests[index].describe);
 			igt_subtest_with_dynamic(scaler_with_2_planes_tests[index].name) {
-			for_each_pipe_with_single_output(&data.display, pipe, output)
-				igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), igt_output_name(output)) {
-					drmModeModeInfo *mode;
+			for_each_pipe(&data.display, pipe) {
+				for_each_valid_output_on_pipe(&data.display, pipe, output) {
+					if (!is_valid_combo(&data.display, pipe, output))
+						continue;
 
-					mode = igt_output_get_mode(output);
+					igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), igt_output_name(output)) {
+						drmModeModeInfo *mode = igt_output_get_mode(output);
 
-					test_planes_scaling_combo(&data,
+						test_planes_scaling_combo(&data,
 							get_width(mode, scaler_with_2_planes_tests[index].sf_plane1),
 							get_height(mode, scaler_with_2_planes_tests[index].sf_plane1),
 							get_width(mode, scaler_with_2_planes_tests[index].sf_plane2),
 							get_height(mode, scaler_with_2_planes_tests[index].sf_plane2),
 							pipe, output, scaler_with_2_planes_tests[index].test_type);
+					}
+					break;
 				}
 			}
+			}
 		}
 
 		igt_describe("Negative test for number of scalers per pipe.");
 		igt_subtest_with_dynamic("invalid-num-scalers") {
-			for_each_pipe_with_valid_output(&data.display, pipe, output)
+			for_each_pipe_with_valid_output(&data.display, pipe, output) {
+				if (!is_valid_combo(&data.display, pipe, output))
+					continue;
+
 				igt_dynamic_f("pipe-%s-%s-invalid-num-scalers",
 					       kmstest_pipe_name(pipe), igt_output_name(output))
 					test_invalid_num_scalers(&data, pipe, output);
+			}
 		}
 	}
 
-- 
2.35.1

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

* [igt-dev] [i-g-t V2 28/52] tests/kms_prime: Add support for Bigjoiner
  2022-09-06  9:49 [igt-dev] [i-g-t V2 00/52] Add IGT support for Bigjoiner Bhanuprakash Modem
                   ` (26 preceding siblings ...)
  2022-09-06  9:50 ` [igt-dev] [i-g-t V2 27/52] tests/kms_plane_scaling: " Bhanuprakash Modem
@ 2022-09-06  9:50 ` Bhanuprakash Modem
  2022-09-06  9:50 ` [igt-dev] [i-g-t V2 29/52] tests/kms_properties: " Bhanuprakash Modem
                   ` (25 subsequent siblings)
  53 siblings, 0 replies; 58+ messages in thread
From: Bhanuprakash Modem @ 2022-09-06  9:50 UTC (permalink / raw)
  To: igt-dev

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.

Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 tests/kms_prime.c | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/tests/kms_prime.c b/tests/kms_prime.c
index 3df690e0..a2a7ce1f 100644
--- a/tests/kms_prime.c
+++ b/tests/kms_prime.c
@@ -89,14 +89,17 @@ static igt_output_t *setup_display(int importer_fd, igt_display_t *display,
 	bool found = false;
 
 	for_each_pipe_with_valid_output(display, *pipe, output) {
-		found = true;
-		break;
+		igt_display_reset(display);
+
+		igt_output_set_pipe(output, *pipe);
+		if (igt_test_constraint(display)) {
+			found = true;
+			break;
+		}
 	}
 
 	igt_require_f(found, "No valid connector/pipe found\n");
 
-	igt_display_reset(display);
-	igt_output_set_pipe(output, *pipe);
 	return output;
 }
 
-- 
2.35.1

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

* [igt-dev] [i-g-t V2 29/52] tests/kms_properties: Add support for Bigjoiner
  2022-09-06  9:49 [igt-dev] [i-g-t V2 00/52] Add IGT support for Bigjoiner Bhanuprakash Modem
                   ` (27 preceding siblings ...)
  2022-09-06  9:50 ` [igt-dev] [i-g-t V2 28/52] tests/kms_prime: " Bhanuprakash Modem
@ 2022-09-06  9:50 ` Bhanuprakash Modem
  2022-09-06  9:50 ` [igt-dev] [i-g-t V2 30/52] tests/kms_rmfb: " Bhanuprakash Modem
                   ` (24 subsequent siblings)
  53 siblings, 0 replies; 58+ messages in thread
From: Bhanuprakash Modem @ 2022-09-06  9:50 UTC (permalink / raw)
  To: igt-dev

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.

Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 tests/kms_properties.c | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/tests/kms_properties.c b/tests/kms_properties.c
index dd5a93aa..a9c2b7df 100644
--- a/tests/kms_properties.c
+++ b/tests/kms_properties.c
@@ -241,6 +241,12 @@ static void plane_properties(igt_display_t *display, bool atomic)
 		found = false;
 
 		for_each_valid_output_on_pipe(display, pipe, output) {
+			igt_display_reset(display);
+
+			igt_output_set_pipe(output, pipe);
+			if (!igt_test_constraint(display))
+				continue;
+
 			found_any = found = true;
 
 			run_plane_property_tests(display, pipe, output, atomic);
@@ -264,6 +270,12 @@ static void crtc_properties(igt_display_t *display, bool atomic)
 		found = false;
 
 		for_each_valid_output_on_pipe(display, pipe, output) {
+			igt_display_reset(display);
+
+			igt_output_set_pipe(output, pipe);
+			if (!igt_test_constraint(display))
+				continue;
+
 			found_any_valid_pipe = found = true;
 
 			run_crtc_property_tests(display, pipe, output, atomic);
@@ -290,6 +302,12 @@ static void connector_properties(igt_display_t *display, bool atomic)
 			if (!igt_pipe_connector_valid(pipe, output))
 				continue;
 
+			igt_display_reset(display);
+
+			igt_output_set_pipe(output, pipe);
+			if (!igt_test_constraint(display))
+				continue;
+
 			found = true;
 			run_connector_property_tests(display, pipe, output, atomic);
 			break;
-- 
2.35.1

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

* [igt-dev] [i-g-t V2 30/52] tests/kms_rmfb: Add support for Bigjoiner
  2022-09-06  9:49 [igt-dev] [i-g-t V2 00/52] Add IGT support for Bigjoiner Bhanuprakash Modem
                   ` (28 preceding siblings ...)
  2022-09-06  9:50 ` [igt-dev] [i-g-t V2 29/52] tests/kms_properties: " Bhanuprakash Modem
@ 2022-09-06  9:50 ` Bhanuprakash Modem
  2022-09-06  9:50 ` [igt-dev] [i-g-t V2 31/52] tests/kms_rotation_crc: " Bhanuprakash Modem
                   ` (23 subsequent siblings)
  53 siblings, 0 replies; 58+ messages in thread
From: Bhanuprakash Modem @ 2022-09-06  9:50 UTC (permalink / raw)
  To: igt-dev

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.

Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 tests/kms_rmfb.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/tests/kms_rmfb.c b/tests/kms_rmfb.c
index 7e43e1bd..2bf4968b 100644
--- a/tests/kms_rmfb.c
+++ b/tests/kms_rmfb.c
@@ -155,8 +155,15 @@ run_rmfb_test(struct rmfb_data *data, bool reopen)
 {
 	igt_output_t *output;
 	enum pipe pipe;
+	igt_display_t *display = &data->display;
+
+	for_each_pipe_with_single_output(display, pipe, output) {
+		igt_display_reset(display);
+
+		igt_output_set_pipe(output, pipe);
+		if (!igt_test_constraint(display))
+			continue;
 
-	for_each_pipe_with_single_output(&data->display, pipe, output) {
 		igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe),
 			      igt_output_name(output))
 			test_rmfb(data, output, pipe, reopen);
@@ -192,7 +199,6 @@ igt_main
 		igt_describe(tests[i].description);
 		igt_subtest_with_dynamic(tests[i].name) {
 			run_rmfb_test(&data, tests[i].reopen);
-
 		}
 	}
 
-- 
2.35.1

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

* [igt-dev] [i-g-t V2 31/52] tests/kms_rotation_crc: Add support for Bigjoiner
  2022-09-06  9:49 [igt-dev] [i-g-t V2 00/52] Add IGT support for Bigjoiner Bhanuprakash Modem
                   ` (29 preceding siblings ...)
  2022-09-06  9:50 ` [igt-dev] [i-g-t V2 30/52] tests/kms_rmfb: " Bhanuprakash Modem
@ 2022-09-06  9:50 ` Bhanuprakash Modem
  2022-09-06  9:50 ` [igt-dev] [i-g-t V2 32/52] tests/kms_scaling_modes: " Bhanuprakash Modem
                   ` (22 subsequent siblings)
  53 siblings, 0 replies; 58+ messages in thread
From: Bhanuprakash Modem @ 2022-09-06  9:50 UTC (permalink / raw)
  To: igt-dev

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.

Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 tests/kms_rotation_crc.c | 25 ++++++++++++++++++++++++-
 1 file changed, 24 insertions(+), 1 deletion(-)

diff --git a/tests/kms_rotation_crc.c b/tests/kms_rotation_crc.c
index 50869a08..52551c06 100644
--- a/tests/kms_rotation_crc.c
+++ b/tests/kms_rotation_crc.c
@@ -198,6 +198,8 @@ static void prepare_crtc(data_t *data, igt_output_t *output, enum pipe pipe,
 	cleanup_crtc(data);
 
 	igt_output_set_pipe(output, pipe);
+	igt_require(igt_test_constraint(display));
+
 	igt_plane_set_rotation(plane, IGT_ROTATION_0);
 
 	/* create the pipe_crc object for this pipe */
@@ -461,6 +463,7 @@ static void test_plane_rotation(data_t *data, int plane_type, bool test_bad_form
 	igt_output_t *output;
 	enum pipe pipe;
 	int pipe_count = 0, connected_outputs = 0;
+	bool found = false;
 
 	if (is_amdgpu_device(data->gfx_fd))
 		igt_require(plane_type != DRM_PLANE_TYPE_OVERLAY &&
@@ -478,6 +481,13 @@ static void test_plane_rotation(data_t *data, int plane_type, bool test_bad_form
 		igt_plane_t *plane;
 		int i, j, c;
 
+		igt_display_reset(display);
+
+		igt_output_set_pipe(output, pipe);
+		if (!igt_test_constraint(display))
+			continue;
+
+		found = true;
 		mode = igt_output_get_mode(output);
 
 		/*
@@ -568,6 +578,7 @@ static void test_plane_rotation(data_t *data, int plane_type, bool test_bad_form
 			igt_pipe_crc_stop(data->pipe_crc);
 		}
 	}
+	igt_require_f(found, "No valid pipe/output combo found.\n");
 }
 
 typedef struct {
@@ -677,6 +688,7 @@ static void test_multi_plane_rotation(data_t *data, enum pipe pipe)
 	bool have_crc; // flag if can use previously logged crc for comparison
 	igt_crc_t crclog[16] = {}; //4 * 4 rotation crc storage for packed formats
 	char *str1, *str2; // for debug printouts
+	bool found = false;
 
 	/*
 	 * These are those modes which are tested. For testing feel interesting
@@ -706,11 +718,20 @@ static void test_multi_plane_rotation(data_t *data, enum pipe pipe)
 	{IGT_ROTATION_270, .2f, .4f, I915_FORMAT_MOD_Yf_TILED },
 	};
 
+	igt_display_require_output(display);
+
 	for_each_valid_output_on_pipe(display, pipe, output) {
 		int i, j, k, l, flipsw, fliphw;
+
+		igt_display_reset(display);
+
 		igt_output_set_pipe(output, pipe);
+		if (!igt_test_constraint(display))
+			continue;
+
+		found = true;
+
 		mode = igt_output_get_mode(output);
-		igt_display_require_output(display);
 		igt_display_commit2(display, COMMIT_ATOMIC);
 
 		used_w = TEST_WIDTH(mode);
@@ -890,6 +911,8 @@ static void test_multi_plane_rotation(data_t *data, enum pipe pipe)
 			igt_remove_fb(data->gfx_fd, &planeconfigs[c].fbs[d][MULTIPLANE_ROTATED]);
 		}
 	}
+
+	igt_require_f(found, "No valid pipe/output combo found.\n");
 }
 
 static void test_plane_rotation_exhaust_fences(data_t *data,
-- 
2.35.1

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

* [igt-dev] [i-g-t V2 32/52] tests/kms_scaling_modes: Add support for Bigjoiner
  2022-09-06  9:49 [igt-dev] [i-g-t V2 00/52] Add IGT support for Bigjoiner Bhanuprakash Modem
                   ` (30 preceding siblings ...)
  2022-09-06  9:50 ` [igt-dev] [i-g-t V2 31/52] tests/kms_rotation_crc: " Bhanuprakash Modem
@ 2022-09-06  9:50 ` Bhanuprakash Modem
  2022-09-06  9:50 ` [igt-dev] [i-g-t V2 33/52] tests/kms_sequence: " Bhanuprakash Modem
                   ` (21 subsequent siblings)
  53 siblings, 0 replies; 58+ messages in thread
From: Bhanuprakash Modem @ 2022-09-06  9:50 UTC (permalink / raw)
  To: igt-dev

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.

Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 tests/kms_scaling_modes.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/tests/kms_scaling_modes.c b/tests/kms_scaling_modes.c
index 8e80189a..a0b268ae 100644
--- a/tests/kms_scaling_modes.c
+++ b/tests/kms_scaling_modes.c
@@ -93,13 +93,17 @@ static void test_scaling_mode(data_t *data, uint32_t flags)
 	enum pipe pipe;
 
 	for_each_pipe_with_valid_output(display, pipe, output) {
+		igt_display_reset(display);
+
 		if (!has_scaling_mode(output))
 			continue;
 
+		igt_output_set_pipe(output, pipe);
+		if (!igt_test_constraint(display))
+			continue;
+
 		igt_dynamic_f("%s-pipe-%s", output->name, kmstest_pipe_name(pipe))
 			test_scaling_mode_on_output(display, pipe, output, flags);
-
-		igt_display_reset(display);
 	}
 }
 
-- 
2.35.1

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

* [igt-dev] [i-g-t V2 33/52] tests/kms_sequence: Add support for Bigjoiner
  2022-09-06  9:49 [igt-dev] [i-g-t V2 00/52] Add IGT support for Bigjoiner Bhanuprakash Modem
                   ` (31 preceding siblings ...)
  2022-09-06  9:50 ` [igt-dev] [i-g-t V2 32/52] tests/kms_scaling_modes: " Bhanuprakash Modem
@ 2022-09-06  9:50 ` Bhanuprakash Modem
  2022-09-06  9:50 ` [igt-dev] [i-g-t V2 34/52] tests/kms_universal_plane: " Bhanuprakash Modem
                   ` (20 subsequent siblings)
  53 siblings, 0 replies; 58+ messages in thread
From: Bhanuprakash Modem @ 2022-09-06  9:50 UTC (permalink / raw)
  To: igt-dev

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.

Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 tests/kms_sequence.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/tests/kms_sequence.c b/tests/kms_sequence.c
index 1655d7d1..e6442e8e 100644
--- a/tests/kms_sequence.c
+++ b/tests/kms_sequence.c
@@ -285,6 +285,12 @@ igt_main
 				     "drmCrtcQueueSequence");
 			igt_subtest_with_dynamic_f("%s-%s", f->name, m->name) {
 				for_each_pipe_with_valid_output(&data.display, p, output) {
+					igt_display_reset(&data.display);
+
+					igt_output_set_pipe(output, p);
+					if (!igt_test_constraint(&data.display))
+						continue;
+
 					igt_dynamic_f("%s-pipe-%s", igt_output_name(output), kmstest_pipe_name(p)) {
 						data.pipe = p;
 						data.output = output;
-- 
2.35.1

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

* [igt-dev] [i-g-t V2 34/52] tests/kms_universal_plane: Add support for Bigjoiner
  2022-09-06  9:49 [igt-dev] [i-g-t V2 00/52] Add IGT support for Bigjoiner Bhanuprakash Modem
                   ` (32 preceding siblings ...)
  2022-09-06  9:50 ` [igt-dev] [i-g-t V2 33/52] tests/kms_sequence: " Bhanuprakash Modem
@ 2022-09-06  9:50 ` Bhanuprakash Modem
  2022-09-06  9:50 ` [igt-dev] [i-g-t V2 35/52] tests/kms_vblank: " Bhanuprakash Modem
                   ` (19 subsequent siblings)
  53 siblings, 0 replies; 58+ messages in thread
From: Bhanuprakash Modem @ 2022-09-06  9:50 UTC (permalink / raw)
  To: igt-dev

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.

Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 tests/kms_universal_plane.c | 93 +++++++++++++++++++++++++++++++++----
 1 file changed, 83 insertions(+), 10 deletions(-)

diff --git a/tests/kms_universal_plane.c b/tests/kms_universal_plane.c
index 3cb6d704..52f7c107 100644
--- a/tests/kms_universal_plane.c
+++ b/tests/kms_universal_plane.c
@@ -366,6 +366,9 @@ sanity_test_pipe(data_t *data, enum pipe pipe, igt_output_t *output)
 
 	igt_require_pipe(&data->display, pipe);
 
+	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);
 	mode = igt_output_get_mode(output);
 
@@ -479,6 +482,9 @@ pageflip_test_pipe(data_t *data, enum pipe pipe, igt_output_t *output)
 
 	igt_require_pipe(&data->display, pipe);
 
+	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);
 
 	pageflip_test_init(&test, output, pipe);
@@ -582,6 +588,9 @@ cursor_leak_test_pipe(data_t *data, enum pipe pipe, igt_output_t *output)
 	igt_require(display->has_cursor_plane);
 	igt_require_intel(data->drm_fd);
 
+	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);
 	mode = igt_output_get_mode(output);
 
@@ -710,6 +719,9 @@ gen9_test_pipe(data_t *data, enum pipe pipe, igt_output_t *output)
 	igt_skip_on(data->display_ver < 9);
 	igt_require_pipe(&data->display, pipe);
 
+	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);
 
 	gen9_test_init(&test, output, pipe);
@@ -745,6 +757,21 @@ gen9_test_pipe(data_t *data, enum pipe pipe, igt_output_t *output)
 	gen9_test_fini(&test, output);
 }
 
+static bool
+is_valid_combo(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 (!igt_test_constraint(display))
+		ret = false;
+	igt_output_set_pipe(output, PIPE_NONE);
+
+	return ret;
+}
+
 static void
 run_tests_for_pipe(data_t *data, enum pipe pipe)
 {
@@ -763,34 +790,79 @@ run_tests_for_pipe(data_t *data, enum pipe pipe)
 
 	igt_describe("Check the switching between different primary plane fbs with CRTC off");
 	igt_subtest_f("universal-plane-pipe-%s-functional",
-		      kmstest_pipe_name(pipe))
-		for_each_valid_output_on_pipe(&data->display, pipe, output)
+		      kmstest_pipe_name(pipe)) {
+		bool found = false;
+
+		for_each_valid_output_on_pipe(&data->display, pipe, output) {
+			if (!is_valid_combo(&data->display, pipe, output))
+				continue;
+
+			found = true;
 			functional_test_pipe(data, pipe, output);
+		}
+		igt_require_f(found, "No valid pipe/output combo found.\n");
+	}
 
 	igt_describe("Test for scale-up or scale-down using universal plane API without covering CRTC");
 	igt_subtest_f("universal-plane-pipe-%s-sanity",
-		      kmstest_pipe_name(pipe))
-		for_each_valid_output_on_pipe(&data->display, pipe, output)
+		      kmstest_pipe_name(pipe)) {
+		bool found = false;
+
+		for_each_valid_output_on_pipe(&data->display, pipe, output) {
+			if (!is_valid_combo(&data->display, pipe, output))
+				continue;
+
+			found = true;
 			sanity_test_pipe(data, pipe, output);
+		}
+		igt_require_f(found, "No valid pipe/output combo found.\n");
+	}
 
 	igt_describe("Check pageflips while primary plane is disabled before IOCTL or between IOCTL"
 			" and pageflip execution");
 	igt_subtest_f("disable-primary-vs-flip-pipe-%s",
-		      kmstest_pipe_name(pipe))
-		for_each_valid_output_on_pipe(&data->display, pipe, output)
+		      kmstest_pipe_name(pipe)) {
+		bool found = false;
+
+		for_each_valid_output_on_pipe(&data->display, pipe, output) {
+			if (!is_valid_combo(&data->display, pipe, output))
+				continue;
+
+			found = true;
 			pageflip_test_pipe(data, pipe, output);
+		}
+		igt_require_f(found, "No valid pipe/output combo found.\n");
+	}
 
 	igt_describe("Check for cursor leaks after performing cursor operations");
 	igt_subtest_f("cursor-fb-leak-pipe-%s",
-		      kmstest_pipe_name(pipe))
-		for_each_valid_output_on_pipe(&data->display, pipe, output)
+		      kmstest_pipe_name(pipe)) {
+		bool found = false;
+
+		for_each_valid_output_on_pipe(&data->display, pipe, output) {
+			if (!is_valid_combo(&data->display, pipe, output))
+				continue;
+
+			found = true;
 			cursor_leak_test_pipe(data, pipe, output);
+		}
+		igt_require_f(found, "No valid pipe/output combo found.\n");
+	}
 
 	igt_describe("Check if pageflip succeeds in windowed setting");
 	igt_subtest_f("universal-plane-gen9-features-pipe-%s",
-		      kmstest_pipe_name(pipe))
-		for_each_valid_output_on_pipe(&data->display, pipe, output)
+		      kmstest_pipe_name(pipe)) {
+		bool found = false;
+
+		for_each_valid_output_on_pipe(&data->display, pipe, output) {
+			if (!is_valid_combo(&data->display, pipe, output))
+				continue;
+
+			found = true;
 			gen9_test_pipe(data, pipe, output);
+		}
+		igt_require_f(found, "No valid pipe/output combo found.\n");
+	}
 }
 
 static data_t data;
@@ -808,6 +880,7 @@ igt_main
 
 		igt_require_pipe_crc(data.drm_fd);
 		igt_display_require(&data.display, data.drm_fd);
+		igt_display_require_output(&data.display);
 	}
 
 	for_each_pipe_static(pipe) {
-- 
2.35.1

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

* [igt-dev] [i-g-t V2 35/52] tests/kms_vblank: Add support for Bigjoiner
  2022-09-06  9:49 [igt-dev] [i-g-t V2 00/52] Add IGT support for Bigjoiner Bhanuprakash Modem
                   ` (33 preceding siblings ...)
  2022-09-06  9:50 ` [igt-dev] [i-g-t V2 34/52] tests/kms_universal_plane: " Bhanuprakash Modem
@ 2022-09-06  9:50 ` Bhanuprakash Modem
  2022-09-06  9:50 ` [igt-dev] [i-g-t V2 36/52] tests/kms_vrr: " Bhanuprakash Modem
                   ` (18 subsequent siblings)
  53 siblings, 0 replies; 58+ messages in thread
From: Bhanuprakash Modem @ 2022-09-06  9:50 UTC (permalink / raw)
  To: igt-dev

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.

Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 tests/kms_vblank.c | 53 ++++++++++++++++++++++++++++++++++++++++++++--
 1 file changed, 51 insertions(+), 2 deletions(-)

diff --git a/tests/kms_vblank.c b/tests/kms_vblank.c
index e65e8522..1d7cd135 100644
--- a/tests/kms_vblank.c
+++ b/tests/kms_vblank.c
@@ -175,6 +175,21 @@ static void run_test(data_t *data, void (*testfunc)(data_t *, int, int))
 	cleanup_crtc(data, fd, output);
 }
 
+static bool
+is_valid_combo(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 (!igt_test_constraint(display))
+		ret = false;
+	igt_output_set_pipe(output, PIPE_NONE);
+
+	return ret;
+}
+
 static void crtc_id_subtest(data_t *data, int fd)
 {
 	igt_display_t *display = &data->display;
@@ -188,6 +203,15 @@ static void crtc_id_subtest(data_t *data, int fd)
 		uint64_t val;
 		union drm_wait_vblank vbl;
 
+		igt_display_reset(display);
+
+		igt_output_set_pipe(output, p);
+		if (!igt_test_constraint(display))
+			continue;
+
+		igt_info("Using (pipe %s + %s) to run the subtest.\n",
+			 kmstest_pipe_name(p), igt_output_name(output));
+
 		crtc_id = display->pipes[p].crtc_id;
 		if (drmGetCap(display->drm_fd, DRM_CAP_CRTC_IN_VBLANK_EVENT, &val) == 0)
 			expected_crtc_id = crtc_id;
@@ -449,10 +473,18 @@ static void run_subtests_for_pipe(data_t *data)
 			igt_subtest_f("pipe-%s-%s-%s",
 				      kmstest_pipe_name(data->pipe),
 				      f->name, m->name) {
+				int found = 0;
+
 				for_each_valid_output_on_pipe(&data->display, data->pipe, data->output) {
+					if (!is_valid_combo(&data->display, data->pipe, data->output))
+						continue;
+
 					data->flags = m->flags | NOHANG;
 					run_test(data, f->func);
+
+					found++;
 				}
+				igt_require_f(found, "No valid pipe/output combo found.\n");
 			}
 
 			/* Skip the -hang version if NOHANG flag is set */
@@ -464,13 +496,20 @@ static void run_subtests_for_pipe(data_t *data)
 				      kmstest_pipe_name(data->pipe),
 				      f->name, m->name) {
 				igt_hang_t hang;
+				int found = 0;
 
 				hang = igt_allow_hang(data->display.drm_fd, 0, 0);
 				for_each_valid_output_on_pipe(&data->display, data->pipe, data->output) {
+					if (!is_valid_combo(&data->display, data->pipe, data->output))
+						continue;
+
 					data->flags = m->flags;
 					run_test(data, f->func);
+
+					found++;
 				}
 				igt_disallow_hang(data->display.drm_fd, hang);
+				igt_require_f(found, "No valid pipe/output combo found.\n");
 			}
 		}
 	}
@@ -482,12 +521,22 @@ static void invalid_subtest(data_t *data, int fd)
 	unsigned long valid_flags;
 	igt_display_t* display = &data->display;
 	enum pipe pipe = 0;
-	igt_output_t* output = igt_get_single_output_for_pipe(display, pipe);
+	igt_output_t *output;
+
+	igt_display_reset(display);
+
+	output = igt_get_single_output_for_pipe(display, pipe);
+	igt_require(output);
 
 	data->pipe = pipe;
 	data->output = output;
+
 	igt_output_set_pipe(output, pipe);
-	igt_display_require_output_on_pipe(display, pipe);
+	igt_require(igt_test_constraint(display));
+
+	igt_info("Using (pipe %s + %s) to run the subtest.\n",
+		 kmstest_pipe_name(pipe), igt_output_name(output));
+
 	prepare_crtc(data, fd, output);
 
 	/* First check all is well with a simple query */
-- 
2.35.1

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

* [igt-dev] [i-g-t V2 36/52] tests/kms_vrr: Add support for Bigjoiner
  2022-09-06  9:49 [igt-dev] [i-g-t V2 00/52] Add IGT support for Bigjoiner Bhanuprakash Modem
                   ` (34 preceding siblings ...)
  2022-09-06  9:50 ` [igt-dev] [i-g-t V2 35/52] tests/kms_vblank: " Bhanuprakash Modem
@ 2022-09-06  9:50 ` Bhanuprakash Modem
  2022-09-06  9:50 ` [igt-dev] [i-g-t V2 37/52] tests/i915/kms_big_fb: " Bhanuprakash Modem
                   ` (17 subsequent siblings)
  53 siblings, 0 replies; 58+ messages in thread
From: Bhanuprakash Modem @ 2022-09-06  9:50 UTC (permalink / raw)
  To: igt-dev

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.

Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 tests/kms_vrr.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/tests/kms_vrr.c b/tests/kms_vrr.c
index 8976d4a6..4d7c771d 100644
--- a/tests/kms_vrr.c
+++ b/tests/kms_vrr.c
@@ -444,6 +444,12 @@ run_vrr_test(data_t *data, test_t test, uint32_t flags)
 
 		for_each_pipe(&data->display, pipe) {
 			if (igt_pipe_connector_valid(pipe, output)) {
+				igt_display_reset(&data->display);
+
+				igt_output_set_pipe(output, pipe);
+				if (!igt_test_constraint(&data->display))
+					continue;
+
 				igt_dynamic_f("pipe-%s-%s",
 					      kmstest_pipe_name(pipe), output->name)
 					test(data, pipe, output, flags);
-- 
2.35.1

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

* [igt-dev] [i-g-t V2 37/52] tests/i915/kms_big_fb: Add support for Bigjoiner
  2022-09-06  9:49 [igt-dev] [i-g-t V2 00/52] Add IGT support for Bigjoiner Bhanuprakash Modem
                   ` (35 preceding siblings ...)
  2022-09-06  9:50 ` [igt-dev] [i-g-t V2 36/52] tests/kms_vrr: " Bhanuprakash Modem
@ 2022-09-06  9:50 ` Bhanuprakash Modem
  2022-09-06  9:50 ` [igt-dev] [i-g-t V2 38/52] tests/i915/kms_big_joiner: Negative tests " Bhanuprakash Modem
                   ` (16 subsequent siblings)
  53 siblings, 0 replies; 58+ messages in thread
From: Bhanuprakash Modem @ 2022-09-06  9:50 UTC (permalink / raw)
  To: igt-dev

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.

Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 tests/i915/kms_big_fb.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/tests/i915/kms_big_fb.c b/tests/i915/kms_big_fb.c
index 0c4cd95e..1cb72a73 100644
--- a/tests/i915/kms_big_fb.c
+++ b/tests/i915/kms_big_fb.c
@@ -397,6 +397,9 @@ static bool test_pipe(data_t *data)
 	igt_plane_t *primary;
 	bool ret = false;
 
+	igt_info("Using (pipe %s + %s) to run the subtest.\n",
+		 kmstest_pipe_name(data->pipe), igt_output_name(data->output));
+
 	if (data->format == DRM_FORMAT_C8 &&
 	    !igt_pipe_obj_has_prop(&data->display.pipes[data->pipe],
 				   IGT_CRTC_GAMMA_LUT))
@@ -472,6 +475,10 @@ max_hw_stride_async_flip_test(data_t *data)
 	igt_crc_t compare_crc, async_crc;
 
 	igt_require(data->display.is_atomic);
+
+	igt_info("Using (pipe %s + %s) to run the subtest.\n",
+		 kmstest_pipe_name(data->pipe), igt_output_name(data->output));
+
 	igt_output_set_pipe(data->output, data->pipe);
 
 	primary = igt_output_get_plane_type(data->output, DRM_PLANE_TYPE_PRIMARY);
@@ -592,6 +599,12 @@ static void test_scanout(data_t *data)
 		    data->format, data->modifier);
 
 	for_each_pipe_with_valid_output(&data->display, data->pipe, data->output) {
+		igt_display_reset(&data->display);
+
+		igt_output_set_pipe(data->output, data->pipe);
+		if (!igt_test_constraint(&data->display))
+			continue;
+
 		if (data->async_flip_test) {
 			if (max_hw_stride_async_flip_test(data))
 				return;
-- 
2.35.1

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

* [igt-dev] [i-g-t V2 38/52] tests/i915/kms_big_joiner: Negative tests for Bigjoiner
  2022-09-06  9:49 [igt-dev] [i-g-t V2 00/52] Add IGT support for Bigjoiner Bhanuprakash Modem
                   ` (36 preceding siblings ...)
  2022-09-06  9:50 ` [igt-dev] [i-g-t V2 37/52] tests/i915/kms_big_fb: " Bhanuprakash Modem
@ 2022-09-06  9:50 ` Bhanuprakash Modem
  2022-09-06  9:50 ` [igt-dev] [i-g-t V2 39/52] tests/i915/kms_busy: Add support " Bhanuprakash Modem
                   ` (15 subsequent siblings)
  53 siblings, 0 replies; 58+ messages in thread
From: Bhanuprakash Modem @ 2022-09-06  9:50 UTC (permalink / raw)
  To: igt-dev

Add negative tests to validate 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.

Kernel should reject the commit/modeset if above conditions won't met.

Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 tests/i915/kms_big_joiner.c | 118 ++++++++++++++++++++++++++++++------
 1 file changed, 98 insertions(+), 20 deletions(-)

diff --git a/tests/i915/kms_big_joiner.c b/tests/i915/kms_big_joiner.c
index 7d400616..2e189fc8 100644
--- a/tests/i915/kms_big_joiner.c
+++ b/tests/i915/kms_big_joiner.c
@@ -43,6 +43,44 @@ typedef struct {
 	} big_joiner_output[2];
 } data_t;
 
+static void test_invalid(data_t *data)
+{
+	igt_output_t *output;
+	igt_display_t *display = &data->display;
+	int ret;
+
+	igt_info("Bigjoiner test on ");
+	for_each_connected_output(display, output){
+		enum pipe p = output->pending_pipe;
+		drmModeModeInfo *mode;
+		igt_pipe_t *pipe;
+		igt_plane_t *plane;
+
+		if (p == PIPE_NONE)
+			continue;
+
+		mode = igt_output_get_mode(output);
+		igt_info("pipe:%s, output:%s, mode:", kmstest_pipe_name(p), igt_output_name(output));
+		kmstest_dump_mode(mode);
+
+		pipe = &display->pipes[p];
+		plane = igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_PRIMARY);
+
+		igt_plane_set_fb(plane, &data->fb);
+		igt_fb_set_size(&data->fb, plane, mode->hdisplay, mode->vdisplay);
+		igt_plane_set_size(plane, mode->hdisplay, mode->vdisplay);
+	}
+
+	/* This commit is expectd to fail as this pipe is being used for big joiner */
+	ret = igt_display_try_commit_atomic(display, DRM_MODE_ATOMIC_TEST_ONLY |
+					    DRM_MODE_ATOMIC_ALLOW_MODESET, NULL);
+
+	igt_display_reset(&data->display);
+	igt_display_commit2(display, COMMIT_ATOMIC);
+
+	igt_assert_lt(ret, 0);
+}
+
 static void test_invalid_modeset(data_t *data)
 {
 	drmModeModeInfo *mode;
@@ -261,19 +299,17 @@ igt_main
 		igt_require(data.display.is_atomic);
 
 		for_each_connected_output(&data.display, output) {
-			if (count < 2) {
-				for (i = 0; i < output->config.connector->count_modes; i++) {
-					mode = &output->config.connector->modes[i];
-					if (mode->hdisplay > MAX_HDISPLAY_PER_PIPE) {
-						data.big_joiner_output[count].mode_number = i;
-						data.big_joiner_output[count].id = output->id;
-						count++;
-
-						width = max(width, mode->hdisplay);
-						height = max(height, mode->vdisplay);
-						break;
-					}
-				}
+			igt_sort_connector_modes(output->config.connector,
+						 sort_drm_modes_by_res_dsc);
+
+			mode = &output->config.connector->modes[0];
+			if (mode->hdisplay > MAX_HDISPLAY_PER_PIPE) {
+				data.big_joiner_output[count].mode_number = i;
+				data.big_joiner_output[count].id = output->id;
+				count++;
+
+				width = max(width, mode->hdisplay);
+				height = max(height, mode->vdisplay);
 			}
 			valid_output++;
 		}
@@ -303,13 +339,55 @@ igt_main
 	igt_describe("Verify if the modeset on the adjoining pipe is rejected "
 		     "when the pipe is active with a big joiner modeset");
 	igt_subtest_with_dynamic("invalid-modeset") {
-		igt_require_f(valid_output > 1, "No valid Second output found\n");
-		for (i = 0; i < data.n_pipes - 1; i++) {
-			data.pipe1 = pipe_seq[i];
-			data.pipe2 = pipe_seq[i + 1];
-			igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe_seq[i]),
-						    kmstest_pipe_name(pipe_seq[i + 1]))
-				test_invalid_modeset(&data);
+		enum pipe pipe;
+
+		for_each_pipe_with_valid_output(&data.display, pipe, output) {
+			igt_display_reset(&data.display);
+
+			igt_sort_connector_modes(output->config.connector,
+						 sort_drm_modes_by_res_dsc);
+
+			igt_output_set_pipe(output, pipe);
+			igt_output_override_mode(output,
+						 &output->config.connector->modes[0]);
+			if (!igt_check_bigjoiner_support(&data.display)) {
+				igt_dynamic("single-connector") {
+					test_invalid(&data);
+				}
+			}
+		}
+
+		igt_display_reset(&data.display);
+		for_each_pipe(&data.display, pipe) {
+			for_each_valid_output_on_pipe(&data.display, pipe, output) {
+				if (output->pending_pipe != PIPE_NONE)
+					continue;
+
+				igt_sort_connector_modes(output->config.connector,
+							 sort_drm_modes_by_res_dsc);
+
+				igt_output_set_pipe(output, pipe);
+				igt_output_override_mode(output,
+							 &output->config.connector->modes[0]);
+
+				break;
+			}
+		}
+		if (valid_output > 1 &&
+		    !igt_check_bigjoiner_support(&data.display)) {
+			igt_dynamic("multi-connector") {
+				test_invalid(&data);
+			}
+		}
+
+		if(valid_output > 1) {
+			for (i = 0; i < data.n_pipes - 1; i++) {
+				data.pipe1 = pipe_seq[i];
+				data.pipe2 = pipe_seq[i + 1];
+				igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe_seq[i]),
+							    kmstest_pipe_name(pipe_seq[i + 1]))
+					test_invalid_modeset(&data);
+			}
 		}
 	}
 
-- 
2.35.1

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

* [igt-dev] [i-g-t V2 39/52] tests/i915/kms_busy: Add support for Bigjoiner
  2022-09-06  9:49 [igt-dev] [i-g-t V2 00/52] Add IGT support for Bigjoiner Bhanuprakash Modem
                   ` (37 preceding siblings ...)
  2022-09-06  9:50 ` [igt-dev] [i-g-t V2 38/52] tests/i915/kms_big_joiner: Negative tests " Bhanuprakash Modem
@ 2022-09-06  9:50 ` Bhanuprakash Modem
  2022-09-06  9:50 ` [igt-dev] [i-g-t V2 40/52] tests/i915/kms_ccs: " Bhanuprakash Modem
                   ` (14 subsequent siblings)
  53 siblings, 0 replies; 58+ messages in thread
From: Bhanuprakash Modem @ 2022-09-06  9:50 UTC (permalink / raw)
  To: igt-dev

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.

Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 tests/i915/kms_busy.c | 104 ++++++++++++++++++++++++++++--------------
 1 file changed, 70 insertions(+), 34 deletions(-)

diff --git a/tests/i915/kms_busy.c b/tests/i915/kms_busy.c
index 99a07c2a..15642b99 100644
--- a/tests/i915/kms_busy.c
+++ b/tests/i915/kms_busy.c
@@ -32,15 +32,12 @@ IGT_TEST_DESCRIPTION("Basic check of KMS ABI with busy framebuffers.");
 
 static bool all_pipes = false;
 
-static igt_output_t *
-set_fb_on_crtc(igt_display_t *dpy, int pipe, struct igt_fb *fb)
+static void
+set_fb_on_crtc(igt_display_t *dpy, int pipe,
+	       igt_output_t *output, struct igt_fb *fb)
 {
 	drmModeModeInfoPtr mode;
 	igt_plane_t *primary;
-	igt_output_t *output;
-
-	output = igt_get_single_output_for_pipe(dpy, pipe);
-	igt_require(output);
 
 	igt_output_set_pipe(output, pipe);
 	mode = igt_output_get_mode(output);
@@ -51,8 +48,6 @@ set_fb_on_crtc(igt_display_t *dpy, int pipe, struct igt_fb *fb)
 
 	primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
 	igt_plane_set_fb(primary, fb);
-
-	return output;
 }
 
 static void do_cleanup_display(igt_display_t *dpy)
@@ -136,18 +131,23 @@ static void flip_to_fb(igt_display_t *dpy, int pipe,
 	put_ahnd(ahnd);
 }
 
-static void test_flip(igt_display_t *dpy, int pipe, bool modeset)
+static void test_flip(igt_display_t *dpy, int pipe,
+		      igt_output_t *output, bool modeset)
 {
 	struct igt_fb fb[2];
 	int warmup[] = { 0, 1, 0, -1 };
 	struct timespec tv = {};
-	igt_output_t *output;
 	int timeout;
 
 	if (modeset)
 		igt_require(dpy->is_atomic);
 
-	output = set_fb_on_crtc(dpy, pipe, &fb[0]);
+	igt_info("Using (pipe %s + %s) to run the subtest.\n",
+		 kmstest_pipe_name(pipe), igt_output_name(output));
+
+	igt_display_reset(dpy);
+
+	set_fb_on_crtc(dpy, pipe, output, &fb[0]);
 	igt_display_commit2(dpy, COMMIT_LEGACY);
 
 	igt_create_pattern_fb(dpy->drm_fd,
@@ -224,13 +224,18 @@ static void test_atomic_commit_hang(igt_display_t *dpy, igt_plane_t *primary,
 }
 
 static void test_hang(igt_display_t *dpy,
-		      enum pipe pipe, bool modeset, bool hang_newfb)
+		      enum pipe pipe, igt_output_t *output,
+		      bool modeset, bool hang_newfb)
 {
 	struct igt_fb fb[2];
-	igt_output_t *output;
 	igt_plane_t *primary;
 
-	output = set_fb_on_crtc(dpy, pipe, &fb[0]);
+	igt_info("Using (pipe %s + %s) to run the subtest.\n",
+		 kmstest_pipe_name(pipe), igt_output_name(output));
+
+	igt_display_reset(dpy);
+
+	set_fb_on_crtc(dpy, pipe, output, &fb[0]);
 	igt_display_commit2(dpy, COMMIT_ATOMIC);
 	primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
 
@@ -265,16 +270,22 @@ static void test_hang(igt_display_t *dpy,
 	igt_remove_fb(dpy->drm_fd, &fb[0]);
 }
 
-static void test_pageflip_modeset_hang(igt_display_t *dpy, enum pipe pipe)
+static void
+test_pageflip_modeset_hang(igt_display_t *dpy,
+			   igt_output_t *output, enum pipe pipe)
 {
 	struct igt_fb fb;
 	struct drm_event_vblank ev;
-	igt_output_t *output;
 	igt_plane_t *primary;
 	igt_spin_t *t;
 	uint64_t ahnd = get_reloc_ahnd(dpy->drm_fd, 0);
 
-	output = set_fb_on_crtc(dpy, pipe, &fb);
+	igt_info("Using (pipe %s + %s) to run the subtest.\n",
+		 kmstest_pipe_name(pipe), igt_output_name(output));
+
+	igt_display_reset(dpy);
+
+	set_fb_on_crtc(dpy, pipe, output, &fb);
 	primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
 
 	igt_display_commit2(dpy, dpy->is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY);
@@ -299,6 +310,21 @@ static void test_pageflip_modeset_hang(igt_display_t *dpy, enum pipe pipe)
 	igt_remove_fb(dpy->drm_fd, &fb);
 }
 
+static bool
+is_valid_combo(igt_display_t *dpy, igt_output_t *output, enum pipe pipe)
+{
+	bool ret = true;
+
+	igt_display_reset(dpy);
+
+	igt_output_set_pipe(output, pipe);
+	if (!igt_test_constraint(dpy))
+		ret = false;
+	igt_output_set_pipe(output, PIPE_NONE);
+
+	return ret;
+}
+
 static int opt_handler(int opt, int opt_index, void *data)
 {
 	switch (opt) {
@@ -319,7 +345,8 @@ igt_main_args("e", NULL, help_str, opt_handler, NULL)
 {
 	igt_display_t display = { .drm_fd = -1, .n_pipes = IGT_MAX_PIPES };
 
-	enum pipe active_pipes[IGT_MAX_PIPES];
+	enum pipe pipe, active_pipes[IGT_MAX_PIPES];
+	igt_output_t *output;
 	uint32_t last_pipe = 0;
 	int i;
 	struct {
@@ -338,7 +365,6 @@ igt_main_args("e", NULL, help_str, opt_handler, NULL)
 
 	igt_fixture {
 		int fd = drm_open_driver_master(DRIVER_INTEL);
-		enum pipe pipe;
 
 		igt_require_gem(fd);
 		gem_require_mmap_device_coherent(fd);
@@ -358,63 +384,72 @@ igt_main_args("e", NULL, help_str, opt_handler, NULL)
 
 	igt_describe("Test for basic check of KMS ABI with busy framebuffers.");
 	igt_subtest_with_dynamic("basic") { /* just run on the first pipe */
-		enum pipe pipe;
+		for_each_pipe_with_single_output(&display, pipe, output) {
+			if (!is_valid_combo(&display, output, pipe))
+				continue;
 
-		for_each_pipe(&display, pipe) {
 			igt_dynamic("flip")
-				test_flip(&display, pipe, false);
+				test_flip(&display, pipe, output, false);
 			igt_dynamic("modeset")
-				test_flip(&display, pipe, true);
+				test_flip(&display, pipe, output, true);
 			break;
 		}
 	}
 
 	igt_subtest_with_dynamic("basic-hang") {
-		enum pipe pipe;
 		igt_hang_t hang = igt_allow_hang(display.drm_fd, 0, 0);
 		errno = 0;
 
-		for_each_pipe(&display, pipe) {
+		for_each_pipe_with_single_output(&display, pipe, output) {
+			if (!is_valid_combo(&display, output, pipe))
+				continue;
+
 			if (!all_pipes && pipe != active_pipes[0] &&
 					  pipe != active_pipes[last_pipe])
 				continue;
 
 			igt_dynamic_f("flip-pipe-%s", kmstest_pipe_name(pipe))
-				test_flip(&display, pipe, false);
+				test_flip(&display, pipe, output, false);
 			igt_dynamic_f("modeset-pipe-%s", kmstest_pipe_name(pipe))
-				test_flip(&display, pipe, true);
+				test_flip(&display, pipe, output, true);
 		}
 
 		igt_disallow_hang(display.drm_fd, hang);
 	}
 
 	igt_subtest_with_dynamic("extended-pageflip-modeset-hang-oldfb") {
-		enum pipe pipe;
 		igt_hang_t hang = igt_allow_hang(display.drm_fd, 0, 0);
 		errno = 0;
 
-		for_each_pipe(&display, pipe) {
+		for_each_pipe_with_single_output(&display, pipe, output) {
+			if (!is_valid_combo(&display, output, pipe))
+				continue;
+
 			if (!all_pipes && pipe != active_pipes[0] &&
 					  pipe != active_pipes[last_pipe])
 				continue;
 
 			igt_dynamic_f("pipe-%s", kmstest_pipe_name(pipe))
-				test_pageflip_modeset_hang(&display, pipe);
+				test_pageflip_modeset_hang(&display, output, pipe);
 		}
 
 		igt_disallow_hang(display.drm_fd, hang);
 	}
 
 	for (i = 0; i < sizeof(tests) / sizeof (tests[0]); i++) {
+		igt_fixture
+			igt_require(display.is_atomic);
+
 		igt_subtest_with_dynamic(tests[i].name) {
-			enum pipe pipe;
 			igt_hang_t hang;
 			errno = 0;
 
-			igt_require(display.is_atomic);
 			hang = igt_allow_hang(display.drm_fd, 0, 0);
 
-			for_each_pipe(&display, pipe) {
+			for_each_pipe_with_single_output(&display, pipe, output) {
+				if (!is_valid_combo(&display, output, pipe))
+					continue;
+
 				if (!all_pipes && pipe != active_pipes[0] &&
 						  pipe != active_pipes[last_pipe])
 					continue;
@@ -423,7 +458,8 @@ igt_main_args("e", NULL, help_str, opt_handler, NULL)
 					if (tests[i].reset)
 						igt_set_module_param_int(display.drm_fd, "force_reset_modeset_test", 1);
 
-					test_hang(&display, pipe, tests[i].modeset, tests[i].hang_newfb);
+					test_hang(&display, pipe, output,
+						  tests[i].modeset, tests[i].hang_newfb);
 
 					if (tests[i].reset)
 						igt_set_module_param_int(display.drm_fd, "force_reset_modeset_test", 0);
-- 
2.35.1

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

* [igt-dev] [i-g-t V2 40/52] tests/i915/kms_ccs: Add support for Bigjoiner
  2022-09-06  9:49 [igt-dev] [i-g-t V2 00/52] Add IGT support for Bigjoiner Bhanuprakash Modem
                   ` (38 preceding siblings ...)
  2022-09-06  9:50 ` [igt-dev] [i-g-t V2 39/52] tests/i915/kms_busy: Add support " Bhanuprakash Modem
@ 2022-09-06  9:50 ` Bhanuprakash Modem
  2022-09-06  9:50 ` [igt-dev] [i-g-t V2 41/52] tests/i915/kms_cdclk: " Bhanuprakash Modem
                   ` (13 subsequent siblings)
  53 siblings, 0 replies; 58+ messages in thread
From: Bhanuprakash Modem @ 2022-09-06  9:50 UTC (permalink / raw)
  To: igt-dev

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.

Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 tests/i915/kms_ccs.c | 18 +++++++++++++-----
 1 file changed, 13 insertions(+), 5 deletions(-)

diff --git a/tests/i915/kms_ccs.c b/tests/i915/kms_ccs.c
index 4df611f7..1acd94e0 100644
--- a/tests/i915/kms_ccs.c
+++ b/tests/i915/kms_ccs.c
@@ -589,12 +589,21 @@ static int test_ccs(data_t *data)
 static void test_output(data_t *data, const int testnum)
 {
 	igt_fixture {
+		bool found = false;
+
 		data->flags = tests[testnum].flags;
 
-		data->output = igt_get_single_output_for_pipe(&data->display,
-							      data->pipe);
-		igt_require(data->output);
-		igt_output_set_pipe(data->output, data->pipe);
+		for_each_valid_output_on_pipe(&data->display, data->pipe, data->output) {
+			igt_display_reset(&data->display);
+
+			igt_output_set_pipe(data->output, data->pipe);
+			if (igt_test_constraint(&data->display)) {
+				found = true;
+				break;
+			}
+
+		}
+		igt_require_f(found, "No valid pipe/output combo found.\n");
 	}
 
 	for (int i = 0; i < ARRAY_SIZE(ccs_modifiers); i++) {
@@ -610,7 +619,6 @@ static void test_output(data_t *data, const int testnum)
 		igt_subtest_f("pipe-%s-%s-%s", kmstest_pipe_name(data->pipe),
 			      tests[testnum].testname, ccs_modifiers[i].str) {
 			int valid_tests = 0;
-			igt_require(data->output);
 
 			if (data->flags == TEST_RANDOM)
 				igt_info("Testing with seed %d\n", data->seed);
-- 
2.35.1

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

* [igt-dev] [i-g-t V2 41/52] tests/i915/kms_cdclk: Add support for Bigjoiner
  2022-09-06  9:49 [igt-dev] [i-g-t V2 00/52] Add IGT support for Bigjoiner Bhanuprakash Modem
                   ` (39 preceding siblings ...)
  2022-09-06  9:50 ` [igt-dev] [i-g-t V2 40/52] tests/i915/kms_ccs: " Bhanuprakash Modem
@ 2022-09-06  9:50 ` Bhanuprakash Modem
  2022-09-06  9:50 ` [igt-dev] [i-g-t V2 42/52] tests/i915/kms_draw_crc: " Bhanuprakash Modem
                   ` (12 subsequent siblings)
  53 siblings, 0 replies; 58+ messages in thread
From: Bhanuprakash Modem @ 2022-09-06  9:50 UTC (permalink / raw)
  To: igt-dev

As many 2x tests are currently running on Pipe-A & B only, those
tests will always SKIP if there is any 8K supported panel in the
config. Instead of Skipping the test, add some intelligence to
the subtest to identify the valid pipe/output combo to execute
the subtest.

Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 tests/i915/kms_cdclk.c | 93 +++++++++++++++++++++++-------------------
 1 file changed, 51 insertions(+), 42 deletions(-)

diff --git a/tests/i915/kms_cdclk.c b/tests/i915/kms_cdclk.c
index 002b631c..78abfedd 100644
--- a/tests/i915/kms_cdclk.c
+++ b/tests/i915/kms_cdclk.c
@@ -243,20 +243,17 @@ static void test_mode_transition_on_all_outputs(data_t *data)
 	int debugfs_fd = data->debugfs_fd;
 	drmModeModeInfo *mode, *mode_hi, *mode_lo;
 	igt_output_t *output;
-	int valid_outputs = 0;
 	int cdclk_ref, cdclk_new;
 	uint16_t width = 0, height = 0;
 	struct igt_fb fb;
 	igt_pipe_t *pipe;
 	igt_plane_t *plane;
-	int i = 0, j = 0;
+	enum pipe p, active_pipes[IGT_MAX_PIPES];
+	int i = 0, active_pipe_count = 0;
 
 	do_cleanup_display(display);
 	igt_display_reset(display);
 
-	for_each_connected_output(&data->display, output)
-		valid_outputs++;
-
 	for_each_connected_output(display, output) {
 		mode = igt_output_get_mode(output);
 		igt_assert(mode);
@@ -269,52 +266,59 @@ static void test_mode_transition_on_all_outputs(data_t *data)
 
 	igt_create_pattern_fb(data->drm_fd, width, height, DRM_FORMAT_XRGB8888,
 			      DRM_FORMAT_MOD_LINEAR, &fb);
-	i = 0;
+
 	for_each_connected_output(display, output) {
-		pipe = &display->pipes[i];
-		plane = igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_PRIMARY);
+		for_each_pipe(display, p) {
+			mode = NULL;
 
-		mode = NULL;
+			igt_output_set_pipe(output, p);
+			mode = igt_output_get_mode(output);
+			igt_assert(mode);
 
-		igt_output_set_pipe(output, i);
-		mode = igt_output_get_mode(output);
-		igt_assert(mode);
+			mode_hi = get_highres_mode(output);
+			igt_require(mode_hi != NULL);
+
+			igt_output_override_mode(output, mode_hi);
+			if (!igt_test_constraint(display)) {
+				igt_output_set_pipe(output, PIPE_NONE);
+				continue;
+			}
 
-		mode_lo = get_lowres_mode(output);
+			active_pipes[active_pipe_count++] = p;
+			pipe = &display->pipes[p];
+			plane = igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_PRIMARY);
+			igt_plane_set_fb(plane, &fb);
+			igt_fb_set_size(&fb, plane, mode_hi->hdisplay, mode_hi->vdisplay);
+			igt_plane_set_size(plane, mode_hi->hdisplay, mode_hi->vdisplay);
 
-		igt_output_override_mode(output, mode_lo);
-		igt_plane_set_fb(plane, &fb);
-		igt_fb_set_size(&fb, plane, mode_lo->hdisplay, mode_lo->vdisplay);
-		igt_plane_set_size(plane, mode_lo->hdisplay, mode_lo->vdisplay);
-		i++;
+			break;
+		}
 	}
 
 	igt_display_commit2(display, COMMIT_ATOMIC);
-	cdclk_ref = get_current_cdclk_freq(debugfs_fd);
+	cdclk_new = get_current_cdclk_freq(debugfs_fd);
 
-	j = 0;
 	for_each_connected_output(display, output) {
-		pipe = &display->pipes[j];
-		plane = igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_PRIMARY);
+		for (i = 0; i < active_pipe_count; i++) {
+			pipe = &display->pipes[active_pipes[i]];
+			plane = igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_PRIMARY);
 
-		mode = NULL;
+			mode = NULL;
+			igt_output_set_pipe(output, i);
+			mode = igt_output_get_mode(output);
+			igt_assert(mode);
 
-		igt_output_set_pipe(output, j);
-		mode = igt_output_get_mode(output);
-		igt_assert(mode);
-
-		mode_hi = get_highres_mode(output);
-		igt_require(mode_hi != NULL);
+			mode_lo = get_lowres_mode(output);
 
-		igt_output_override_mode(output, mode_hi);
-		igt_plane_set_fb(plane, &fb);
-		igt_fb_set_size(&fb, plane, mode_hi->hdisplay, mode_hi->vdisplay);
-		igt_plane_set_size(plane, mode_hi->hdisplay, mode_hi->vdisplay);
-		j++;
+			igt_output_override_mode(output, mode_lo);
+			igt_plane_set_fb(plane, &fb);
+			igt_fb_set_size(&fb, plane, mode_lo->hdisplay, mode_lo->vdisplay);
+			igt_plane_set_size(plane, mode_lo->hdisplay, mode_lo->vdisplay);
+		}
 	}
 
 	igt_display_commit2(display, COMMIT_ATOMIC);
-	cdclk_new = get_current_cdclk_freq(debugfs_fd);
+	cdclk_ref = get_current_cdclk_freq(debugfs_fd);
 	igt_info("CD clock frequency %d -> %d\n", cdclk_ref, cdclk_new);
 
 	/* cdclk should bump */
@@ -332,13 +336,18 @@ static void run_cdclk_test(data_t *data, uint32_t flags)
 	enum pipe pipe;
 
 	for_each_pipe_with_valid_output(display, pipe, output) {
-		igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), output->name)
-			if (igt_pipe_connector_valid(pipe, output)) {
-				if (flags & TEST_PLANESCALING)
-					test_plane_scaling(data, pipe, output);
-				if (flags & TEST_MODETRANSITION)
-					test_mode_transition(data, pipe, output);
-			}
+		igt_output_set_pipe(output, pipe);
+		if (!igt_test_constraint(display)) {
+			igt_output_set_pipe(output, PIPE_NONE);
+			continue;
+		}
+
+		igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe), output->name) {
+			if (flags & TEST_PLANESCALING)
+				test_plane_scaling(data, pipe, output);
+			if (flags & TEST_MODETRANSITION)
+				test_mode_transition(data, pipe, output);
+		}
 	}
 }
 
-- 
2.35.1

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

* [igt-dev] [i-g-t V2 42/52] tests/i915/kms_draw_crc: Add support for Bigjoiner
  2022-09-06  9:49 [igt-dev] [i-g-t V2 00/52] Add IGT support for Bigjoiner Bhanuprakash Modem
                   ` (40 preceding siblings ...)
  2022-09-06  9:50 ` [igt-dev] [i-g-t V2 41/52] tests/i915/kms_cdclk: " Bhanuprakash Modem
@ 2022-09-06  9:50 ` Bhanuprakash Modem
  2022-09-06  9:50 ` [igt-dev] [i-g-t V2 43/52] tests/i915/kms_fence_pin_leak: " Bhanuprakash Modem
                   ` (11 subsequent siblings)
  53 siblings, 0 replies; 58+ messages in thread
From: Bhanuprakash Modem @ 2022-09-06  9:50 UTC (permalink / raw)
  To: igt-dev

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.

Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 tests/i915/kms_draw_crc.c | 11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)

diff --git a/tests/i915/kms_draw_crc.c b/tests/i915/kms_draw_crc.c
index b99f348d..5a89dc58 100644
--- a/tests/i915/kms_draw_crc.c
+++ b/tests/i915/kms_draw_crc.c
@@ -59,17 +59,16 @@ static void find_modeset_params(void)
 {
 	enum pipe pipe;
 
-	igt_display_reset(&display);
-	igt_display_commit(&display);
-
 	for_each_pipe_with_valid_output(&display, pipe, output) {
-		igt_output_set_pipe(output, pipe);
+		igt_display_reset(&display);
 
-		mode = igt_output_get_mode(output);
-		if (!mode)
+		igt_output_set_pipe(output, pipe);
+		if (!igt_test_constraint(&display))
 			continue;
 
+		mode = igt_output_get_mode(output);
 		pipe_crc = igt_pipe_crc_new(drm_fd, pipe, INTEL_PIPE_CRC_SOURCE_AUTO);
+
 		/*Only one pipe/output is enough*/
 		break;
 	}
-- 
2.35.1

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

* [igt-dev] [i-g-t V2 43/52] tests/i915/kms_fence_pin_leak: Add support for Bigjoiner
  2022-09-06  9:49 [igt-dev] [i-g-t V2 00/52] Add IGT support for Bigjoiner Bhanuprakash Modem
                   ` (41 preceding siblings ...)
  2022-09-06  9:50 ` [igt-dev] [i-g-t V2 42/52] tests/i915/kms_draw_crc: " Bhanuprakash Modem
@ 2022-09-06  9:50 ` Bhanuprakash Modem
  2022-09-06  9:50 ` [igt-dev] [i-g-t V2 44/52] tests/i915/kms_flip_scaled_crc: " Bhanuprakash Modem
                   ` (10 subsequent siblings)
  53 siblings, 0 replies; 58+ messages in thread
From: Bhanuprakash Modem @ 2022-09-06  9:50 UTC (permalink / raw)
  To: igt-dev

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.

Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 tests/i915/kms_fence_pin_leak.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/tests/i915/kms_fence_pin_leak.c b/tests/i915/kms_fence_pin_leak.c
index 16eb595f..461ddfbc 100644
--- a/tests/i915/kms_fence_pin_leak.c
+++ b/tests/i915/kms_fence_pin_leak.c
@@ -124,6 +124,9 @@ static void run_single_test(data_t *data, enum pipe pipe, igt_output_t *output)
 	struct igt_fb fb[2];
 	int i;
 
+	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);
 
 	mode = igt_output_get_mode(output);
@@ -196,6 +199,12 @@ static void run_test(data_t *data)
 	enum pipe p;
 
 	for_each_pipe_with_valid_output(display, p, output) {
+		igt_display_reset(display);
+
+		igt_output_set_pipe(output, p);
+		if (!igt_test_constraint(display))
+			continue;
+
 		run_single_test(data, p, output);
 
 		return; /* one time ought to be enough */
-- 
2.35.1

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

* [igt-dev] [i-g-t V2 44/52] tests/i915/kms_flip_scaled_crc: Add support for Bigjoiner
  2022-09-06  9:49 [igt-dev] [i-g-t V2 00/52] Add IGT support for Bigjoiner Bhanuprakash Modem
                   ` (42 preceding siblings ...)
  2022-09-06  9:50 ` [igt-dev] [i-g-t V2 43/52] tests/i915/kms_fence_pin_leak: " Bhanuprakash Modem
@ 2022-09-06  9:50 ` Bhanuprakash Modem
  2022-09-06  9:50 ` [igt-dev] [i-g-t V2 45/52] tests/i915/kms_flip_tiling: " Bhanuprakash Modem
                   ` (9 subsequent siblings)
  53 siblings, 0 replies; 58+ messages in thread
From: Bhanuprakash Modem @ 2022-09-06  9:50 UTC (permalink / raw)
  To: igt-dev

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.

Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 tests/i915/kms_flip_scaled_crc.c | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/tests/i915/kms_flip_scaled_crc.c b/tests/i915/kms_flip_scaled_crc.c
index 764eb70f..bc9d8cb4 100644
--- a/tests/i915/kms_flip_scaled_crc.c
+++ b/tests/i915/kms_flip_scaled_crc.c
@@ -648,8 +648,13 @@ igt_main
 			for_each_pipe(&data.display, pipe) {
 				bool found = false;
 				for_each_valid_output_on_pipe(&data.display, pipe, output) {
+					igt_display_reset(&data.display);
+
 					modetoset = find_mode(&data, output);
-					if (modetoset) {
+					igt_output_set_pipe(output, pipe);
+					igt_output_override_mode(output, modetoset);
+
+					if (modetoset && igt_test_constraint(&data.display)) {
 						found = true;
 						igt_dynamic_f("pipe-%s-valid-mode", kmstest_pipe_name(pipe))
 							run_tests(&data, index, pipe, output, modetoset);
@@ -658,6 +663,12 @@ igt_main
 				}
 				if (!found) {
 					for_each_valid_output_on_pipe(&data.display, pipe, output) {
+						igt_display_reset(&data.display);
+
+						igt_output_set_pipe(output, pipe);
+						if (!igt_test_constraint(&data.display))
+							continue;
+
 						igt_dynamic_f("pipe-%s-default-mode", kmstest_pipe_name(pipe))
 							run_tests(&data, index, pipe, output, modetoset);
 					}
-- 
2.35.1

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

* [igt-dev] [i-g-t V2 45/52] tests/i915/kms_flip_tiling: Add support for Bigjoiner
  2022-09-06  9:49 [igt-dev] [i-g-t V2 00/52] Add IGT support for Bigjoiner Bhanuprakash Modem
                   ` (43 preceding siblings ...)
  2022-09-06  9:50 ` [igt-dev] [i-g-t V2 44/52] tests/i915/kms_flip_scaled_crc: " Bhanuprakash Modem
@ 2022-09-06  9:50 ` Bhanuprakash Modem
  2022-09-06  9:50 ` [igt-dev] [i-g-t V2 46/52] tests/i915/kms_frontbuffer_tracking: " Bhanuprakash Modem
                   ` (8 subsequent siblings)
  53 siblings, 0 replies; 58+ messages in thread
From: Bhanuprakash Modem @ 2022-09-06  9:50 UTC (permalink / raw)
  To: igt-dev

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.

Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 tests/i915/kms_flip_tiling.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/tests/i915/kms_flip_tiling.c b/tests/i915/kms_flip_tiling.c
index ba9ff46e..8831245f 100644
--- a/tests/i915/kms_flip_tiling.c
+++ b/tests/i915/kms_flip_tiling.c
@@ -78,6 +78,9 @@ test_flip_tiling(data_t *data, enum pipe pipe, igt_output_t *output, uint64_t mo
 	igt_crc_t reference_crc, crc;
 	int fb_id, ret;
 
+	igt_info("Using (pipe %s + %s) to run the subtest.\n",
+		 kmstest_pipe_name(pipe), igt_output_name(output));
+
 	memcpy(&data->old_fb, &data->fb, sizeof(data->fb));
 
 	mode = igt_output_get_mode(output);
@@ -194,8 +197,12 @@ igt_main
 		for_each_pipe_with_valid_output(&data.display, pipe, output) {
 			igt_plane_t *plane;
 
+			igt_display_reset(&data.display);
 			pipe_crc_free(&data);
+
 			igt_output_set_pipe(output, pipe);
+			if (!igt_test_constraint(&data.display))
+				continue;
 
 			plane = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
 
-- 
2.35.1

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

* [igt-dev] [i-g-t V2 46/52] tests/i915/kms_frontbuffer_tracking: Add support for Bigjoiner
  2022-09-06  9:49 [igt-dev] [i-g-t V2 00/52] Add IGT support for Bigjoiner Bhanuprakash Modem
                   ` (44 preceding siblings ...)
  2022-09-06  9:50 ` [igt-dev] [i-g-t V2 45/52] tests/i915/kms_flip_tiling: " Bhanuprakash Modem
@ 2022-09-06  9:50 ` Bhanuprakash Modem
  2022-09-06  9:50 ` [igt-dev] [i-g-t V2 47/52] tests/i915/kms_mmap_write_crc: " Bhanuprakash Modem
                   ` (7 subsequent siblings)
  53 siblings, 0 replies; 58+ messages in thread
From: Bhanuprakash Modem @ 2022-09-06  9:50 UTC (permalink / raw)
  To: igt-dev

As many 2x tests are currently running on Pipe-A & B only, those
tests will always SKIP if there is any 8K supported panel in the
config. Instead of Skipping the test, add some intelligence to
the subtest to identify the valid pipe/output combo to execute
the subtest.

Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 tests/i915/kms_frontbuffer_tracking.c | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)

diff --git a/tests/i915/kms_frontbuffer_tracking.c b/tests/i915/kms_frontbuffer_tracking.c
index 9518c706..ff5fb90d 100644
--- a/tests/i915/kms_frontbuffer_tracking.c
+++ b/tests/i915/kms_frontbuffer_tracking.c
@@ -403,15 +403,23 @@ static bool find_connector(bool edp_only, bool pipe_a,
 		if (pipe_a && pipe != PIPE_A)
 			continue;
 
-		if (output == forbidden_output || pipe == forbidden_pipe)
+		if (output == forbidden_output || pipe == forbidden_pipe) {
+			igt_output_set_pipe(output, pipe);
+			igt_output_override_mode(output, connector_get_mode(output));
+
 			continue;
+		}
 
 		if (c->connector_type == DRM_MODE_CONNECTOR_eDP && opt.no_edp)
 			continue;
 
-		*ret_output = output;
-		*ret_pipe = pipe;
-		return true;
+		igt_output_set_pipe(output, pipe);
+		igt_output_override_mode(output, connector_get_mode(output));
+		if (igt_test_constraint(&drm.display)) {
+			*ret_output = output;
+			*ret_pipe = pipe;
+			return true;
+		}
 	}
 
 	return false;
-- 
2.35.1

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

* [igt-dev] [i-g-t V2 47/52] tests/i915/kms_mmap_write_crc: Add support for Bigjoiner
  2022-09-06  9:49 [igt-dev] [i-g-t V2 00/52] Add IGT support for Bigjoiner Bhanuprakash Modem
                   ` (45 preceding siblings ...)
  2022-09-06  9:50 ` [igt-dev] [i-g-t V2 46/52] tests/i915/kms_frontbuffer_tracking: " Bhanuprakash Modem
@ 2022-09-06  9:50 ` Bhanuprakash Modem
  2022-09-06  9:50 ` [igt-dev] [i-g-t V2 48/52] tests/i915/kms_psr2_sf: " Bhanuprakash Modem
                   ` (6 subsequent siblings)
  53 siblings, 0 replies; 58+ messages in thread
From: Bhanuprakash Modem @ 2022-09-06  9:50 UTC (permalink / raw)
  To: igt-dev

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.

Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 tests/i915/kms_mmap_write_crc.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/tests/i915/kms_mmap_write_crc.c b/tests/i915/kms_mmap_write_crc.c
index a57938b5..1bc249b9 100644
--- a/tests/i915/kms_mmap_write_crc.c
+++ b/tests/i915/kms_mmap_write_crc.c
@@ -276,6 +276,12 @@ igt_main_args("n", NULL, NULL, opt_handler, NULL)
 
 	igt_subtest_with_dynamic("main") {
 		for_each_pipe_with_valid_output(&data.display, pipe, output) {
+			igt_display_reset(&data.display);
+
+			igt_output_set_pipe(output, pipe);
+			if (!igt_test_constraint(&data.display))
+				continue;
+
 			igt_dynamic_f("pipe-%s-%s", kmstest_pipe_name(pipe),
 				      igt_output_name(output)) {
 				data.output = output;
-- 
2.35.1

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

* [igt-dev] [i-g-t V2 48/52] tests/i915/kms_psr2_sf: Add support for Bigjoiner
  2022-09-06  9:49 [igt-dev] [i-g-t V2 00/52] Add IGT support for Bigjoiner Bhanuprakash Modem
                   ` (46 preceding siblings ...)
  2022-09-06  9:50 ` [igt-dev] [i-g-t V2 47/52] tests/i915/kms_mmap_write_crc: " Bhanuprakash Modem
@ 2022-09-06  9:50 ` Bhanuprakash Modem
  2022-09-06  9:50 ` [igt-dev] [i-g-t V2 49/52] tests/i915/kms_psr2_su: " Bhanuprakash Modem
                   ` (5 subsequent siblings)
  53 siblings, 0 replies; 58+ messages in thread
From: Bhanuprakash Modem @ 2022-09-06  9:50 UTC (permalink / raw)
  To: igt-dev

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.

Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 tests/i915/kms_psr2_sf.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/tests/i915/kms_psr2_sf.c b/tests/i915/kms_psr2_sf.c
index 6612587c..920e5a4e 100644
--- a/tests/i915/kms_psr2_sf.c
+++ b/tests/i915/kms_psr2_sf.c
@@ -115,7 +115,11 @@ static void setup_output(data_t *data)
 		if (c->connector_type != DRM_MODE_CONNECTOR_eDP)
 			continue;
 
+		igt_display_reset(display);
 		igt_output_set_pipe(output, pipe);
+		if (!igt_test_constraint(display))
+			continue;
+
 		data->output = output;
 		data->mode = igt_output_get_mode(output);
 
@@ -127,6 +131,9 @@ static void display_init(data_t *data)
 {
 	igt_display_require(&data->display, data->drm_fd);
 	setup_output(data);
+
+	igt_require_f(data->output, "No available output found\n");
+	igt_require_f(data->mode, "No available mode found on %s\n", data->output->name);
 }
 
 static void display_fini(data_t *data)
-- 
2.35.1

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

* [igt-dev] [i-g-t V2 49/52] tests/i915/kms_psr2_su: Add support for Bigjoiner
  2022-09-06  9:49 [igt-dev] [i-g-t V2 00/52] Add IGT support for Bigjoiner Bhanuprakash Modem
                   ` (47 preceding siblings ...)
  2022-09-06  9:50 ` [igt-dev] [i-g-t V2 48/52] tests/i915/kms_psr2_sf: " Bhanuprakash Modem
@ 2022-09-06  9:50 ` Bhanuprakash Modem
  2022-09-06  9:50 ` [igt-dev] [i-g-t V2 50/52] tests/i915/kms_psr: " Bhanuprakash Modem
                   ` (4 subsequent siblings)
  53 siblings, 0 replies; 58+ messages in thread
From: Bhanuprakash Modem @ 2022-09-06  9:50 UTC (permalink / raw)
  To: igt-dev

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.

Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 tests/i915/kms_psr2_su.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/tests/i915/kms_psr2_su.c b/tests/i915/kms_psr2_su.c
index caccf713..b8247e25 100644
--- a/tests/i915/kms_psr2_su.c
+++ b/tests/i915/kms_psr2_su.c
@@ -104,7 +104,11 @@ static void setup_output(data_t *data)
 		if (c->connector_type != DRM_MODE_CONNECTOR_eDP)
 			continue;
 
+		igt_display_reset(display);
 		igt_output_set_pipe(output, pipe);
+		if (!igt_test_constraint(display))
+			continue;
+
 		data->output = output;
 		data->mode = igt_output_get_mode(output);
 
@@ -116,6 +120,9 @@ static void display_init(data_t *data)
 {
 	igt_display_require(&data->display, data->drm_fd);
 	setup_output(data);
+
+	igt_require_f(data->output, "No available output found\n");
+	igt_require_f(data->mode, "No available mode found on %s\n", data->output->name);
 }
 
 static void display_fini(data_t *data)
-- 
2.35.1

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

* [igt-dev] [i-g-t V2 50/52] tests/i915/kms_psr: Add support for Bigjoiner
  2022-09-06  9:49 [igt-dev] [i-g-t V2 00/52] Add IGT support for Bigjoiner Bhanuprakash Modem
                   ` (48 preceding siblings ...)
  2022-09-06  9:50 ` [igt-dev] [i-g-t V2 49/52] tests/i915/kms_psr2_su: " Bhanuprakash Modem
@ 2022-09-06  9:50 ` Bhanuprakash Modem
  2022-09-06  9:50 ` [igt-dev] [i-g-t V2 51/52] tests/i915/kms_psr_stress_test: " Bhanuprakash Modem
                   ` (3 subsequent siblings)
  53 siblings, 0 replies; 58+ messages in thread
From: Bhanuprakash Modem @ 2022-09-06  9:50 UTC (permalink / raw)
  To: igt-dev

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.

Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 tests/i915/kms_psr.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/tests/i915/kms_psr.c b/tests/i915/kms_psr.c
index 480e2cc7..82148e2f 100644
--- a/tests/i915/kms_psr.c
+++ b/tests/i915/kms_psr.c
@@ -102,7 +102,11 @@ static void setup_output(data_t *data)
 		if (c->connector_type != DRM_MODE_CONNECTOR_eDP)
 			continue;
 
+		igt_display_reset(display);
 		igt_output_set_pipe(output, pipe);
+		if (!igt_test_constraint(display))
+			continue;
+
 		data->crtc_id = output->config.crtc->crtc_id;
 		data->output = output;
 		data->mode = igt_output_get_mode(output);
-- 
2.35.1

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

* [igt-dev] [i-g-t V2 51/52] tests/i915/kms_psr_stress_test: Add support for Bigjoiner
  2022-09-06  9:49 [igt-dev] [i-g-t V2 00/52] Add IGT support for Bigjoiner Bhanuprakash Modem
                   ` (49 preceding siblings ...)
  2022-09-06  9:50 ` [igt-dev] [i-g-t V2 50/52] tests/i915/kms_psr: " Bhanuprakash Modem
@ 2022-09-06  9:50 ` Bhanuprakash Modem
  2022-09-06  9:50 ` [igt-dev] [i-g-t V2 52/52] tests/i915/kms_pwrite_crc: " Bhanuprakash Modem
                   ` (2 subsequent siblings)
  53 siblings, 0 replies; 58+ messages in thread
From: Bhanuprakash Modem @ 2022-09-06  9:50 UTC (permalink / raw)
  To: igt-dev

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.

Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 tests/i915/kms_psr_stress_test.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/tests/i915/kms_psr_stress_test.c b/tests/i915/kms_psr_stress_test.c
index daac41d4..c2ebaac5 100644
--- a/tests/i915/kms_psr_stress_test.c
+++ b/tests/i915/kms_psr_stress_test.c
@@ -72,7 +72,13 @@ static void setup_output(data_t *data)
 		if (c->connector_type != DRM_MODE_CONNECTOR_eDP)
 			continue;
 
+		igt_display_reset(display);
 		igt_output_set_pipe(output, pipe);
+		if (!igt_test_constraint(display)) {
+			igt_output_set_pipe(output, PIPE_NONE);
+			continue;
+		}
+
 		data->output = output;
 		data->mode = igt_output_get_mode(output);
 
@@ -374,4 +380,4 @@ igt_main
 		close(data.debugfs_fd);
 		close(data.drm_fd);
 	}
-}
\ No newline at end of file
+}
-- 
2.35.1

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

* [igt-dev] [i-g-t V2 52/52] tests/i915/kms_pwrite_crc: Add support for Bigjoiner
  2022-09-06  9:49 [igt-dev] [i-g-t V2 00/52] Add IGT support for Bigjoiner Bhanuprakash Modem
                   ` (50 preceding siblings ...)
  2022-09-06  9:50 ` [igt-dev] [i-g-t V2 51/52] tests/i915/kms_psr_stress_test: " Bhanuprakash Modem
@ 2022-09-06  9:50 ` Bhanuprakash Modem
  2022-09-06 10:26 ` [igt-dev] ✓ Fi.CI.BAT: success for Add IGT " Patchwork
  2022-09-06 12:15 ` [igt-dev] ✗ Fi.CI.IGT: failure " Patchwork
  53 siblings, 0 replies; 58+ messages in thread
From: Bhanuprakash Modem @ 2022-09-06  9:50 UTC (permalink / raw)
  To: igt-dev

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.

Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 tests/i915/kms_pwrite_crc.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/tests/i915/kms_pwrite_crc.c b/tests/i915/kms_pwrite_crc.c
index 584e6a19..cc24efbf 100644
--- a/tests/i915/kms_pwrite_crc.c
+++ b/tests/i915/kms_pwrite_crc.c
@@ -110,6 +110,7 @@ static void prepare_crtc(data_t *data)
 	igt_output_t *output = data->output;
 	drmModeModeInfo *mode;
 
+	igt_display_reset(display);
 	/* select the pipe we want to use */
 	igt_output_set_pipe(output, data->pipe);
 
@@ -160,6 +161,12 @@ static void run_test(data_t *data)
 	enum pipe pipe;
 
 	for_each_pipe_with_valid_output(display, pipe, output) {
+		igt_display_reset(display);
+
+		igt_output_set_pipe(output, data->pipe);
+		if (!igt_test_constraint(display))
+			continue;
+
 		data->output = output;
 		data->pipe = pipe;
 
-- 
2.35.1

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

* [igt-dev] ✓ Fi.CI.BAT: success for Add IGT support for Bigjoiner
  2022-09-06  9:49 [igt-dev] [i-g-t V2 00/52] Add IGT support for Bigjoiner Bhanuprakash Modem
                   ` (51 preceding siblings ...)
  2022-09-06  9:50 ` [igt-dev] [i-g-t V2 52/52] tests/i915/kms_pwrite_crc: " Bhanuprakash Modem
@ 2022-09-06 10:26 ` Patchwork
  2022-09-06 12:15 ` [igt-dev] ✗ Fi.CI.IGT: failure " Patchwork
  53 siblings, 0 replies; 58+ messages in thread
From: Patchwork @ 2022-09-06 10:26 UTC (permalink / raw)
  To: Bhanuprakash Modem; +Cc: igt-dev

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

== Series Details ==

Series: Add IGT support for Bigjoiner
URL   : https://patchwork.freedesktop.org/series/108183/
State : success

== Summary ==

CI Bug Log - changes from IGT_6646 -> IGTPW_7740
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

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

Participating hosts (42 -> 40)
------------------------------

  Missing    (2): bat-dg2-8 fi-bdw-samus 

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

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

### IGT changes ###

#### Issues hit ####

  * igt@gem_exec_suspend@basic-s3@smem:
    - fi-rkl-11600:       NOTRUN -> [FAIL][1] ([fdo#103375])
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/fi-rkl-11600/igt@gem_exec_suspend@basic-s3@smem.html

  * igt@kms_chamelium@common-hpd-after-suspend:
    - fi-rkl-11600:       NOTRUN -> [SKIP][2] ([fdo#111827])
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/fi-rkl-11600/igt@kms_chamelium@common-hpd-after-suspend.html
    - fi-pnv-d510:        NOTRUN -> [SKIP][3] ([fdo#109271])
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/fi-pnv-d510/igt@kms_chamelium@common-hpd-after-suspend.html

  * igt@kms_cursor_legacy@basic-busy-flip-before-cursor@atomic-transitions-varying-size:
    - fi-bsw-kefka:       [PASS][4] -> [FAIL][5] ([i915#6298])
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6646/fi-bsw-kefka/igt@kms_cursor_legacy@basic-busy-flip-before-cursor@atomic-transitions-varying-size.html
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/fi-bsw-kefka/igt@kms_cursor_legacy@basic-busy-flip-before-cursor@atomic-transitions-varying-size.html

  
#### Possible fixes ####

  * igt@gem_exec_suspend@basic-s0@smem:
    - {bat-rplp-1}:       [DMESG-WARN][6] ([i915#2867]) -> [PASS][7] +1 similar issue
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6646/bat-rplp-1/igt@gem_exec_suspend@basic-s0@smem.html
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/bat-rplp-1/igt@gem_exec_suspend@basic-s0@smem.html

  * igt@i915_module_load@load:
    - {bat-adln-1}:       [DMESG-WARN][8] ([i915#2867]) -> [PASS][9]
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6646/bat-adln-1/igt@i915_module_load@load.html
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/bat-adln-1/igt@i915_module_load@load.html

  * igt@i915_selftest@live@gem:
    - fi-pnv-d510:        [DMESG-FAIL][10] ([i915#4528]) -> [PASS][11]
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6646/fi-pnv-d510/igt@i915_selftest@live@gem.html
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/fi-pnv-d510/igt@i915_selftest@live@gem.html

  * igt@i915_selftest@live@reset:
    - {bat-rpls-1}:       [DMESG-FAIL][12] ([i915#4983] / [i915#5828]) -> [PASS][13]
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6646/bat-rpls-1/igt@i915_selftest@live@reset.html
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/bat-rpls-1/igt@i915_selftest@live@reset.html

  * igt@i915_suspend@basic-s3-without-i915:
    - fi-rkl-11600:       [INCOMPLETE][14] ([i915#5982]) -> [PASS][15]
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6646/fi-rkl-11600/igt@i915_suspend@basic-s3-without-i915.html
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/fi-rkl-11600/igt@i915_suspend@basic-s3-without-i915.html

  * igt@kms_cursor_legacy@basic-busy-flip-before-cursor@atomic-transitions:
    - fi-bsw-kefka:       [FAIL][16] ([i915#6298]) -> [PASS][17]
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6646/fi-bsw-kefka/igt@kms_cursor_legacy@basic-busy-flip-before-cursor@atomic-transitions.html
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/fi-bsw-kefka/igt@kms_cursor_legacy@basic-busy-flip-before-cursor@atomic-transitions.html

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

  [fdo#103375]: https://bugs.freedesktop.org/show_bug.cgi?id=103375
  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [fdo#111827]: https://bugs.freedesktop.org/show_bug.cgi?id=111827
  [i915#2867]: https://gitlab.freedesktop.org/drm/intel/issues/2867
  [i915#4312]: https://gitlab.freedesktop.org/drm/intel/issues/4312
  [i915#4528]: https://gitlab.freedesktop.org/drm/intel/issues/4528
  [i915#4983]: https://gitlab.freedesktop.org/drm/intel/issues/4983
  [i915#5828]: https://gitlab.freedesktop.org/drm/intel/issues/5828
  [i915#5982]: https://gitlab.freedesktop.org/drm/intel/issues/5982
  [i915#6297]: https://gitlab.freedesktop.org/drm/intel/issues/6297
  [i915#6298]: https://gitlab.freedesktop.org/drm/intel/issues/6298


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

  * CI: CI-20190529 -> None
  * IGT: IGT_6646 -> IGTPW_7740

  CI-20190529: 20190529
  CI_DRM_12074: c16b937da799ddbebf0d940aff159b96ce9fec0f @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_7740: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/index.html
  IGT_6646: c1f420ae84b76079cd32ac014cfdf95b5f2922f7 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git

== Logs ==

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

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

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

* [igt-dev] ✗ Fi.CI.IGT: failure for Add IGT support for Bigjoiner
  2022-09-06  9:49 [igt-dev] [i-g-t V2 00/52] Add IGT support for Bigjoiner Bhanuprakash Modem
                   ` (52 preceding siblings ...)
  2022-09-06 10:26 ` [igt-dev] ✓ Fi.CI.BAT: success for Add IGT " Patchwork
@ 2022-09-06 12:15 ` Patchwork
  53 siblings, 0 replies; 58+ messages in thread
From: Patchwork @ 2022-09-06 12:15 UTC (permalink / raw)
  To: Bhanuprakash Modem; +Cc: igt-dev

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

== Series Details ==

Series: Add IGT support for Bigjoiner
URL   : https://patchwork.freedesktop.org/series/108183/
State : failure

== Summary ==

CI Bug Log - changes from IGT_6646_full -> IGTPW_7740_full
====================================================

Summary
-------

  **FAILURE**

  Serious unknown changes coming with IGTPW_7740_full absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in IGTPW_7740_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_7740/index.html

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

  No changes in participating hosts

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

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

### IGT changes ###

#### Possible regressions ####

  * igt@kms_ccs@pipe-c-crc-primary-rotation-180-y_tiled_gen12_rc_ccs:
    - shard-iclb:         NOTRUN -> [SKIP][1] +1 similar issue
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-iclb3/igt@kms_ccs@pipe-c-crc-primary-rotation-180-y_tiled_gen12_rc_ccs.html

  
#### Warnings ####

  * igt@kms_ccs@pipe-a-crc-sprite-planes-basic-4_tiled_dg2_rc_ccs:
    - shard-iclb:         [SKIP][2] ([fdo#109278]) -> [SKIP][3] +71 similar issues
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6646/shard-iclb3/igt@kms_ccs@pipe-a-crc-sprite-planes-basic-4_tiled_dg2_rc_ccs.html
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-iclb2/igt@kms_ccs@pipe-a-crc-sprite-planes-basic-4_tiled_dg2_rc_ccs.html

  * igt@kms_display_modes@extended-mode-basic:
    - shard-tglb:         [SKIP][4] ([fdo#109274]) -> [SKIP][5]
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6646/shard-tglb7/igt@kms_display_modes@extended-mode-basic.html
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-tglb3/igt@kms_display_modes@extended-mode-basic.html
    - shard-iclb:         [SKIP][6] ([fdo#109274]) -> [SKIP][7]
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6646/shard-iclb2/igt@kms_display_modes@extended-mode-basic.html
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-iclb5/igt@kms_display_modes@extended-mode-basic.html

  
#### Suppressed ####

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

  * igt@gem_ppgtt@blt-vs-render-ctxn:
    - {shard-rkl}:        [PASS][8] -> [FAIL][9]
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6646/shard-rkl-4/igt@gem_ppgtt@blt-vs-render-ctxn.html
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-rkl-5/igt@gem_ppgtt@blt-vs-render-ctxn.html

  * igt@gen9_exec_parse@bb-large:
    - {shard-rkl}:        [PASS][10] -> [INCOMPLETE][11]
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6646/shard-rkl-5/igt@gen9_exec_parse@bb-large.html
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-rkl-5/igt@gen9_exec_parse@bb-large.html

  * igt@kms_ccs@pipe-c-bad-pixel-format-4_tiled_dg2_rc_ccs_cc:
    - {shard-rkl}:        [SKIP][12] ([i915#4098]) -> [SKIP][13] +3 similar issues
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6646/shard-rkl-5/igt@kms_ccs@pipe-c-bad-pixel-format-4_tiled_dg2_rc_ccs_cc.html
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-rkl-6/igt@kms_ccs@pipe-c-bad-pixel-format-4_tiled_dg2_rc_ccs_cc.html

  * igt@kms_ccs@pipe-c-random-ccs-data-4_tiled_dg2_mc_ccs:
    - {shard-rkl}:        [SKIP][14] ([i915#4070]) -> [SKIP][15]
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6646/shard-rkl-6/igt@kms_ccs@pipe-c-random-ccs-data-4_tiled_dg2_mc_ccs.html
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-rkl-6/igt@kms_ccs@pipe-c-random-ccs-data-4_tiled_dg2_mc_ccs.html

  * igt@kms_ccs@pipe-d-crc-sprite-planes-basic-y_tiled_ccs:
    - {shard-rkl}:        [SKIP][16] ([i915#1845] / [i915#4098]) -> [SKIP][17] +6 similar issues
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6646/shard-rkl-4/igt@kms_ccs@pipe-d-crc-sprite-planes-basic-y_tiled_ccs.html
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-rkl-6/igt@kms_ccs@pipe-d-crc-sprite-planes-basic-y_tiled_ccs.html

  * igt@kms_display_modes@extended-mode-basic:
    - {shard-dg1}:        NOTRUN -> [SKIP][18]
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-dg1-15/igt@kms_display_modes@extended-mode-basic.html
    - {shard-tglu}:       [SKIP][19] ([fdo#109274]) -> [SKIP][20]
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6646/shard-tglu-8/igt@kms_display_modes@extended-mode-basic.html
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-tglu-8/igt@kms_display_modes@extended-mode-basic.html

  * igt@kms_plane@plane-panning-top-left:
    - {shard-rkl}:        NOTRUN -> [SKIP][21] +6 similar issues
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-rkl-2/igt@kms_plane@plane-panning-top-left.html

  
New tests
---------

  New tests have been introduced between IGT_6646_full and IGTPW_7740_full:

### New IGT tests (32) ###

  * igt@kms_cursor_crc@cursor-onscreen-64x64@pipe-a-hdmi-a-4:
    - Statuses : 1 pass(s)
    - Exec time: [3.45] s

  * igt@kms_cursor_crc@cursor-onscreen-64x64@pipe-b-hdmi-a-4:
    - Statuses : 1 pass(s)
    - Exec time: [3.40] s

  * igt@kms_cursor_crc@cursor-onscreen-64x64@pipe-c-hdmi-a-4:
    - Statuses : 1 pass(s)
    - Exec time: [3.26] s

  * igt@kms_cursor_crc@cursor-onscreen-64x64@pipe-d-hdmi-a-4:
    - Statuses : 1 pass(s)
    - Exec time: [3.33] s

  * igt@kms_cursor_crc@cursor-random-128x42@pipe-a-hdmi-a-4:
    - Statuses : 1 pass(s)
    - Exec time: [5.86] s

  * igt@kms_cursor_crc@cursor-random-128x42@pipe-b-hdmi-a-4:
    - Statuses : 1 pass(s)
    - Exec time: [5.82] s

  * igt@kms_cursor_crc@cursor-random-128x42@pipe-c-hdmi-a-4:
    - Statuses : 1 pass(s)
    - Exec time: [5.91] s

  * igt@kms_cursor_crc@cursor-random-128x42@pipe-d-hdmi-a-4:
    - Statuses : 1 pass(s)
    - Exec time: [5.76] s

  * igt@kms_cursor_crc@cursor-rapid-movement-128x42@pipe-a-hdmi-a-4:
    - Statuses : 1 pass(s)
    - Exec time: [0.38] s

  * igt@kms_cursor_crc@cursor-rapid-movement-128x42@pipe-b-hdmi-a-4:
    - Statuses : 1 pass(s)
    - Exec time: [0.25] s

  * igt@kms_cursor_crc@cursor-rapid-movement-128x42@pipe-c-hdmi-a-4:
    - Statuses : 1 pass(s)
    - Exec time: [0.23] s

  * igt@kms_cursor_crc@cursor-rapid-movement-128x42@pipe-d-hdmi-a-4:
    - Statuses : 1 pass(s)
    - Exec time: [0.24] s

  * igt@kms_display_modes@extended-mode-basic@pipe-a-hdmi-a-1-pipe-b-hdmi-a-2:
    - Statuses : 1 pass(s)
    - Exec time: [0.80] s

  * igt@kms_display_modes@extended-mode-basic@pipe-a-hdmi-a-1-pipe-c-hdmi-a-2:
    - Statuses : 1 pass(s)
    - Exec time: [0.83] s

  * igt@kms_display_modes@extended-mode-basic@pipe-a-hdmi-a-2-pipe-b-hdmi-a-1:
    - Statuses : 1 pass(s)
    - Exec time: [0.88] s

  * igt@kms_display_modes@extended-mode-basic@pipe-a-hdmi-a-2-pipe-c-hdmi-a-1:
    - Statuses : 1 pass(s)
    - Exec time: [0.90] s

  * igt@kms_display_modes@extended-mode-basic@pipe-b-hdmi-a-1-pipe-a-hdmi-a-2:
    - Statuses : 1 pass(s)
    - Exec time: [0.97] s

  * igt@kms_display_modes@extended-mode-basic@pipe-b-hdmi-a-1-pipe-c-hdmi-a-2:
    - Statuses : 1 pass(s)
    - Exec time: [0.91] s

  * igt@kms_display_modes@extended-mode-basic@pipe-b-hdmi-a-2-pipe-a-hdmi-a-1:
    - Statuses : 1 pass(s)
    - Exec time: [0.99] s

  * igt@kms_display_modes@extended-mode-basic@pipe-b-hdmi-a-2-pipe-c-hdmi-a-1:
    - Statuses : 1 pass(s)
    - Exec time: [0.89] s

  * igt@kms_display_modes@extended-mode-basic@pipe-c-hdmi-a-1-pipe-a-hdmi-a-2:
    - Statuses : 1 pass(s)
    - Exec time: [1.00] s

  * igt@kms_display_modes@extended-mode-basic@pipe-c-hdmi-a-1-pipe-b-hdmi-a-2:
    - Statuses : 1 pass(s)
    - Exec time: [0.92] s

  * igt@kms_display_modes@extended-mode-basic@pipe-c-hdmi-a-2-pipe-a-hdmi-a-1:
    - Statuses : 1 pass(s)
    - Exec time: [1.00] s

  * igt@kms_display_modes@extended-mode-basic@pipe-c-hdmi-a-2-pipe-b-hdmi-a-1:
    - Statuses : 1 pass(s)
    - Exec time: [0.91] s

  * igt@kms_flip@basic-flip-vs-modeset@a-hdmi-a4:
    - Statuses : 1 pass(s)
    - Exec time: [0.74] s

  * igt@kms_flip@basic-flip-vs-modeset@b-hdmi-a4:
    - Statuses : 1 pass(s)
    - Exec time: [0.65] s

  * igt@kms_flip@basic-flip-vs-modeset@c-hdmi-a4:
    - Statuses : 1 pass(s)
    - Exec time: [0.63] s

  * igt@kms_flip@basic-flip-vs-modeset@d-hdmi-a4:
    - Statuses : 1 pass(s)
    - Exec time: [0.61] s

  * igt@kms_plane_multiple@tiling-x@pipe-a-hdmi-a-4:
    - Statuses : 1 pass(s)
    - Exec time: [0.62] s

  * igt@kms_plane_multiple@tiling-x@pipe-b-hdmi-a-4:
    - Statuses : 1 pass(s)
    - Exec time: [0.50] s

  * igt@kms_plane_multiple@tiling-x@pipe-c-hdmi-a-4:
    - Statuses : 1 pass(s)
    - Exec time: [0.50] s

  * igt@kms_plane_multiple@tiling-x@pipe-d-hdmi-a-4:
    - Statuses : 1 pass(s)
    - Exec time: [0.50] s

  

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

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

### IGT changes ###

#### Issues hit ####

  * igt@gem_eio@kms:
    - shard-tglb:         [PASS][22] -> [FAIL][23] ([i915#5784])
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6646/shard-tglb6/igt@gem_eio@kms.html
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-tglb1/igt@gem_eio@kms.html

  * igt@gem_eio@unwedge-stress:
    - shard-tglb:         [PASS][24] -> [TIMEOUT][25] ([i915#3063])
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6646/shard-tglb2/igt@gem_eio@unwedge-stress.html
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-tglb7/igt@gem_eio@unwedge-stress.html

  * igt@gem_exec_balancer@parallel-contexts:
    - shard-iclb:         [PASS][26] -> [SKIP][27] ([i915#4525])
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6646/shard-iclb1/igt@gem_exec_balancer@parallel-contexts.html
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-iclb8/igt@gem_exec_balancer@parallel-contexts.html

  * igt@gem_exec_fair@basic-deadline:
    - shard-glk:          [PASS][28] -> [FAIL][29] ([i915#2846])
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6646/shard-glk9/igt@gem_exec_fair@basic-deadline.html
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-glk9/igt@gem_exec_fair@basic-deadline.html

  * igt@gem_exec_fair@basic-pace@rcs0:
    - shard-glk:          [PASS][30] -> [FAIL][31] ([i915#2842]) +1 similar issue
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6646/shard-glk5/igt@gem_exec_fair@basic-pace@rcs0.html
   [31]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-glk7/igt@gem_exec_fair@basic-pace@rcs0.html

  * igt@gem_exec_reloc@basic-wc-gtt-active:
    - shard-apl:          [PASS][32] -> [DMESG-WARN][33] ([i915#62]) +19 similar issues
   [32]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6646/shard-apl2/igt@gem_exec_reloc@basic-wc-gtt-active.html
   [33]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-apl1/igt@gem_exec_reloc@basic-wc-gtt-active.html

  * igt@gem_render_copy@y-tiled-to-vebox-y-tiled:
    - shard-iclb:         NOTRUN -> [SKIP][34] ([i915#768])
   [34]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-iclb6/igt@gem_render_copy@y-tiled-to-vebox-y-tiled.html

  * igt@i915_pm_dc@dc6-psr:
    - shard-iclb:         [PASS][35] -> [FAIL][36] ([i915#454])
   [35]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6646/shard-iclb7/igt@i915_pm_dc@dc6-psr.html
   [36]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-iclb3/igt@i915_pm_dc@dc6-psr.html

  * igt@kms_atomic_transition@modeset-transition-fencing@1x-outputs:
    - shard-apl:          [PASS][37] -> [DMESG-FAIL][38] ([i915#62])
   [37]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6646/shard-apl7/igt@kms_atomic_transition@modeset-transition-fencing@1x-outputs.html
   [38]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-apl1/igt@kms_atomic_transition@modeset-transition-fencing@1x-outputs.html

  * igt@kms_big_fb@4-tiled-32bpp-rotate-90:
    - shard-apl:          NOTRUN -> [SKIP][39] ([fdo#109271]) +54 similar issues
   [39]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-apl1/igt@kms_big_fb@4-tiled-32bpp-rotate-90.html

  * igt@kms_big_fb@4-tiled-64bpp-rotate-90:
    - shard-tglb:         NOTRUN -> [SKIP][40] ([i915#5286]) +1 similar issue
   [40]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-tglb7/igt@kms_big_fb@4-tiled-64bpp-rotate-90.html

  * igt@kms_ccs@pipe-b-bad-aux-stride-y_tiled_gen12_mc_ccs:
    - shard-apl:          NOTRUN -> [SKIP][41] ([fdo#109271] / [i915#3886]) +2 similar issues
   [41]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-apl6/igt@kms_ccs@pipe-b-bad-aux-stride-y_tiled_gen12_mc_ccs.html
    - shard-tglb:         NOTRUN -> [SKIP][42] ([i915#3689] / [i915#3886])
   [42]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-tglb3/igt@kms_ccs@pipe-b-bad-aux-stride-y_tiled_gen12_mc_ccs.html
    - shard-iclb:         NOTRUN -> [SKIP][43] ([i915#3886])
   [43]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-iclb6/igt@kms_ccs@pipe-b-bad-aux-stride-y_tiled_gen12_mc_ccs.html

  * igt@kms_ccs@pipe-b-bad-rotation-90-y_tiled_gen12_rc_ccs_cc:
    - shard-glk:          NOTRUN -> [SKIP][44] ([fdo#109271] / [i915#3886]) +2 similar issues
   [44]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-glk7/igt@kms_ccs@pipe-b-bad-rotation-90-y_tiled_gen12_rc_ccs_cc.html

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

  * igt@kms_chamelium@dp-hpd-after-suspend:
    - shard-apl:          NOTRUN -> [SKIP][46] ([fdo#109271] / [fdo#111827]) +1 similar issue
   [46]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-apl3/igt@kms_chamelium@dp-hpd-after-suspend.html
    - shard-tglb:         NOTRUN -> [SKIP][47] ([fdo#109284] / [fdo#111827])
   [47]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-tglb5/igt@kms_chamelium@dp-hpd-after-suspend.html
    - shard-glk:          NOTRUN -> [SKIP][48] ([fdo#109271] / [fdo#111827]) +1 similar issue
   [48]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-glk8/igt@kms_chamelium@dp-hpd-after-suspend.html
    - shard-iclb:         NOTRUN -> [SKIP][49] ([fdo#109284] / [fdo#111827])
   [49]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-iclb7/igt@kms_chamelium@dp-hpd-after-suspend.html
    - shard-snb:          NOTRUN -> [SKIP][50] ([fdo#109271] / [fdo#111827])
   [50]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-snb5/igt@kms_chamelium@dp-hpd-after-suspend.html

  * igt@kms_content_protection@legacy:
    - shard-apl:          NOTRUN -> [TIMEOUT][51] ([i915#1319])
   [51]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-apl7/igt@kms_content_protection@legacy.html

  * igt@kms_cursor_legacy@2x-long-flip-vs-cursor-legacy:
    - shard-tglb:         NOTRUN -> [SKIP][52] ([fdo#109274] / [fdo#111825])
   [52]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-tglb7/igt@kms_cursor_legacy@2x-long-flip-vs-cursor-legacy.html

  * igt@kms_cursor_legacy@flip-vs-cursor@atomic-transitions-varying-size:
    - shard-glk:          [PASS][53] -> [FAIL][54] ([i915#2346])
   [53]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6646/shard-glk3/igt@kms_cursor_legacy@flip-vs-cursor@atomic-transitions-varying-size.html
   [54]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-glk5/igt@kms_cursor_legacy@flip-vs-cursor@atomic-transitions-varying-size.html

  * igt@kms_flip@2x-flip-vs-expired-vblank@ab-hdmi-a1-hdmi-a2:
    - shard-glk:          [PASS][55] -> [FAIL][56] ([i915#79])
   [55]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6646/shard-glk1/igt@kms_flip@2x-flip-vs-expired-vblank@ab-hdmi-a1-hdmi-a2.html
   [56]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-glk8/igt@kms_flip@2x-flip-vs-expired-vblank@ab-hdmi-a1-hdmi-a2.html

  * igt@kms_flip@2x-single-buffer-flip-vs-dpms-off-vs-modeset-interruptible:
    - shard-iclb:         NOTRUN -> [SKIP][57] ([fdo#109274]) +1 similar issue
   [57]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-iclb5/igt@kms_flip@2x-single-buffer-flip-vs-dpms-off-vs-modeset-interruptible.html
    - shard-tglb:         NOTRUN -> [SKIP][58] ([fdo#109274] / [fdo#111825] / [i915#3637])
   [58]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-tglb5/igt@kms_flip@2x-single-buffer-flip-vs-dpms-off-vs-modeset-interruptible.html

  * igt@kms_flip@flip-vs-suspend@a-dp1:
    - shard-apl:          [PASS][59] -> [DMESG-WARN][60] ([i915#180]) +2 similar issues
   [59]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6646/shard-apl4/igt@kms_flip@flip-vs-suspend@a-dp1.html
   [60]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-apl8/igt@kms_flip@flip-vs-suspend@a-dp1.html

  * igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-upscaling@pipe-a-valid-mode:
    - shard-iclb:         NOTRUN -> [SKIP][61] ([i915#2672]) +6 similar issues
   [61]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-iclb6/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-upscaling@pipe-a-valid-mode.html

  * igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling@pipe-a-default-mode:
    - shard-iclb:         NOTRUN -> [SKIP][62] ([i915#2672] / [i915#3555]) +1 similar issue
   [62]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-iclb3/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilercccs-downscaling@pipe-a-default-mode.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-draw-render:
    - shard-iclb:         NOTRUN -> [SKIP][63] ([fdo#109280]) +1 similar issue
   [63]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-iclb8/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-draw-render.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-draw-mmap-cpu:
    - shard-tglb:         NOTRUN -> [SKIP][64] ([fdo#109280] / [fdo#111825]) +1 similar issue
   [64]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-tglb6/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-draw-mmap-cpu.html

  * igt@kms_frontbuffer_tracking@psr-2p-scndscrn-spr-indfb-draw-mmap-cpu:
    - shard-glk:          NOTRUN -> [SKIP][65] ([fdo#109271]) +63 similar issues
   [65]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-glk3/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-spr-indfb-draw-mmap-cpu.html

  * igt@kms_hdr@bpc-switch-suspend:
    - shard-tglb:         NOTRUN -> [SKIP][66] ([i915#3555])
   [66]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-tglb7/igt@kms_hdr@bpc-switch-suspend.html
    - shard-iclb:         NOTRUN -> [SKIP][67] ([i915#3555]) +2 similar issues
   [67]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-iclb2/igt@kms_hdr@bpc-switch-suspend.html

  * igt@kms_psr2_su@frontbuffer-xrgb8888:
    - shard-glk:          NOTRUN -> [SKIP][68] ([fdo#109271] / [i915#658])
   [68]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-glk8/igt@kms_psr2_su@frontbuffer-xrgb8888.html
    - shard-apl:          NOTRUN -> [SKIP][69] ([fdo#109271] / [i915#658])
   [69]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-apl3/igt@kms_psr2_su@frontbuffer-xrgb8888.html

  * igt@kms_psr@psr2_cursor_plane_move:
    - shard-tglb:         NOTRUN -> [FAIL][70] ([i915#132] / [i915#3467])
   [70]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-tglb2/igt@kms_psr@psr2_cursor_plane_move.html
    - shard-iclb:         NOTRUN -> [SKIP][71] ([fdo#109441])
   [71]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-iclb6/igt@kms_psr@psr2_cursor_plane_move.html

  * igt@kms_psr_stress_test@flip-primary-invalidate-overlay:
    - shard-tglb:         [PASS][72] -> [SKIP][73] ([i915#5519])
   [72]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6646/shard-tglb3/igt@kms_psr_stress_test@flip-primary-invalidate-overlay.html
   [73]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-tglb1/igt@kms_psr_stress_test@flip-primary-invalidate-overlay.html
    - shard-iclb:         [PASS][74] -> [SKIP][75] ([i915#5519])
   [74]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6646/shard-iclb3/igt@kms_psr_stress_test@flip-primary-invalidate-overlay.html
   [75]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-iclb8/igt@kms_psr_stress_test@flip-primary-invalidate-overlay.html

  * igt@kms_universal_plane@cursor-fb-leak-pipe-c:
    - shard-apl:          NOTRUN -> [DMESG-WARN][76] ([i915#62]) +1 similar issue
   [76]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-apl1/igt@kms_universal_plane@cursor-fb-leak-pipe-c.html

  * igt@perf@polling-parameterized:
    - shard-glk:          [PASS][77] -> [FAIL][78] ([i915#5639])
   [77]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6646/shard-glk3/igt@perf@polling-parameterized.html
   [78]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-glk9/igt@perf@polling-parameterized.html

  * igt@sysfs_clients@sema-50:
    - shard-snb:          NOTRUN -> [SKIP][79] ([fdo#109271]) +58 similar issues
   [79]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-snb6/igt@sysfs_clients@sema-50.html
    - shard-apl:          NOTRUN -> [SKIP][80] ([fdo#109271] / [i915#2994])
   [80]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-apl3/igt@sysfs_clients@sema-50.html
    - shard-tglb:         NOTRUN -> [SKIP][81] ([i915#2994])
   [81]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-tglb5/igt@sysfs_clients@sema-50.html
    - shard-glk:          NOTRUN -> [SKIP][82] ([fdo#109271] / [i915#2994])
   [82]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-glk8/igt@sysfs_clients@sema-50.html
    - shard-iclb:         NOTRUN -> [SKIP][83] ([i915#2994])
   [83]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-iclb3/igt@sysfs_clients@sema-50.html

  
#### Possible fixes ####

  * igt@drm_read@short-buffer-block:
    - {shard-rkl}:        [SKIP][84] ([i915#4098]) -> [PASS][85]
   [84]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6646/shard-rkl-2/igt@drm_read@short-buffer-block.html
   [85]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-rkl-6/igt@drm_read@short-buffer-block.html

  * igt@fbdev@info:
    - {shard-rkl}:        [SKIP][86] ([i915#2582]) -> [PASS][87]
   [86]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6646/shard-rkl-4/igt@fbdev@info.html
   [87]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-rkl-4/igt@fbdev@info.html

  * igt@gem_ctx_persistence@hang:
    - {shard-rkl}:        [SKIP][88] ([i915#6252]) -> [PASS][89]
   [88]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6646/shard-rkl-5/igt@gem_ctx_persistence@hang.html
   [89]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-rkl-2/igt@gem_ctx_persistence@hang.html

  * igt@gem_ctx_persistence@legacy-engines-hostile@vebox:
    - {shard-dg1}:        [FAIL][90] ([i915#4883]) -> [PASS][91] +5 similar issues
   [90]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6646/shard-dg1-19/igt@gem_ctx_persistence@legacy-engines-hostile@vebox.html
   [91]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-dg1-19/igt@gem_ctx_persistence@legacy-engines-hostile@vebox.html

  * igt@gem_eio@in-flight-contexts-1us:
    - shard-glk:          [TIMEOUT][92] ([i915#3063]) -> [PASS][93]
   [92]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6646/shard-glk5/igt@gem_eio@in-flight-contexts-1us.html
   [93]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-glk8/igt@gem_eio@in-flight-contexts-1us.html

  * igt@gem_eio@reset-stress:
    - shard-tglb:         [FAIL][94] ([i915#5784]) -> [PASS][95]
   [94]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6646/shard-tglb1/igt@gem_eio@reset-stress.html
   [95]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-tglb7/igt@gem_eio@reset-stress.html

  * igt@gem_eio@unwedge-stress:
    - {shard-tglu}:       [TIMEOUT][96] ([i915#3063]) -> [PASS][97]
   [96]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6646/shard-tglu-5/igt@gem_eio@unwedge-stress.html
   [97]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-tglu-5/igt@gem_eio@unwedge-stress.html

  * igt@gem_exec_balancer@parallel-keep-submit-fence:
    - shard-iclb:         [SKIP][98] ([i915#4525]) -> [PASS][99] +1 similar issue
   [98]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6646/shard-iclb7/igt@gem_exec_balancer@parallel-keep-submit-fence.html
   [99]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-iclb4/igt@gem_exec_balancer@parallel-keep-submit-fence.html

  * igt@gem_exec_endless@dispatch@bcs0:
    - {shard-rkl}:        [SKIP][100] ([i915#6247]) -> [PASS][101]
   [100]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6646/shard-rkl-5/igt@gem_exec_endless@dispatch@bcs0.html
   [101]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-rkl-2/igt@gem_exec_endless@dispatch@bcs0.html

  * igt@gem_exec_fair@basic-none-share@rcs0:
    - shard-iclb:         [FAIL][102] ([i915#2842]) -> [PASS][103]
   [102]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6646/shard-iclb8/igt@gem_exec_fair@basic-none-share@rcs0.html
   [103]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-iclb3/igt@gem_exec_fair@basic-none-share@rcs0.html

  * igt@gem_exec_fair@basic-none@vcs0:
    - shard-glk:          [FAIL][104] ([i915#2842]) -> [PASS][105]
   [104]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6646/shard-glk1/igt@gem_exec_fair@basic-none@vcs0.html
   [105]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-glk3/igt@gem_exec_fair@basic-none@vcs0.html

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

  * igt@gem_exec_schedule@semaphore-power:
    - {shard-rkl}:        [SKIP][108] ([fdo#110254]) -> [PASS][109]
   [108]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6646/shard-rkl-4/igt@gem_exec_schedule@semaphore-power.html
   [109]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-rkl-5/igt@gem_exec_schedule@semaphore-power.html

  * igt@gem_mmap_gtt@coherency:
    - {shard-rkl}:        [SKIP][110] ([fdo#111656]) -> [PASS][111]
   [110]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6646/shard-rkl-4/igt@gem_mmap_gtt@coherency.html
   [111]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-rkl-5/igt@gem_mmap_gtt@coherency.html

  * igt@gem_set_tiling_vs_pwrite:
    - {shard-rkl}:        [SKIP][112] ([i915#3282]) -> [PASS][113] +1 similar issue
   [112]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6646/shard-rkl-6/igt@gem_set_tiling_vs_pwrite.html
   [113]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-rkl-5/igt@gem_set_tiling_vs_pwrite.html

  * igt@gem_softpin@evict-single-offset:
    - shard-tglb:         [FAIL][114] ([i915#4171]) -> [PASS][115]
   [114]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6646/shard-tglb1/igt@gem_softpin@evict-single-offset.html
   [115]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-tglb5/igt@gem_softpin@evict-single-offset.html
    - shard-iclb:         [FAIL][116] ([i915#4171]) -> [PASS][117]
   [116]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6646/shard-iclb4/igt@gem_softpin@evict-single-offset.html
   [117]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-iclb2/igt@gem_softpin@evict-single-offset.html

  * igt@gen9_exec_parse@allowed-single:
    - shard-apl:          [DMESG-WARN][118] ([i915#5566] / [i915#716]) -> [PASS][119]
   [118]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6646/shard-apl8/igt@gen9_exec_parse@allowed-single.html
   [119]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-apl2/igt@gen9_exec_parse@allowed-single.html
    - shard-glk:          [DMESG-WARN][120] ([i915#5566] / [i915#716]) -> [PASS][121]
   [120]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6646/shard-glk9/igt@gen9_exec_parse@allowed-single.html
   [121]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-glk7/igt@gen9_exec_parse@allowed-single.html

  * igt@gen9_exec_parse@secure-batches:
    - {shard-rkl}:        [SKIP][122] ([i915#2527]) -> [PASS][123] +3 similar issues
   [122]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6646/shard-rkl-4/igt@gen9_exec_parse@secure-batches.html
   [123]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-rkl-5/igt@gen9_exec_parse@secure-batches.html

  * igt@i915_pm_backlight@basic-brightness:
    - {shard-rkl}:        [SKIP][124] ([i915#3012]) -> [PASS][125]
   [124]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6646/shard-rkl-4/igt@i915_pm_backlight@basic-brightness.html
   [125]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-rkl-6/igt@i915_pm_backlight@basic-brightness.html

  * igt@i915_pm_dc@dc9-dpms:
    - shard-apl:          [SKIP][126] ([fdo#109271]) -> [PASS][127]
   [126]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6646/shard-apl7/igt@i915_pm_dc@dc9-dpms.html
   [127]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-apl3/igt@i915_pm_dc@dc9-dpms.html

  * igt@i915_pm_rpm@dpms-mode-unset-non-lpsp:
    - {shard-dg1}:        [SKIP][128] ([i915#1397]) -> [PASS][129] +1 similar issue
   [128]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6646/shard-dg1-19/igt@i915_pm_rpm@dpms-mode-unset-non-lpsp.html
   [129]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-dg1-15/igt@i915_pm_rpm@dpms-mode-unset-non-lpsp.html

  * igt@i915_pm_rpm@fences:
    - {shard-rkl}:        [SKIP][130] ([i915#1849]) -> [PASS][131] +1 similar issue
   [130]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6646/shard-rkl-4/igt@i915_pm_rpm@fences.html
   [131]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-rkl-6/igt@i915_pm_rpm@fences.html

  * igt@i915_selftest@live@hangcheck:
    - shard-snb:          [INCOMPLETE][132] ([i915#3921]) -> [PASS][133]
   [132]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6646/shard-snb5/igt@i915_selftest@live@hangcheck.html
   [133]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-snb6/igt@i915_selftest@live@hangcheck.html

  * igt@i915_selftest@perf@engine_cs:
    - shard-tglb:         [DMESG-WARN][134] ([i915#2867]) -> [PASS][135] +3 similar issues
   [134]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6646/shard-tglb3/igt@i915_selftest@perf@engine_cs.html
   [135]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-tglb6/igt@i915_selftest@perf@engine_cs.html

  * igt@kms_big_fb@x-tiled-64bpp-rotate-0:
    - shard-iclb:         [FAIL][136] ([i915#1888]) -> [PASS][137]
   [136]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6646/shard-iclb6/igt@kms_big_fb@x-tiled-64bpp-rotate-0.html
   [137]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-iclb6/igt@kms_big_fb@x-tiled-64bpp-rotate-0.html

  * igt@kms_big_fb@y-tiled-addfb-size-offset-overflow:
    - {shard-rkl}:        [SKIP][138] ([i915#1845] / [i915#4098]) -> [PASS][139] +16 similar issues
   [138]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6646/shard-rkl-5/igt@kms_big_fb@y-tiled-addfb-size-offset-overflow.html
   [139]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-rkl-6/igt@kms_big_fb@y-tiled-addfb-size-offset-overflow.html

  * igt@kms_cursor_legacy@flip-vs-cursor@atomic-transitions:
    - shard-glk:          [FAIL][140] ([i915#2346]) -> [PASS][141]
   [140]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6646/shard-glk3/igt@kms_cursor_legacy@flip-vs-cursor@atomic-transitions.html
   [141]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-glk5/igt@kms_cursor_legacy@flip-vs-cursor@atomic-transitions.html

  * igt@kms_flip@flip-vs-suspend-interruptible@c-edp1:
    - shard-iclb:         [DMESG-WARN][142] ([i915#2867]) -> [PASS][143]
   [142]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6646/shard-iclb1/igt@kms_flip@flip-vs-suspend-interruptible@c-edp1.html
   [143]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-iclb3/igt@kms_flip@flip-vs-suspend-interruptible@c-edp1.html

  * igt@kms_frontbuffer_tracking@fbc-1p-offscren-pri-indfb-draw-mmap-cpu:
    - shard-glk:          [FAIL][144] ([i915#1888] / [i915#2546]) -> [PASS][145]
   [144]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6646/shard-glk2/igt@kms_frontbuffer_tracking@fbc-1p-offscren-pri-indfb-draw-mmap-cpu.html
   [145]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-glk6/igt@kms_frontbuffer_tracking@fbc-1p-offscren-pri-indfb-draw-mmap-cpu.html

  * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-pri-indfb-draw-pwrite:
    - {shard-rkl}:        [SKIP][146] ([i915#1849] / [i915#4098]) -> [PASS][147] +17 similar issues
   [146]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6646/shard-rkl-4/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-pri-indfb-draw-pwrite.html
   [147]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-rkl-6/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-pri-indfb-draw-pwrite.html

  * igt@kms_pipe_crc_basic@nonblocking-crc-frame-sequence@pipe-b-hdmi-a-2:
    - shard-glk:          [FAIL][148] -> [PASS][149]
   [148]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6646/shard-glk2/igt@kms_pipe_crc_basic@nonblocking-crc-frame-sequence@pipe-b-hdmi-a-2.html
   [149]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-glk1/igt@kms_pipe_crc_basic@nonblocking-crc-frame-sequence@pipe-b-hdmi-a-2.html

  * igt@kms_plane@plane-position-hole-dpms@pipe-b-planes:
    - {shard-rkl}:        [SKIP][150] ([i915#1849] / [i915#3558]) -> [PASS][151] +1 similar issue
   [150]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6646/shard-rkl-2/igt@kms_plane@plane-position-hole-dpms@pipe-b-planes.html
   [151]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-rkl-6/igt@kms_plane@plane-position-hole-dpms@pipe-b-planes.html

  * igt@kms_plane_alpha_blend@pipe-a-alpha-basic:
    - {shard-rkl}:        [SKIP][152] ([i915#3546] / [i915#4098]) -> [PASS][153]
   [152]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6646/shard-rkl-4/igt@kms_plane_alpha_blend@pipe-a-alpha-basic.html
   [153]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-rkl-6/igt@kms_plane_alpha_blend@pipe-a-alpha-basic.html

  * igt@kms_plane_alpha_blend@pipe-a-constant-alpha-mid:
    - {shard-rkl}:        [SKIP][154] ([i915#1849] / [i915#3546] / [i915#4070] / [i915#4098]) -> [PASS][155]
   [154]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6646/shard-rkl-1/igt@kms_plane_alpha_blend@pipe-a-constant-alpha-mid.html
   [155]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-rkl-6/igt@kms_plane_alpha_blend@pipe-a-constant-alpha-mid.html

  * igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-5@pipe-b-edp-1:
    - shard-iclb:         [SKIP][156] ([i915#5235]) -> [PASS][157] +2 similar issues
   [156]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6646/shard-iclb2/igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-5@pipe-b-edp-1.html
   [157]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-iclb3/igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-5@pipe-b-edp-1.html

  * igt@kms_psr2_su@page_flip-xrgb8888:
    - shard-iclb:         [SKIP][158] ([fdo#109642] / [fdo#111068] / [i915#658]) -> [PASS][159]
   [158]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6646/shard-iclb4/igt@kms_psr2_su@page_flip-xrgb8888.html
   [159]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-iclb2/igt@kms_psr2_su@page_flip-xrgb8888.html

  * igt@kms_psr@cursor_blt:
    - {shard-rkl}:        [SKIP][160] ([i915#1072]) -> [PASS][161] +1 similar issue
   [160]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6646/shard-rkl-5/igt@kms_psr@cursor_blt.html
   [161]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-rkl-6/igt@kms_psr@cursor_blt.html

  * igt@kms_psr@psr2_cursor_mmap_cpu:
    - shard-iclb:         [SKIP][162] ([fdo#109441]) -> [PASS][163] +1 similar issue
   [162]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6646/shard-iclb5/igt@kms_psr@psr2_cursor_mmap_cpu.html
   [163]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-iclb2/igt@kms_psr@psr2_cursor_mmap_cpu.html

  * igt@kms_universal_plane@universal-plane-pipe-a-functional:
    - {shard-rkl}:        [SKIP][164] ([i915#1845] / [i915#4070] / [i915#4098]) -> [PASS][165]
   [164]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6646/shard-rkl-2/igt@kms_universal_plane@universal-plane-pipe-a-functional.html
   [165]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-rkl-6/igt@kms_universal_plane@universal-plane-pipe-a-functional.html

  * igt@perf@gen12-oa-tlb-invalidate:
    - {shard-rkl}:        [SKIP][166] ([fdo#109289]) -> [PASS][167]
   [166]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6646/shard-rkl-5/igt@perf@gen12-oa-tlb-invalidate.html
   [167]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-rkl-6/igt@perf@gen12-oa-tlb-invalidate.html

  * igt@perf@polling-small-buf:
    - {shard-rkl}:        [FAIL][168] ([i915#1722]) -> [PASS][169]
   [168]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6646/shard-rkl-4/igt@perf@polling-small-buf.html
   [169]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-rkl-6/igt@perf@polling-small-buf.html

  * igt@perf_pmu@all-busy-idle-check-all:
    - {shard-dg1}:        [FAIL][170] ([i915#5234]) -> [PASS][171]
   [170]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6646/shard-dg1-17/igt@perf_pmu@all-busy-idle-check-all.html
   [171]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-dg1-17/igt@perf_pmu@all-busy-idle-check-all.html

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

  
#### Warnings ####

  * igt@gem_exec_balancer@parallel-ordering:
    - shard-iclb:         [FAIL][174] ([i915#6117]) -> [SKIP][175] ([i915#4525])
   [174]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6646/shard-iclb1/igt@gem_exec_balancer@parallel-ordering.html
   [175]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-iclb5/igt@gem_exec_balancer@parallel-ordering.html

  * igt@kms_ccs@pipe-a-random-ccs-data-y_tiled_gen12_mc_ccs:
    - shard-iclb:         [SKIP][176] ([fdo#109278] / [i915#3886]) -> [SKIP][177] ([i915#3886]) +51 similar issues
   [176]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6646/shard-iclb8/igt@kms_ccs@pipe-a-random-ccs-data-y_tiled_gen12_mc_ccs.html
   [177]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-iclb3/igt@kms_ccs@pipe-a-random-ccs-data-y_tiled_gen12_mc_ccs.html

  * igt@kms_psr2_sf@cursor-plane-update-sf:
    - shard-iclb:         [SKIP][178] ([fdo#111068] / [i915#658]) -> [SKIP][179] ([i915#2920])
   [178]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6646/shard-iclb7/igt@kms_psr2_sf@cursor-plane-update-sf.html
   [179]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-iclb2/igt@kms_psr2_sf@cursor-plane-update-sf.html

  * igt@kms_psr2_su@page_flip-p010:
    - shard-iclb:         [FAIL][180] ([i915#5939]) -> [SKIP][181] ([fdo#109642] / [fdo#111068] / [i915#658])
   [180]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6646/shard-iclb2/igt@kms_psr2_su@page_flip-p010.html
   [181]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-iclb8/igt@kms_psr2_su@page_flip-p010.html

  * igt@runner@aborted:
    - shard-apl:          ([FAIL][182], [FAIL][183], [FAIL][184]) ([fdo#109271] / [i915#3002] / [i915#4312] / [i915#5257] / [i915#6599]) -> ([FAIL][185], [FAIL][186]) ([i915#180] / [i915#3002] / [i915#4312] / [i915#5257] / [i915#6599])
   [182]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6646/shard-apl8/igt@runner@aborted.html
   [183]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6646/shard-apl3/igt@runner@aborted.html
   [184]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6646/shard-apl1/igt@runner@aborted.html
   [185]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-apl8/igt@runner@aborted.html
   [186]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/shard-apl6/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).

  [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#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#109302]: https://bugs.freedesktop.org/show_bug.cgi?id=109302
  [fdo#109308]: https://bugs.freedesktop.org/show_bug.cgi?id=109308
  [fdo#109309]: https://bugs.freedesktop.org/show_bug.cgi?id=109309
  [fdo#109312]: https://bugs.freedesktop.org/show_bug.cgi?id=109312
  [fdo#109313]: https://bugs.freedesktop.org/show_bug.cgi?id=109313
  [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#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#1155]: https://gitlab.freedesktop.org/drm/intel/issues/1155
  [i915#1319]: https://gitlab.freedesktop.org/drm/intel/issues/1319
  [i915#132]: https://gitlab.freedesktop.org/drm/intel/issues/132
  [i915#1397]: https://gitlab.freedesktop.org/drm/intel/issues/1397
  [i915#1722]: https://gitlab.freedesktop.org/drm/intel/issues/1722
  [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#1845]: https://gitlab.freedesktop.org/drm/intel/issues/1845
  [i915#1849]: https://gitlab.freedesktop.org/drm/intel/issues/1849
  [i915#1888]: https://gitlab.freedesktop.org/drm/intel/issues/1888
  [i915#1902]: https://gitlab.freedesktop.org/drm/intel/issues/1902
  [i915#1911]: https://gitlab.freedesktop.org/drm/intel/issues/1911
  [i915#1937]: https://gitlab.freedesktop.org/drm/intel/issues/1937
  [i915#2346]: https://gitlab.freedesktop.org/drm/intel/issues/2346
  [i915#2433]: https://gitlab.freedesktop.org/drm/intel/issues/2433
  [i915#2434]: https://gitlab.freedesktop.org/drm/intel/issues/2434
  [i915#2437]: https://gitlab.freedesktop.org/drm/intel/issues/2437
  [i915#2527]: https://gitlab.freedesktop.org/drm/intel/issues/2527
  [i915#2530]: https://gitlab.freedesktop.org/drm/intel/issues/2530
  [i915#2532]: https://gitlab.freedesktop.org/drm/intel/issues/2532
  [i915#2546]: https://gitlab.freedesktop.org/drm/intel/issues/2546
  [i915#2582]: https://gitlab.freedesktop.org/drm/intel/issues/2582
  [i915#2658]: https://gitlab.freedesktop.org/drm/intel/issues/2658
  [i915#2672]: https://gitlab.freedesktop.org/drm/intel/issues/2672
  [i915#2681]: https://gitlab.freedesktop.org/drm/intel/issues/2681
  [i915#2705]: https://gitlab.freedesktop.org/drm/intel/issues/2705
  [i915#280]: https://gitlab.freedesktop.org/drm/intel/issues/280
  [i915#284]: https://gitlab.freedesktop.org/drm/intel/issues/284
  [i915#2842]: https://gitlab.freedesktop.org/drm/intel/issues/2842
  [i915#2846]: https://gitlab.freedesktop.org/drm/intel/issues/2846
  [i915#2856]: https://gitlab.freedesktop.org/drm/intel/issues/2856
  [i915#2867]: https://gitlab.freedesktop.org/drm/intel/issues/2867
  [i915#2920]: https://gitlab.freedesktop.org/drm/intel/issues/2920
  [i915#2994]: https://gitlab.freedesktop.org/drm/intel/issues/2994
  [i915#3002]: https://gitlab.freedesktop.org/drm/intel/issues/3002
  [i915#3012]: https://gitlab.freedesktop.org/drm/intel/issues/3012
  [i915#3063]: https://gitlab.freedesktop.org/drm/intel/issues/3063
  [i915#3116]: https://gitlab.freedesktop.org/drm/intel/issues/3116
  [i915#3281]: https://gitlab.freedesktop.org/drm/intel/issues/3281
  [i915#3282]: https://gitlab.freedesktop.org/drm/intel/issues/3282
  [i915#3291]: https://gitlab.freedesktop.org/drm/intel/issues/3291
  [i915#3297]: https://gitlab.freedesktop.org/drm/intel/issues/3297
  [i915#3299]: https://gitlab.freedesktop.org/drm/intel/issues/3299
  [i915#3318]: https://gitlab.freedesktop.org/drm/intel/issues/3318
  [i915#3323]: https://gitlab.freedesktop.org/drm/intel/issues/3323
  [i915#3359]: https://gitlab.freedesktop.org/drm/intel/issues/3359
  [i915#3361]: https://gitlab.freedesktop.org/drm/intel/issues/3361
  [i915#3458]: https://gitlab.freedesktop.org/drm/intel/issues/3458
  [i915#3467]: https://gitlab.freedesktop.org/drm/intel/issues/3467
  [i915#3539]: https://gitlab.freedesktop.org/drm/intel/issues/3539
  [i915#3546]: https://gitlab.freedesktop.org/drm/intel/issues/3546
  [i915#3555]: https://gitlab.freedesktop.org/drm/intel/issues/3555
  [i915#3558]: https://gitlab.freedesktop.org/drm/intel/issues/3558
  [i915#3637]: https://gitlab.freedesktop.org/drm/intel/issues/3637
  [i915#3638]: https://gitlab.freedesktop.org/drm/intel/issues/3638
  [i915#3639]: https://gitlab.freedesktop.org/drm/intel/issues/3639
  [i915#3689]: https://gitlab.freedesktop.org/drm/intel/issues/3689
  [i915#3708]: https://gitlab.freedesktop.org/drm/intel/issues/3708
  [i915#3734]: https://gitlab.freedesktop.org/drm/intel/issues/3734
  [i915#3742]: https://gitlab.freedesktop.org/drm/intel/issues/3742
  [i915#3825]: https://gitlab.freedesktop.org/drm/intel/issues/3825
  [i915#3886]: https://gitlab.freedesktop.org/drm/intel/issues/3886
  [i915#3921]: https://gitlab.freedesktop.org/drm/intel/issues/3921
  [i915#3936]: https://gitlab.freedesktop.org/drm/intel/issues/3936
  [i915#3952]: https://gitlab.freedesktop.org/drm/intel/issues/3952
  [i915#3989]: https://gitlab.freedesktop.org/drm/intel/issues/3989
  [i915#404]: https://gitlab.freedesktop.org/drm/intel/issues/404
  [i915#4070]: https://gitlab.freedesktop.org/drm/intel/issues/4070
  [i915#4077]: https://gitlab.freedesktop.org/drm/intel/issues/4077
  [i915#4078]: https://gitlab.freedesktop.org/drm/intel/issues/4078
  [i915#4079]: https://gitlab.freedesktop.org/drm/intel/issues/4079
  [i915#4083]: https://gitlab.freedesktop.org/drm/intel/issues/4083
  [i915#4098]: https://gitlab.freedesktop.org/drm/intel/issues/4098
  [i915#4103]: https://gitlab.freedesktop.org/drm/intel/issues/4103
  [i915#4171]: https://gitlab.freedesktop.org/drm/intel/issues/4171
  [i915#4212]: https://gitlab.freedesktop.org/drm/intel/issues/4212
  [i915#4270]: https://gitlab.freedesktop.org/drm/intel/issues/4270
  [i915#4312]: https://gitlab.freedesktop.org/drm/intel/issues/4312
  [i915#4494]: https://gitlab.freedesktop.org/drm/intel/issues/4494
  [i915#4525]: https://gitlab.freedesktop.org/drm/intel/issues/4525
  [i915#4538]: https://gitlab.freedesktop.org/drm/intel/issues/4538
  [i915#454]: https://gitlab.freedesktop.org/drm/intel/issues/454
  [i915#4565]: https://gitlab.freedesktop.org/drm/intel/issues/4565
  [i915#4613]: https://gitlab.freedesktop.org/drm/intel/issues/4613
  [i915#4771]: https://gitlab.freedesktop.org/drm/intel/issues/4771
  [i915#4812]: https://gitlab.freedesktop.org/drm/intel/issues/4812
  [i915#4833]: https://gitlab.freedesktop.org/drm/intel/issues/4833
  [i915#4852]: https://gitlab.freedesktop.org/drm/intel/issues/4852
  [i915#4855]: https://gitlab.freedesktop.org/drm/intel/issues/4855
  [i915#4860]: https://gitlab.freedesktop.org/drm/intel/issues/4860
  [i915#4874]: https://gitlab.freedesktop.org/drm/intel/issues/4874
  [i915#4877]: https://gitlab.freedesktop.org/drm/intel/issues/4877
  [i915#4880]: https://gitlab.freedesktop.org/drm/intel/issues/4880
  [i915#4881]: https://gitlab.freedesktop.org/drm/intel/issues/4881
  [i915#4883]: https://gitlab.freedesktop.org/drm/intel/issues/4883
  [i915#4885]: https://gitlab.freedesktop.org/drm/intel/issues/4885
  [i915#4957]: https://gitlab.freedesktop.org/drm/intel/issues/4957
  [i915#5176]: https://gitlab.freedesktop.org/drm/intel/issues/5176
  [i915#5234]: https://gitlab.freedesktop.org/drm/intel/issues/5234
  [i915#5235]: https://gitlab.freedesktop.org/drm/intel/issues/5235
  [i915#5257]: https://gitlab.freedesktop.org/drm/intel/issues/5257
  [i915#5286]: https://gitlab.freedesktop.org/drm/intel/issues/5286
  [i915#5289]: https://gitlab.freedesktop.org/drm/intel/issues/5289
  [i915#5325]: https://gitlab.freedesktop.org/drm/intel/issues/5325
  [i915#5327]: https://gitlab.freedesktop.org/drm/intel/issues/5327
  [i915#533]: https://gitlab.freedesktop.org/drm/intel/issues/533
  [i915#5439]: https://gitlab.freedesktop.org/drm/intel/issues/5439
  [i915#5461]: https://gitlab.freedesktop.org/drm/intel/issues/5461
  [i915#5519]: https://gitlab.freedesktop.org/drm/intel/issues/5519
  [i915#5563]: https://gitlab.freedesktop.org/drm/intel/issues/5563
  [i915#5566]: https://gitlab.freedesktop.org/drm/intel/issues/5566
  [i915#5639]: https://gitlab.freedesktop.org/drm/intel/issues/5639
  [i915#5784]: https://gitlab.freedesktop.org/drm/intel/issues/5784
  [i915#5939]: https://gitlab.freedesktop.org/drm/intel/issues/5939
  [i915#6011]: https://gitlab.freedesktop.org/drm/intel/issues/6011
  [i915#6095]: https://gitlab.freedesktop.org/drm/intel/issues/6095
  [i915#6117]: https://gitlab.freedesktop.org/drm/intel/issues/6117
  [i915#62]: https://gitlab.freedesktop.org/drm/intel/issues/62
  [i915#6227]: https://gitlab.freedesktop.org/drm/intel/issues/6227
  [i915#6247]: https://gitlab.freedesktop.org/drm/intel/issues/6247
  [i915#6248]: https://gitlab.freedesktop.org/drm/intel/issues/6248
  [i915#6251]: https://gitlab.freedesktop.org/drm/intel/issues/6251
  [i915#6252]: https://gitlab.freedesktop.org/drm/intel/issues/6252
  [i915#6301]: https://gitlab.freedesktop.org/drm/intel/issues/6301
  [i915#6331]: https://gitlab.freedesktop.org/drm/intel/issues/6331
  [i915#6334]: https://gitlab.freedesktop.org/drm/intel/issues/6334
  [i915#6355]: https://gitlab.freedesktop.org/drm/intel/issues/6355
  [i915#6412]: https://gitlab.freedesktop.org/drm/intel/issues/6412
  [i915#6433]: https://gitlab.freedesktop.org/drm/intel/issues/6433
  [i915#6458]: https://gitlab.freedesktop.org/drm/intel/issues/6458
  [i915#6497]: https://gitlab.freedesktop.org/drm/intel/issues/6497
  [i915#658]: https://gitlab.freedesktop.org/drm/intel/issues/658
  [i915#6599]: https://gitlab.freedesktop.org/drm/intel/issues/6599
  [i915#6621]: https://gitlab.freedesktop.org/drm/intel/issues/6621
  [i915#716]: https://gitlab.freedesktop.org/drm/intel/issues/716
  [i915#768]: https://gitlab.freedesktop.org/drm/intel/issues/768
  [i915#79]: https://gitlab.freedesktop.org/drm/intel/issues/79


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

  * CI: CI-20190529 -> None
  * IGT: IGT_6646 -> IGTPW_7740

  CI-20190529: 20190529
  CI_DRM_12074: c16b937da799ddbebf0d940aff159b96ce9fec0f @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_7740: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_7740/index.html
  IGT_6646: c1f420ae84b76079cd32ac014cfdf95b5f2922f7 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git

== Logs ==

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

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

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

* Re: [igt-dev] [i-g-t V2 01/52] lib/igt_kms: Add a helper for igt test constraint
  2022-09-06  9:49 ` [igt-dev] [i-g-t V2 01/52] lib/igt_kms: Add a helper for igt test constraint Bhanuprakash Modem
@ 2022-09-08 15:21   ` Petri Latvala
  2022-09-09  9:39     ` Modem, Bhanuprakash
  0 siblings, 1 reply; 58+ messages in thread
From: Petri Latvala @ 2022-09-08 15:21 UTC (permalink / raw)
  To: Bhanuprakash Modem; +Cc: igt-dev

On Tue, Sep 06, 2022 at 03:19:39PM +0530, Bhanuprakash Modem wrote:
> Add an IGT helper to check the test constraints to decide whether to run/skip
> the subtest.
> 
> Example:
> * Pipe-D can't support mode > 5K
> * To use 8K mode on a pipe then consecutive pipe must be available & free.
> * MSO is supported only on PIPE_A/PIPE_B.
> 
> This helper is supposed to be a superset of all test constraints. But as of
> now, only Intel specific hardware/configuration-related limitations like
> Bigjoiner/MSO can go through this helper.
> 
> Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
> ---
>  lib/igt_kms.c | 39 +++++++++++++++++++++++++++++++++++++++
>  lib/igt_kms.h |  1 +
>  2 files changed, 40 insertions(+)
> 
> diff --git a/lib/igt_kms.c b/lib/igt_kms.c
> index 7d4916a7..3a1bc391 100644
> --- a/lib/igt_kms.c
> +++ b/lib/igt_kms.c
> @@ -5824,3 +5824,42 @@ bool igt_parse_mode_string(const char *mode_string, drmModeModeInfo *mode)
>  
>  	return true;
>  }
> +
> +/*
> + * igt_test_constraint:
> + * @display: a pointer to an #igt_display_t structure
> + *
> + * Every individual test must use igt_output_set_pipe() before calling this
> + * helper, so that this function will get all active pipes from connected
> + * outputs (i.e. pending_pipe != PIPE_NONE) and check the selected combo is
> + * valid or not.
> + *
> + * This helper is supposed to be a superset of all test constraints.
> + *
> + * Example:
> + *  * Pipe-D can't support mode > 5K
> + *  * To use 8K mode on a pipe then consecutive pipe must be free.
> + *  * MSO is supported only on PIPE_A/PIPE_B.
> + *
> + * Returns: true if a valid crtc/connector mode combo found, else false
> + */
> +bool igt_test_constraint(igt_display_t *display)
> +{
> +	bool result = true;
> +
> +	/*
> +	 * TODO: Add all possible test constraints here.
> +	 *
> +	 * Intention of this helper is that all kms tests should use this
> +	 * helper to decide whether to run/skip the subtest.
> +	 *
> +	 * As of now, only Intel specific hardware/configuration-related
> +	 * limitations like Bigjoiner/MSO are going through this helper.
> +	 *
> +	 * Please update this helper as per the requirement.
> +	 */
> +	if (is_i915_device(display->drm_fd))
> +		result &= igt_check_bigjoiner_support(display);
> +
> +	return result;
> +}


From what I understand from this currently very barebones snippet: The
only inputs it can work on are what's on the passed display struct,
the caller having selected pipe(s) and output(s) beforehand, before
commiting the modeset. The function tries to determine without
commiting whether that's a valid pipe/output combo selection.

The required pre-condition (igt_output_set_pipe called) is documented,
excellent. Maybe also check that it is done, and internal_assert it.

That said, "igt_test_constraint" sounds way more generic than what the
function really is. We can also drop the "As of now" part and straight
up make it an i915-specific function for now, with "i915" in the
name. Along with "kms". Dropping the "test" from the name makes it
clear _what_ it does after testing (as in, return a bool or
igt_require).

i915_pipe_output_combo_capable() ?
i915_kms_display_pipe_setup_good() ?
i915_kms_pipe_constraints_met() ?

Naming is hard...

Also worth considering the usual bool vs. igt_require pair of functions:

bool __igt_something() {
  return true;
}

void igt_require_something() {
  igt_require(__igt_something());
}

Drive-by round of thoughts, not a full review.


-- 
Petri Latvala


> diff --git a/lib/igt_kms.h b/lib/igt_kms.h
> index a2cf0937..82186cfe 100644
> --- a/lib/igt_kms.h
> +++ b/lib/igt_kms.h
> @@ -975,5 +975,6 @@ bool igt_max_bpc_constraint(igt_display_t *display, enum pipe pipe,
>  		igt_output_t *output, int bpc);
>  bool igt_check_bigjoiner_support(igt_display_t *display);
>  bool igt_parse_mode_string(const char *mode_string, drmModeModeInfo *mode);
> +bool igt_test_constraint(igt_display_t *display);
>  
>  #endif /* __IGT_KMS_H__ */
> -- 
> 2.35.1
> 

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

* Re: [igt-dev] [i-g-t V2 01/52] lib/igt_kms: Add a helper for igt test constraint
  2022-09-08 15:21   ` Petri Latvala
@ 2022-09-09  9:39     ` Modem, Bhanuprakash
  2022-09-09  9:57       ` Petri Latvala
  0 siblings, 1 reply; 58+ messages in thread
From: Modem, Bhanuprakash @ 2022-09-09  9:39 UTC (permalink / raw)
  To: Petri Latvala; +Cc: igt-dev

On Thu-08-09-2022 08:51 pm, Petri Latvala wrote:
> On Tue, Sep 06, 2022 at 03:19:39PM +0530, Bhanuprakash Modem wrote:
>> Add an IGT helper to check the test constraints to decide whether to run/skip
>> the subtest.
>>
>> Example:
>> * Pipe-D can't support mode > 5K
>> * To use 8K mode on a pipe then consecutive pipe must be available & free.
>> * MSO is supported only on PIPE_A/PIPE_B.
>>
>> This helper is supposed to be a superset of all test constraints. But as of
>> now, only Intel specific hardware/configuration-related limitations like
>> Bigjoiner/MSO can go through this helper.
>>
>> Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
>> ---
>>   lib/igt_kms.c | 39 +++++++++++++++++++++++++++++++++++++++
>>   lib/igt_kms.h |  1 +
>>   2 files changed, 40 insertions(+)
>>
>> diff --git a/lib/igt_kms.c b/lib/igt_kms.c
>> index 7d4916a7..3a1bc391 100644
>> --- a/lib/igt_kms.c
>> +++ b/lib/igt_kms.c
>> @@ -5824,3 +5824,42 @@ bool igt_parse_mode_string(const char *mode_string, drmModeModeInfo *mode)
>>   
>>   	return true;
>>   }
>> +
>> +/*
>> + * igt_test_constraint:
>> + * @display: a pointer to an #igt_display_t structure
>> + *
>> + * Every individual test must use igt_output_set_pipe() before calling this
>> + * helper, so that this function will get all active pipes from connected
>> + * outputs (i.e. pending_pipe != PIPE_NONE) and check the selected combo is
>> + * valid or not.
>> + *
>> + * This helper is supposed to be a superset of all test constraints.
>> + *
>> + * Example:
>> + *  * Pipe-D can't support mode > 5K
>> + *  * To use 8K mode on a pipe then consecutive pipe must be free.
>> + *  * MSO is supported only on PIPE_A/PIPE_B.
>> + *
>> + * Returns: true if a valid crtc/connector mode combo found, else false
>> + */
>> +bool igt_test_constraint(igt_display_t *display)
>> +{
>> +	bool result = true;
>> +
>> +	/*
>> +	 * TODO: Add all possible test constraints here.
>> +	 *
>> +	 * Intention of this helper is that all kms tests should use this
>> +	 * helper to decide whether to run/skip the subtest.
>> +	 *
>> +	 * As of now, only Intel specific hardware/configuration-related
>> +	 * limitations like Bigjoiner/MSO are going through this helper.
>> +	 *
>> +	 * Please update this helper as per the requirement.
>> +	 */
>> +	if (is_i915_device(display->drm_fd))
>> +		result &= igt_check_bigjoiner_support(display);
>> +
>> +	return result;
>> +}
> 
> 
>  From what I understand from this currently very barebones snippet: The
> only inputs it can work on are what's on the passed display struct,
> the caller having selected pipe(s) and output(s) beforehand, before
> commiting the modeset. The function tries to determine without
> commiting whether that's a valid pipe/output combo selection.
> 
> The required pre-condition (igt_output_set_pipe called) is documented,
> excellent. Maybe also check that it is done, and internal_assert it.

Will do that.

> 
> That said, "igt_test_constraint" sounds way more generic than what the
> function really is. We can also drop the "As of now" part and straight
> up make it an i915-specific function for now, with "i915" in the
> name. Along with "kms". Dropping the "test" from the name makes it
> clear _what_ it does after testing (as in, return a bool or
> igt_require).
> 
> i915_pipe_output_combo_capable() ?

How about i915_pipe_output_combo_valid() ? I think "Capable" is limited 
to a particular feature.

> i915_kms_display_pipe_setup_good() ?
> i915_kms_pipe_constraints_met() ?
> 
> Naming is hard...
> 
> Also worth considering the usual bool vs. igt_require pair of functions:

I don't see it being very useful to have a require_* version of this 
helper, because if the selected combo is invalid then the user has to 
try for another combo.

So, each individual test must call this helper for every possible combo 
and should handle the case where all possible combos are invalid.

- Bhanu

> 
> bool __igt_something() {
>    return true;
> }
> 
> void igt_require_something() {
>    igt_require(__igt_something());
> }
> 
> Drive-by round of thoughts, not a full review.
> 
> 

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

* Re: [igt-dev] [i-g-t V2 01/52] lib/igt_kms: Add a helper for igt test constraint
  2022-09-09  9:39     ` Modem, Bhanuprakash
@ 2022-09-09  9:57       ` Petri Latvala
  0 siblings, 0 replies; 58+ messages in thread
From: Petri Latvala @ 2022-09-09  9:57 UTC (permalink / raw)
  To: Modem, Bhanuprakash; +Cc: igt-dev

On Fri, Sep 09, 2022 at 03:09:10PM +0530, Modem, Bhanuprakash wrote:
> On Thu-08-09-2022 08:51 pm, Petri Latvala wrote:
> > On Tue, Sep 06, 2022 at 03:19:39PM +0530, Bhanuprakash Modem wrote:
> > > Add an IGT helper to check the test constraints to decide whether to run/skip
> > > the subtest.
> > > 
> > > Example:
> > > * Pipe-D can't support mode > 5K
> > > * To use 8K mode on a pipe then consecutive pipe must be available & free.
> > > * MSO is supported only on PIPE_A/PIPE_B.
> > > 
> > > This helper is supposed to be a superset of all test constraints. But as of
> > > now, only Intel specific hardware/configuration-related limitations like
> > > Bigjoiner/MSO can go through this helper.
> > > 
> > > Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
> > > ---
> > >   lib/igt_kms.c | 39 +++++++++++++++++++++++++++++++++++++++
> > >   lib/igt_kms.h |  1 +
> > >   2 files changed, 40 insertions(+)
> > > 
> > > diff --git a/lib/igt_kms.c b/lib/igt_kms.c
> > > index 7d4916a7..3a1bc391 100644
> > > --- a/lib/igt_kms.c
> > > +++ b/lib/igt_kms.c
> > > @@ -5824,3 +5824,42 @@ bool igt_parse_mode_string(const char *mode_string, drmModeModeInfo *mode)
> > >   	return true;
> > >   }
> > > +
> > > +/*
> > > + * igt_test_constraint:
> > > + * @display: a pointer to an #igt_display_t structure
> > > + *
> > > + * Every individual test must use igt_output_set_pipe() before calling this
> > > + * helper, so that this function will get all active pipes from connected
> > > + * outputs (i.e. pending_pipe != PIPE_NONE) and check the selected combo is
> > > + * valid or not.
> > > + *
> > > + * This helper is supposed to be a superset of all test constraints.
> > > + *
> > > + * Example:
> > > + *  * Pipe-D can't support mode > 5K
> > > + *  * To use 8K mode on a pipe then consecutive pipe must be free.
> > > + *  * MSO is supported only on PIPE_A/PIPE_B.
> > > + *
> > > + * Returns: true if a valid crtc/connector mode combo found, else false
> > > + */
> > > +bool igt_test_constraint(igt_display_t *display)
> > > +{
> > > +	bool result = true;
> > > +
> > > +	/*
> > > +	 * TODO: Add all possible test constraints here.
> > > +	 *
> > > +	 * Intention of this helper is that all kms tests should use this
> > > +	 * helper to decide whether to run/skip the subtest.
> > > +	 *
> > > +	 * As of now, only Intel specific hardware/configuration-related
> > > +	 * limitations like Bigjoiner/MSO are going through this helper.
> > > +	 *
> > > +	 * Please update this helper as per the requirement.
> > > +	 */
> > > +	if (is_i915_device(display->drm_fd))
> > > +		result &= igt_check_bigjoiner_support(display);
> > > +
> > > +	return result;
> > > +}
> > 
> > 
> >  From what I understand from this currently very barebones snippet: The
> > only inputs it can work on are what's on the passed display struct,
> > the caller having selected pipe(s) and output(s) beforehand, before
> > commiting the modeset. The function tries to determine without
> > commiting whether that's a valid pipe/output combo selection.
> > 
> > The required pre-condition (igt_output_set_pipe called) is documented,
> > excellent. Maybe also check that it is done, and internal_assert it.
> 
> Will do that.
> 
> > 
> > That said, "igt_test_constraint" sounds way more generic than what the
> > function really is. We can also drop the "As of now" part and straight
> > up make it an i915-specific function for now, with "i915" in the
> > name. Along with "kms". Dropping the "test" from the name makes it
> > clear _what_ it does after testing (as in, return a bool or
> > igt_require).
> > 
> > i915_pipe_output_combo_capable() ?
> 
> How about i915_pipe_output_combo_valid() ? I think "Capable" is limited to a
> particular feature.

Sounds good.

> 
> > i915_kms_display_pipe_setup_good() ?
> > i915_kms_pipe_constraints_met() ?
> > 
> > Naming is hard...
> > 
> > Also worth considering the usual bool vs. igt_require pair of functions:
> 
> I don't see it being very useful to have a require_* version of this helper,
> because if the selected combo is invalid then the user has to try for
> another combo.
> 
> So, each individual test must call this helper for every possible combo and
> should handle the case where all possible combos are invalid.

Fair enough, let's do that.


-- 
Petri Latvala

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

end of thread, other threads:[~2022-09-09  9:58 UTC | newest]

Thread overview: 58+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-09-06  9:49 [igt-dev] [i-g-t V2 00/52] Add IGT support for Bigjoiner Bhanuprakash Modem
2022-09-06  9:49 ` [igt-dev] [i-g-t V2 01/52] lib/igt_kms: Add a helper for igt test constraint Bhanuprakash Modem
2022-09-08 15:21   ` Petri Latvala
2022-09-09  9:39     ` Modem, Bhanuprakash
2022-09-09  9:57       ` Petri Latvala
2022-09-06  9:49 ` [igt-dev] [i-g-t V2 02/52] lib/igt_kms: Bigjoiner check in max_bpc constraint Bhanuprakash Modem
2022-09-06  9:49 ` [igt-dev] [i-g-t V2 03/52] tests/kms_async_flips: Add support for Bigjoiner Bhanuprakash Modem
2022-09-06  9:49 ` [igt-dev] [i-g-t V2 04/52] tests/kms_atomic: " Bhanuprakash Modem
2022-09-06  9:49 ` [igt-dev] [i-g-t V2 05/52] tests/kms_atomic_interruptible: " Bhanuprakash Modem
2022-09-06  9:49 ` [igt-dev] [i-g-t V2 06/52] tests/kms_atomic_transition: " Bhanuprakash Modem
2022-09-06  9:49 ` [igt-dev] [i-g-t V2 07/52] tests/kms_color_helper: Helper to check Bigjoiner constraint Bhanuprakash Modem
2022-09-06  9:49 ` [igt-dev] [i-g-t V2 08/52] tests/kms_color: Add support for Bigjoiner Bhanuprakash Modem
2022-09-06  9:49 ` [igt-dev] [i-g-t V2 09/52] tests/chamelium/kms_color_chamelium: " Bhanuprakash Modem
2022-09-06  9:49 ` [igt-dev] [i-g-t V2 10/52] tests/kms_concurrent: " Bhanuprakash Modem
2022-09-06  9:49 ` [igt-dev] [i-g-t V2 11/52] tests/kms_content_protection: " Bhanuprakash Modem
2022-09-06  9:49 ` [igt-dev] [i-g-t V2 12/52] tests/kms_cursor_crc: " Bhanuprakash Modem
2022-09-06  9:49 ` [igt-dev] [i-g-t V2 13/52] tests/kms_cursor_edge_walk: " Bhanuprakash Modem
2022-09-06  9:49 ` [igt-dev] [i-g-t V2 14/52] tests/kms_cursor_legacy: " Bhanuprakash Modem
2022-09-06  9:49 ` [igt-dev] [i-g-t V2 15/52] tests/kms_display_modes: " Bhanuprakash Modem
2022-09-06  9:49 ` [igt-dev] [i-g-t V2 16/52] tests/kms_dp_tiled_display: " Bhanuprakash Modem
2022-09-06  9:49 ` [igt-dev] [i-g-t V2 17/52] tests/kms_flip_event_leak: " Bhanuprakash Modem
2022-09-06  9:49 ` [igt-dev] [i-g-t V2 18/52] tests/kms_invalid_mode: " Bhanuprakash Modem
2022-09-06  9:49 ` [igt-dev] [i-g-t V2 19/52] tests/kms_lease: " Bhanuprakash Modem
2022-09-06  9:49 ` [igt-dev] [i-g-t V2 20/52] tests/kms_multipipe_modeset: Find the suitable mode instead of using default Bhanuprakash Modem
2022-09-06  9:49 ` [igt-dev] [i-g-t V2 21/52] tests/kms_pipe_crc_basic: Add support for Bigjoiner Bhanuprakash Modem
2022-09-06  9:50 ` [igt-dev] [i-g-t V2 22/52] tests/kms_plane: " Bhanuprakash Modem
2022-09-06  9:50 ` [igt-dev] [i-g-t V2 23/52] tests/kms_plane_alpha_blend: " Bhanuprakash Modem
2022-09-06  9:50 ` [igt-dev] [i-g-t V2 24/52] tests/kms_plane_cursor: " Bhanuprakash Modem
2022-09-06  9:50 ` [igt-dev] [i-g-t V2 25/52] tests/kms_plane_lowres: " Bhanuprakash Modem
2022-09-06  9:50 ` [igt-dev] [i-g-t V2 26/52] tests/kms_plane_multiple: " Bhanuprakash Modem
2022-09-06  9:50 ` [igt-dev] [i-g-t V2 27/52] tests/kms_plane_scaling: " Bhanuprakash Modem
2022-09-06  9:50 ` [igt-dev] [i-g-t V2 28/52] tests/kms_prime: " Bhanuprakash Modem
2022-09-06  9:50 ` [igt-dev] [i-g-t V2 29/52] tests/kms_properties: " Bhanuprakash Modem
2022-09-06  9:50 ` [igt-dev] [i-g-t V2 30/52] tests/kms_rmfb: " Bhanuprakash Modem
2022-09-06  9:50 ` [igt-dev] [i-g-t V2 31/52] tests/kms_rotation_crc: " Bhanuprakash Modem
2022-09-06  9:50 ` [igt-dev] [i-g-t V2 32/52] tests/kms_scaling_modes: " Bhanuprakash Modem
2022-09-06  9:50 ` [igt-dev] [i-g-t V2 33/52] tests/kms_sequence: " Bhanuprakash Modem
2022-09-06  9:50 ` [igt-dev] [i-g-t V2 34/52] tests/kms_universal_plane: " Bhanuprakash Modem
2022-09-06  9:50 ` [igt-dev] [i-g-t V2 35/52] tests/kms_vblank: " Bhanuprakash Modem
2022-09-06  9:50 ` [igt-dev] [i-g-t V2 36/52] tests/kms_vrr: " Bhanuprakash Modem
2022-09-06  9:50 ` [igt-dev] [i-g-t V2 37/52] tests/i915/kms_big_fb: " Bhanuprakash Modem
2022-09-06  9:50 ` [igt-dev] [i-g-t V2 38/52] tests/i915/kms_big_joiner: Negative tests " Bhanuprakash Modem
2022-09-06  9:50 ` [igt-dev] [i-g-t V2 39/52] tests/i915/kms_busy: Add support " Bhanuprakash Modem
2022-09-06  9:50 ` [igt-dev] [i-g-t V2 40/52] tests/i915/kms_ccs: " Bhanuprakash Modem
2022-09-06  9:50 ` [igt-dev] [i-g-t V2 41/52] tests/i915/kms_cdclk: " Bhanuprakash Modem
2022-09-06  9:50 ` [igt-dev] [i-g-t V2 42/52] tests/i915/kms_draw_crc: " Bhanuprakash Modem
2022-09-06  9:50 ` [igt-dev] [i-g-t V2 43/52] tests/i915/kms_fence_pin_leak: " Bhanuprakash Modem
2022-09-06  9:50 ` [igt-dev] [i-g-t V2 44/52] tests/i915/kms_flip_scaled_crc: " Bhanuprakash Modem
2022-09-06  9:50 ` [igt-dev] [i-g-t V2 45/52] tests/i915/kms_flip_tiling: " Bhanuprakash Modem
2022-09-06  9:50 ` [igt-dev] [i-g-t V2 46/52] tests/i915/kms_frontbuffer_tracking: " Bhanuprakash Modem
2022-09-06  9:50 ` [igt-dev] [i-g-t V2 47/52] tests/i915/kms_mmap_write_crc: " Bhanuprakash Modem
2022-09-06  9:50 ` [igt-dev] [i-g-t V2 48/52] tests/i915/kms_psr2_sf: " Bhanuprakash Modem
2022-09-06  9:50 ` [igt-dev] [i-g-t V2 49/52] tests/i915/kms_psr2_su: " Bhanuprakash Modem
2022-09-06  9:50 ` [igt-dev] [i-g-t V2 50/52] tests/i915/kms_psr: " Bhanuprakash Modem
2022-09-06  9:50 ` [igt-dev] [i-g-t V2 51/52] tests/i915/kms_psr_stress_test: " Bhanuprakash Modem
2022-09-06  9:50 ` [igt-dev] [i-g-t V2 52/52] tests/i915/kms_pwrite_crc: " Bhanuprakash Modem
2022-09-06 10:26 ` [igt-dev] ✓ Fi.CI.BAT: success for Add IGT " Patchwork
2022-09-06 12:15 ` [igt-dev] ✗ Fi.CI.IGT: failure " Patchwork

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.