All of lore.kernel.org
 help / color / mirror / Atom feed
From: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
To: igt-dev@lists.freedesktop.org
Subject: [igt-dev] [i-g-t v5 01/52] lib/igt_kms: Add a helper for valid pipe/output constraint
Date: Tue, 15 Nov 2022 22:38:04 +0530	[thread overview]
Message-ID: <20221115170855.196572-2-bhanuprakash.modem@intel.com> (raw)
In-Reply-To: <20221115170855.196572-1-bhanuprakash.modem@intel.com>

Add an IGT helper to check the given pipe/output combo is valid 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 constraints of pipe/output
combo. But as of now, this helper supports only Bigjoiner.

V2:
- Rename the helper
- Add is_i915 constraint
- Add pre-condition check (igt_output_set_pipe called)
- Update documentaion
- Minor cleanup in Bigjoiner helper

Cc: Petri Latvala <petri.latvala@intel.com>
Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
Reviewed-by: Petri Latvala <petri.latvala@intel.com>
---
 lib/igt_kms.c | 49 ++++++++++++++++++++++++++++++++++++++++++++++---
 lib/igt_kms.h |  1 +
 2 files changed, 47 insertions(+), 3 deletions(-)

diff --git a/lib/igt_kms.c b/lib/igt_kms.c
index 921a623d..38aa85d1 100644
--- a/lib/igt_kms.c
+++ b/lib/igt_kms.c
@@ -5824,6 +5824,7 @@ bool igt_check_bigjoiner_support(igt_display_t *display)
 {
 	uint8_t i, total_pipes = 0, pipes_in_use = 0;
 	enum pipe p;
+	igt_output_t *output;
 	struct {
 		enum pipe idx;
 		drmModeModeInfo *mode;
@@ -5837,9 +5838,7 @@ bool igt_check_bigjoiner_support(igt_display_t *display)
 	 * Get list of pipes in use those were set by igt_output_set_pipe()
 	 * just before calling this function.
 	 */
-	for (i = 0 ; i < display->n_outputs; i++) {
-		igt_output_t *output = &display->outputs[i];
-
+	for_each_connected_output(display, output) {
 		if (output->pending_pipe == PIPE_NONE)
 			continue;
 
@@ -5905,3 +5904,47 @@ bool igt_parse_mode_string(const char *mode_string, drmModeModeInfo *mode)
 
 	return true;
 }
+
+/*
+ * i915_pipe_output_combo_valid:
+ * @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 constraints of pipe/output
+ * combo.
+ *
+ * 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 pipe/output mode combo found, else false
+ */
+bool i915_pipe_output_combo_valid(igt_display_t *display)
+{
+	int combo = 0;
+	igt_output_t *output;
+
+	if (!is_i915_device(display->drm_fd))
+		return true;
+
+	for_each_connected_output(display, output) {
+		if (output->pending_pipe == PIPE_NONE)
+			continue;
+
+		combo++;
+	}
+
+	igt_assert_f(combo, "At least one pipe/output combo needed.\n");
+
+	/*
+	 * Check the given pipe/output combo is valid for Bigjoiner.
+	 *
+	 * TODO: Update this helper to support other features like MSO.
+	 */
+	return igt_check_bigjoiner_support(display);
+}
diff --git a/lib/igt_kms.h b/lib/igt_kms.h
index b09441d0..0c4ab7ae 100644
--- a/lib/igt_kms.h
+++ b/lib/igt_kms.h
@@ -999,5 +999,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 i915_pipe_output_combo_valid(igt_display_t *display);
 
 #endif /* __IGT_KMS_H__ */
-- 
2.38.0

  reply	other threads:[~2022-11-15 17:09 UTC|newest]

Thread overview: 95+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-11-15 17:08 [igt-dev] [i-g-t v5 00/52] Add IGT support for Bigjoiner Bhanuprakash Modem
2022-11-15 17:08 ` Bhanuprakash Modem [this message]
2022-11-15 17:08 ` [igt-dev] [i-g-t v5 02/52] lib/igt_kms: Bigjoiner check in max_bpc constraint Bhanuprakash Modem
2022-11-15 17:08 ` [igt-dev] [i-g-t v5 03/52] tests/kms_async_flips: Add support for Bigjoiner Bhanuprakash Modem
2022-12-23  6:29   ` [igt-dev] [i-g-t v6 " Bhanuprakash Modem
2022-12-23  8:05     ` Karthik B S
2022-11-15 17:08 ` [igt-dev] [i-g-t v5 04/52] tests/kms_atomic: " Bhanuprakash Modem
2022-12-28 18:30   ` Swati Sharma
2022-11-15 17:08 ` [igt-dev] [i-g-t v5 05/52] tests/kms_atomic_interruptible: " Bhanuprakash Modem
2022-11-15 17:08 ` [igt-dev] [i-g-t v5 06/52] tests/kms_atomic_transition: " Bhanuprakash Modem
2022-11-15 17:08 ` [igt-dev] [i-g-t v5 07/52] tests/kms_color_helper: Helper to check Bigjoiner constraint Bhanuprakash Modem
2022-11-15 17:08 ` [igt-dev] [i-g-t v5 08/52] tests/kms_color: Add support for Bigjoiner Bhanuprakash Modem
2022-11-15 17:08 ` [igt-dev] [i-g-t v5 09/52] tests/chamelium/kms_color_chamelium: " Bhanuprakash Modem
2022-11-15 17:08 ` [igt-dev] [i-g-t v5 10/52] tests/kms_concurrent: " Bhanuprakash Modem
2022-11-15 17:08 ` [igt-dev] [i-g-t v5 11/52] tests/kms_content_protection: " Bhanuprakash Modem
2022-12-27  6:36   ` Karthik B S
2022-12-27 14:55     ` Modem, Bhanuprakash
2022-11-15 17:08 ` [igt-dev] [i-g-t v5 12/52] tests/kms_cursor_crc: " Bhanuprakash Modem
2022-12-27  6:57   ` Thasleem, Mohammed
2022-11-15 17:08 ` [igt-dev] [i-g-t v5 13/52] tests/kms_cursor_edge_walk: " Bhanuprakash Modem
2022-12-27  6:31   ` Thasleem, Mohammed
2022-11-15 17:08 ` [igt-dev] [i-g-t v5 14/52] tests/kms_cursor_legacy: " Bhanuprakash Modem
2022-12-27 16:24   ` Thasleem, Mohammed
2022-11-15 17:08 ` [igt-dev] [i-g-t v5 15/52] tests/kms_display_modes: " Bhanuprakash Modem
2022-11-15 17:08 ` [igt-dev] [i-g-t v5 16/52] tests/kms_dp_tiled_display: " Bhanuprakash Modem
2022-11-15 17:08 ` [igt-dev] [i-g-t v5 17/52] tests/kms_flip_event_leak: " Bhanuprakash Modem
2022-11-15 17:08 ` [igt-dev] [i-g-t v5 18/52] tests/kms_invalid_mode: " Bhanuprakash Modem
2022-11-15 17:08 ` [igt-dev] [i-g-t v5 19/52] tests/kms_lease: " Bhanuprakash Modem
2022-11-15 17:08 ` [igt-dev] [i-g-t v5 20/52] tests/kms_multipipe_modeset: Find the suitable mode instead of using default Bhanuprakash Modem
2022-11-15 17:08 ` [igt-dev] [i-g-t v5 21/52] tests/kms_pipe_crc_basic: Add support for Bigjoiner Bhanuprakash Modem
2022-12-27  6:24   ` Thasleem, Mohammed
2022-11-15 17:08 ` [igt-dev] [i-g-t v5 22/52] tests/kms_plane: " Bhanuprakash Modem
2022-12-15 10:40   ` [igt-dev] [i-g-t v6 " Bhanuprakash Modem
2022-12-27  6:20     ` Karthik B S
2022-11-15 17:08 ` [igt-dev] [i-g-t v5 23/52] tests/kms_plane_alpha_blend: " Bhanuprakash Modem
2022-11-15 17:08 ` [igt-dev] [i-g-t v5 24/52] tests/kms_plane_cursor: " Bhanuprakash Modem
2022-12-27  7:21   ` Sharma, Ananya
2022-11-15 17:08 ` [igt-dev] [i-g-t v5 25/52] tests/kms_plane_lowres: " Bhanuprakash Modem
2022-11-15 17:08 ` [igt-dev] [i-g-t v5 26/52] tests/kms_plane_multiple: " Bhanuprakash Modem
2022-11-15 17:08 ` [igt-dev] [i-g-t v5 27/52] tests/kms_plane_scaling: " Bhanuprakash Modem
2022-11-15 17:08 ` [igt-dev] [i-g-t v5 28/52] tests/kms_prime: " Bhanuprakash Modem
2022-12-28  5:58   ` Sharma, Ananya
2022-11-15 17:08 ` [igt-dev] [i-g-t v5 29/52] tests/kms_properties: " Bhanuprakash Modem
2022-11-15 17:08 ` [igt-dev] [i-g-t v5 30/52] tests/kms_rmfb: " Bhanuprakash Modem
2022-11-15 17:08 ` [igt-dev] [i-g-t v5 31/52] tests/kms_rotation_crc: " Bhanuprakash Modem
2022-12-23  8:23   ` B, Jeevan
2022-11-15 17:08 ` [igt-dev] [i-g-t v5 32/52] tests/kms_scaling_modes: " Bhanuprakash Modem
2022-12-30 17:48   ` Swati Sharma
2022-11-15 17:08 ` [igt-dev] [i-g-t v5 33/52] tests/kms_sequence: " Bhanuprakash Modem
2022-11-15 17:08 ` [igt-dev] [i-g-t v5 34/52] tests/kms_universal_plane: " Bhanuprakash Modem
2022-12-28 10:54   ` Sharma, Ananya
2022-11-15 17:08 ` [igt-dev] [i-g-t v5 35/52] tests/kms_vblank: " Bhanuprakash Modem
2022-12-30 18:41   ` Swati Sharma
2022-11-15 17:08 ` [igt-dev] [i-g-t v5 36/52] tests/kms_vrr: " Bhanuprakash Modem
2022-11-15 17:08 ` [igt-dev] [i-g-t v5 37/52] tests/i915/kms_big_fb: " Bhanuprakash Modem
2022-12-23  8:06   ` B, Jeevan
2022-11-15 17:08 ` [igt-dev] [i-g-t v5 38/52] tests/i915/kms_big_joiner: Negative tests " Bhanuprakash Modem
2022-11-15 17:08 ` [igt-dev] [i-g-t v5 39/52] tests/i915/kms_busy: Add support " Bhanuprakash Modem
2022-11-15 17:08 ` [igt-dev] [i-g-t v5 40/52] tests/i915/kms_ccs: " Bhanuprakash Modem
2022-12-23  8:27   ` Karthik B S
2022-11-15 17:08 ` [igt-dev] [i-g-t v5 41/52] tests/i915/kms_cdclk: " Bhanuprakash Modem
2022-12-29  9:28   ` Swati Sharma
2022-12-30  5:45     ` Modem, Bhanuprakash
2022-12-30 14:01       ` Swati Sharma
2023-01-04  7:04       ` Swati Sharma
2022-11-15 17:08 ` [igt-dev] [i-g-t v5 42/52] tests/i915/kms_draw_crc: " Bhanuprakash Modem
2022-11-15 17:08 ` [igt-dev] [i-g-t v5 43/52] tests/i915/kms_fence_pin_leak: " Bhanuprakash Modem
2022-12-26 10:58   ` Sharma, Ananya
2022-12-27  8:58   ` Sharma, Ananya
2022-11-15 17:08 ` [igt-dev] [i-g-t v5 44/52] tests/i915/kms_flip_scaled_crc: " Bhanuprakash Modem
2022-12-28 18:43   ` Swati Sharma
2022-12-29  5:02     ` Modem, Bhanuprakash
2022-12-29  5:17   ` [igt-dev] [i-g-t v6 " Bhanuprakash Modem
2022-12-30 14:06     ` Swati Sharma
2022-11-15 17:08 ` [igt-dev] [i-g-t v5 45/52] tests/i915/kms_flip_tiling: " Bhanuprakash Modem
2022-12-23  8:11   ` B, Jeevan
2022-12-23  8:36     ` Modem, Bhanuprakash
2022-12-23  8:40   ` [igt-dev] [i-g-t v6 " Bhanuprakash Modem
2022-12-26  6:09     ` B, Jeevan
2022-11-15 17:08 ` [igt-dev] [i-g-t v5 46/52] tests/i915/kms_frontbuffer_tracking: " Bhanuprakash Modem
2022-11-15 17:08 ` [igt-dev] [i-g-t v5 47/52] tests/i915/kms_mmap_write_crc: " Bhanuprakash Modem
2022-11-15 17:08 ` [igt-dev] [i-g-t v5 48/52] tests/i915/kms_psr2_sf: " Bhanuprakash Modem
2022-11-15 17:08 ` [igt-dev] [i-g-t v5 49/52] tests/i915/kms_psr2_su: " Bhanuprakash Modem
2022-11-15 17:08 ` [igt-dev] [i-g-t v5 50/52] tests/i915/kms_psr: " Bhanuprakash Modem
2022-11-15 17:08 ` [igt-dev] [i-g-t v5 51/52] tests/i915/kms_psr_stress_test: " Bhanuprakash Modem
2022-11-15 17:08 ` [igt-dev] [i-g-t v5 52/52] tests/i915/kms_pwrite_crc: " Bhanuprakash Modem
2022-11-15 20:21 ` [igt-dev] ✓ Fi.CI.BAT: success for Add IGT support for Bigjoiner (rev9) Patchwork
2022-11-16  3:08 ` [igt-dev] ✗ Fi.CI.IGT: failure " Patchwork
2022-12-15 12:18 ` [igt-dev] ✓ Fi.CI.BAT: success for Add IGT support for Bigjoiner (rev10) Patchwork
2022-12-16 13:08 ` [igt-dev] ✗ Fi.CI.IGT: failure " Patchwork
2022-12-23  7:12 ` [igt-dev] ✓ Fi.CI.BAT: success for Add IGT support for Bigjoiner (rev11) Patchwork
2022-12-23  9:29 ` [igt-dev] ✓ Fi.CI.BAT: success for Add IGT support for Bigjoiner (rev12) Patchwork
2022-12-23 10:37 ` [igt-dev] ✗ Fi.CI.IGT: failure for Add IGT support for Bigjoiner (rev11) Patchwork
2022-12-23 11:01 ` [igt-dev] ✓ Fi.CI.IGT: success for Add IGT support for Bigjoiner (rev12) Patchwork
  -- strict thread matches above, loose matches on Subject: below --
2022-11-15 16:58 [igt-dev] [i-g-t v5 00/52] Add IGT support for Bigjoiner Bhanuprakash Modem
2022-11-15 16:58 ` [igt-dev] [i-g-t v5 01/52] lib/igt_kms: Add a helper for valid pipe/output constraint Bhanuprakash Modem

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20221115170855.196572-2-bhanuprakash.modem@intel.com \
    --to=bhanuprakash.modem@intel.com \
    --cc=igt-dev@lists.freedesktop.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.