Igt-dev Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [igt-dev] [i-g-t V2 0/6] Fix Bigjoiner checks
@ 2023-03-28 12:32 Bhanuprakash Modem
  2023-03-28 12:32 ` [igt-dev] [i-g-t V2 1/6] lib/igt_kms: " Bhanuprakash Modem
                   ` (7 more replies)
  0 siblings, 8 replies; 12+ messages in thread
From: Bhanuprakash Modem @ 2023-03-28 12:32 UTC (permalink / raw)
  To: igt-dev, swati2.sharma, ankit.k.nautiyal, karthik.b.s

Bigjoiner will come in the picture when the resolution > 5K or
clock > max dot-clock. Add a support to check the selected mode
clock is greater than the max dot-clock.

Bhanuprakash Modem (6):
  lib/igt_kms: Fix Bigjoiner checks
  tests/i915/kms_big_joiner: Fix Bigjoiner checks
  tests/i915/kms_dsc: Update bigjoiner pipe constraint
  tests/kms_invalid_mode: Use helpers from IGT lib
  tests/kms_flip: Fix Bigjoiner checks
  tests/kms_setmode: Fix Bigjoiner checks

 lib/igt_kms.c               | 56 ++++++++++++++++++++++++++++---
 lib/igt_kms.h               |  2 ++
 tests/i915/kms_big_joiner.c | 67 +++++++++++++++++++++----------------
 tests/i915/kms_dsc.c        | 17 +++++-----
 tests/i915/kms_dsc_helper.h |  2 --
 tests/kms_flip.c            | 12 +++----
 tests/kms_invalid_mode.c    | 23 +------------
 tests/kms_setmode.c         | 15 +++++----
 8 files changed, 116 insertions(+), 78 deletions(-)

--
2.40.0

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

* [igt-dev] [i-g-t V2 1/6] lib/igt_kms: Fix Bigjoiner checks
  2023-03-28 12:32 [igt-dev] [i-g-t V2 0/6] Fix Bigjoiner checks Bhanuprakash Modem
@ 2023-03-28 12:32 ` Bhanuprakash Modem
  2023-03-28 12:32 ` [igt-dev] [i-g-t V2 2/6] tests/i915/kms_big_joiner: " Bhanuprakash Modem
                   ` (6 subsequent siblings)
  7 siblings, 0 replies; 12+ messages in thread
From: Bhanuprakash Modem @ 2023-03-28 12:32 UTC (permalink / raw)
  To: igt-dev, swati2.sharma, ankit.k.nautiyal, karthik.b.s

Bigjoiner will come in the picture when the resolution > 5K or
clock > max dot-clock. Add a support to check the selected mode
clock is greater than the max dot-clock.

V2: - Update helper comments (Ankit)
    - New helper to check Bigjoiner requirement (Ankit)

Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
Reviewed-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
---
 lib/igt_kms.c | 56 +++++++++++++++++++++++++++++++++++++++++++++++----
 lib/igt_kms.h |  2 ++
 2 files changed, 54 insertions(+), 4 deletions(-)

diff --git a/lib/igt_kms.c b/lib/igt_kms.c
index c12823d318e..c4d9fcc5ddd 100644
--- a/lib/igt_kms.c
+++ b/lib/igt_kms.c
@@ -5780,6 +5780,51 @@ bool igt_max_bpc_constraint(igt_display_t *display, enum pipe pipe,
 	return false;
 }
 
+/*
+ * igt_get_max_dotclock:
+ * @fd: A drm file descriptor
+ *
+ * Get the Max pixel clock frequency from intel specific debugfs
+ * "i915_frequency_info".
+ *
+ * Returns: Max supported pixel clock frequency.
+ */
+int igt_get_max_dotclock(int fd)
+{
+	char buf[4096];
+	char *s;
+	int max_dotclock = 0;
+
+	if (!is_i915_device(fd))
+		return max_dotclock;
+
+	igt_debugfs_read(fd, "i915_frequency_info", buf);
+	s = strstr(buf, "Max pixel clock frequency:");
+	igt_assert(s);
+	igt_assert_eq(sscanf(s, "Max pixel clock frequency: %d kHz", &max_dotclock), 1);
+
+	/* 100 Mhz to 5 GHz seem like reasonable values to expect */
+	igt_assert_lt(max_dotclock, 5000000);
+	igt_assert_lt(100000, max_dotclock);
+
+	return max_dotclock;
+}
+
+/* igt_bigjoiner_possible:
+ * @mode: libdrm mode
+ * @max_dotclock: Max pixel clock frequency
+ *
+ * Bigjoiner will come into the picture, when the requested
+ * mode resolution > 5K or mode clock > max_dotclock.
+ *
+ * Returns: True if mode requires Bigjoiner, else False.
+ */
+bool igt_bigjoiner_possible(drmModeModeInfo *mode, int max_dotclock)
+{
+	return (mode->hdisplay > MAX_HDISPLAY_PER_PIPE ||
+		mode->clock > max_dotclock);
+}
+
 /*
  * igt_check_bigjoiner_support:
  * @display: a pointer to an #igt_display_t structure
@@ -5802,6 +5847,7 @@ bool igt_check_bigjoiner_support(igt_display_t *display)
 		enum pipe idx;
 		drmModeModeInfo *mode;
 	} pipes[IGT_MAX_PIPES];
+	int max_dotclock;
 
 	/* Get total enabled pipes. */
 	for_each_pipe(display, p)
@@ -5825,22 +5871,24 @@ bool igt_check_bigjoiner_support(igt_display_t *display)
 		return true;
 	}
 
+	max_dotclock = igt_get_max_dotclock(display->drm_fd);
+
 	/*
-	 * if mode.hdisplay > 5120, then ignore
+	 * if mode resolution > 5K (or) mode.clock > max dot-clock, then ignore
 	 *  - if the consecutive pipe is not available
 	 *  - last crtc in single/multi-connector config
 	 *  - consecutive crtcs in multi-connector config
 	 *
 	 * in multi-connector config ignore if
-	 *  - previous crtc mode.hdisplay > 5120 and
+	 *  - previous crtc (mode resolution > 5K or mode.clock > max dot-clock) and
 	 *  - current & previous crtcs are consecutive
 	 */
 	for (i = 0; i < pipes_in_use; i++) {
-		if (((pipes[i].mode->hdisplay > MAX_HDISPLAY_PER_PIPE) &&
+		if ((igt_bigjoiner_possible(pipes[i].mode, max_dotclock) &&
 		     ((pipes[i].idx >= (total_pipes - 1)) ||
 		      (!display->pipes[pipes[i].idx + 1].enabled) ||
 		      ((i < (pipes_in_use - 1)) && (abs(pipes[i + 1].idx - pipes[i].idx) <= 1)))) ||
-		    ((i > 0) && (pipes[i - 1].mode->hdisplay > MAX_HDISPLAY_PER_PIPE) &&
+		    ((i > 0) && igt_bigjoiner_possible(pipes[i - 1].mode, max_dotclock) &&
 		     ((!display->pipes[pipes[i - 1].idx + 1].enabled) ||
 		      (abs(pipes[i].idx - pipes[i - 1].idx) <= 1)))) {
 			igt_debug("Pipe/Output combo is not possible with selected mode(s).\n");
diff --git a/lib/igt_kms.h b/lib/igt_kms.h
index 2b917925158..df90bb2330d 100644
--- a/lib/igt_kms.h
+++ b/lib/igt_kms.h
@@ -990,6 +990,8 @@ void igt_sort_connector_modes(drmModeConnector *connector,
 
 bool igt_max_bpc_constraint(igt_display_t *display, enum pipe pipe,
 		igt_output_t *output, int bpc);
+int igt_get_max_dotclock(int fd);
+bool igt_bigjoiner_possible(drmModeModeInfo *mode, int max_dotclock);
 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);
-- 
2.40.0

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

* [igt-dev] [i-g-t V2 2/6] tests/i915/kms_big_joiner: Fix Bigjoiner checks
  2023-03-28 12:32 [igt-dev] [i-g-t V2 0/6] Fix Bigjoiner checks Bhanuprakash Modem
  2023-03-28 12:32 ` [igt-dev] [i-g-t V2 1/6] lib/igt_kms: " Bhanuprakash Modem
@ 2023-03-28 12:32 ` Bhanuprakash Modem
  2023-04-05  7:38   ` Karthik B S
  2023-03-28 12:32 ` [igt-dev] [i-g-t V2 3/6] tests/i915/kms_dsc: Update bigjoiner pipe constraint Bhanuprakash Modem
                   ` (5 subsequent siblings)
  7 siblings, 1 reply; 12+ messages in thread
From: Bhanuprakash Modem @ 2023-03-28 12:32 UTC (permalink / raw)
  To: igt-dev, swati2.sharma, ankit.k.nautiyal, karthik.b.s

Bigjoiner will come in the picture when the resolution > 5K or
clock > max dot-clock. Add a support to check the selected mode
clock is greater than the max dot-clock.

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

diff --git a/tests/i915/kms_big_joiner.c b/tests/i915/kms_big_joiner.c
index 8be60ea1176..adc37be719d 100644
--- a/tests/i915/kms_big_joiner.c
+++ b/tests/i915/kms_big_joiner.c
@@ -26,10 +26,13 @@
 
 #include "igt.h"
 
-#define MAX_HDISPLAY_PER_PIPE 5120
-
 IGT_TEST_DESCRIPTION("Test big joiner");
 
+typedef struct {
+	uint32_t output;
+	drmModeModeInfo mode;
+} big_joiner;
+
 typedef struct {
 	int drm_fd;
 	igt_display_t display;
@@ -37,7 +40,7 @@ typedef struct {
 	int n_pipes;
 	enum pipe pipe1;
 	enum pipe pipe2;
-	uint32_t big_joiner_output[2];
+	big_joiner big_joiner_output[2];
 } data_t;
 
 static void test_invalid_modeset(data_t *data)
@@ -91,7 +94,7 @@ static void test_basic_modeset(data_t *data)
 	igt_display_reset(display);
 
 	for_each_connected_output(display, output) {
-		if (data->big_joiner_output[0] == output->id) {
+		if (data->big_joiner_output[0].output == output->id) {
 			big_joiner_output = output;
 			break;
 		}
@@ -99,9 +102,7 @@ static void test_basic_modeset(data_t *data)
 
 	igt_output_set_pipe(big_joiner_output, data->pipe1);
 
-	igt_sort_connector_modes(big_joiner_output->config.connector,
-				 sort_drm_modes_by_res_dsc);
-	mode = &big_joiner_output->config.connector->modes[0];
+	mode = &data->big_joiner_output[0].mode;
 	igt_output_override_mode(big_joiner_output, mode);
 
 	pipe = &display->pipes[data->pipe1];
@@ -130,7 +131,7 @@ static void test_dual_display(data_t *data)
 	igt_display_reset(display);
 
 	for_each_connected_output(display, output) {
-		if (data->big_joiner_output[count] == output->id) {
+		if (data->big_joiner_output[count].output == output->id) {
 			big_joiner_output[count] = output;
 			count++;
 		}
@@ -143,9 +144,7 @@ static void test_dual_display(data_t *data)
 	igt_output_set_pipe(big_joiner_output[1], data->pipe2);
 
 	/* Set up first big joiner output on Pipe A*/
-	igt_sort_connector_modes(big_joiner_output[0]->config.connector,
-				 sort_drm_modes_by_res_dsc);
-	mode = &big_joiner_output[0]->config.connector->modes[0];
+	mode = &data->big_joiner_output[0].mode;
 	igt_output_override_mode(big_joiner_output[0], mode);
 
 	pipe = &display->pipes[data->pipe1];
@@ -156,9 +155,7 @@ static void test_dual_display(data_t *data)
 	igt_plane_set_size(plane1, mode->hdisplay, mode->vdisplay);
 
 	/* Set up second big joiner output on Pipe C*/
-	igt_sort_connector_modes(big_joiner_output[1]->config.connector,
-				 sort_drm_modes_by_res_dsc);
-	mode = &big_joiner_output[1]->config.connector->modes[0];
+	mode = &data->big_joiner_output[1].mode;
 	igt_output_override_mode(big_joiner_output[1], mode);
 
 	pipe = &display->pipes[data->pipe2];
@@ -186,6 +183,8 @@ igt_main
 	int valid_output = 0, i, count = 0, j = 0;
 	uint16_t width = 0, height = 0;
 	enum pipe pipe_seq[IGT_MAX_PIPES];
+	int max_dotclock;
+	bool retry = false;
 
 	igt_fixture {
 		data.drm_fd = drm_open_driver_master(DRIVER_INTEL);
@@ -194,13 +193,22 @@ igt_main
 		igt_display_require(&data.display, data.drm_fd);
 		igt_require(data.display.is_atomic);
 
+		max_dotclock = igt_get_max_dotclock(data.drm_fd);
+retry:
 		for_each_connected_output(&data.display, output) {
+			/*
+			 * Bigjoiner will come in the picture when
+			 * the resolution > 5K or clock > max-dot-clock.
+			 */
 			igt_sort_connector_modes(output->config.connector,
-						 sort_drm_modes_by_res_dsc);
+						 retry ? sort_drm_modes_by_clk_dsc :
+							 sort_drm_modes_by_res_dsc);
 
 			mode = &output->config.connector->modes[0];
-			if (mode->hdisplay > MAX_HDISPLAY_PER_PIPE) {
-				data.big_joiner_output[count++] = output->id;
+			if (igt_bigjoiner_possible(mode, max_dotclock)) {
+				data.big_joiner_output[count].output = output->id;
+				memcpy(&data.big_joiner_output[count].mode, mode, sizeof(drmModeModeInfo));
+				count++;
 
 				width = max(width, mode->hdisplay);
 				height = max(height, mode->vdisplay);
@@ -208,6 +216,11 @@ igt_main
 			valid_output++;
 		}
 
+		if (!count && !retry) {
+			retry = true;
+			goto retry;
+		}
+
 		data.n_pipes = 0;
 		for_each_pipe(&data.display, i) {
 			data.n_pipes++;
@@ -215,7 +228,7 @@ igt_main
 			j++;
 		}
 
-		igt_require_f(count > 0, "No output with 5k+ mode found\n");
+		igt_require_f(count > 0, "No output with 5k+ mode (or) clock > max-dot-clock found\n");
 
 		igt_create_pattern_fb(data.drm_fd, width, height, DRM_FORMAT_XRGB8888,
 				      DRM_FORMAT_MOD_LINEAR, &data.fb);
@@ -237,14 +250,12 @@ igt_main
 
 		igt_display_reset(&data.display);
 		for_each_connected_output(&data.display, output) {
-			if (data.big_joiner_output[0] != output->id)
+			if (data.big_joiner_output[0].output != output->id)
 				continue;
 
-			igt_sort_connector_modes(output->config.connector,
-						 sort_drm_modes_by_res_dsc);
-
+			mode = &data.big_joiner_output[0].mode;
 			igt_output_set_pipe(output, data.pipe1);
-			igt_output_override_mode(output, &output->config.connector->modes[0]);
+			igt_output_override_mode(output, mode);
 
 			igt_dynamic_f("pipe-%s-%s",
 				      kmstest_pipe_name(data.pipe1),
@@ -261,17 +272,15 @@ igt_main
 
 				igt_display_reset(&data.display);
 				for_each_connected_output(&data.display, output) {
-					igt_sort_connector_modes(output->config.connector,
-								 sort_drm_modes_by_res_dsc);
-
-					if (data.big_joiner_output[0] == output->id) {
+					if (data.big_joiner_output[0].output == output->id) {
 						first_output = output;
+						mode = &data.big_joiner_output[0].mode;
+
 						igt_output_set_pipe(output, data.pipe1);
-						igt_output_override_mode(output, &output->config.connector->modes[0]);
+						igt_output_override_mode(output, mode);
 					} else if (second_output == NULL) {
 						second_output = output;
 						igt_output_set_pipe(output, data.pipe2);
-						igt_output_override_mode(output, &output->config.connector->modes[0]);
 
 						break;
 					}
-- 
2.40.0

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

* [igt-dev] [i-g-t V2 3/6] tests/i915/kms_dsc: Update bigjoiner pipe constraint
  2023-03-28 12:32 [igt-dev] [i-g-t V2 0/6] Fix Bigjoiner checks Bhanuprakash Modem
  2023-03-28 12:32 ` [igt-dev] [i-g-t V2 1/6] lib/igt_kms: " Bhanuprakash Modem
  2023-03-28 12:32 ` [igt-dev] [i-g-t V2 2/6] tests/i915/kms_big_joiner: " Bhanuprakash Modem
@ 2023-03-28 12:32 ` Bhanuprakash Modem
  2023-03-29 15:48   ` Sharma, Swati2
  2023-03-28 12:32 ` [igt-dev] [i-g-t V2 4/6] tests/kms_invalid_mode: Use helpers from IGT lib Bhanuprakash Modem
                   ` (4 subsequent siblings)
  7 siblings, 1 reply; 12+ messages in thread
From: Bhanuprakash Modem @ 2023-03-28 12:32 UTC (permalink / raw)
  To: igt-dev, swati2.sharma, ankit.k.nautiyal, karthik.b.s

Instead of writing own logic at test level, use existing IGT
helper to check the bigjoiner support.

Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 tests/i915/kms_dsc.c        | 17 ++++++++---------
 tests/i915/kms_dsc_helper.h |  2 --
 2 files changed, 8 insertions(+), 11 deletions(-)

diff --git a/tests/i915/kms_dsc.c b/tests/i915/kms_dsc.c
index b3c5e60c773..9c6a7780acd 100644
--- a/tests/i915/kms_dsc.c
+++ b/tests/i915/kms_dsc.c
@@ -47,7 +47,6 @@ typedef struct {
 	unsigned int plane_format;
 	igt_output_t *output;
 	int input_bpc;
-	int n_pipes;
 	int disp_ver;
 	enum pipe pipe;
 } data_t;
@@ -76,15 +75,19 @@ static bool check_big_joiner_pipe_constraint(data_t *data)
 {
 	igt_output_t *output = data->output;
 	drmModeModeInfo *mode = get_highres_mode(output);
+	bool ret = true;
 
-	if (mode->hdisplay >= HDISPLAY_5K &&
-	    data->pipe == (data->n_pipes - 1)) {
+	igt_output_set_pipe(output, data->pipe);
+	igt_output_override_mode(output, mode);
+
+	if (!igt_check_bigjoiner_support(&data->display)) {
 		igt_debug("Pipe-%s not supported due to bigjoiner limitation\n",
 			   kmstest_pipe_name(data->pipe));
-		return false;
+		ret = false;
 	}
+	igt_output_set_pipe(output, PIPE_NONE);
 
-	return true;
+	return ret;
 }
 
 static void test_cleanup(data_t *data)
@@ -206,7 +209,6 @@ static void test_dsc(data_t *data, enum dsc_test_type test_type, int bpc,
 igt_main
 {
 	data_t data = {};
-	int i;
 
 	igt_fixture {
 		data.drm_fd = drm_open_driver_master(DRIVER_INTEL);
@@ -217,9 +219,6 @@ igt_main
 		igt_display_require(&data.display, data.drm_fd);
 		igt_display_require_output(&data.display);
 		igt_require(data.disp_ver >= 11);
-		data.n_pipes = 0;
-		for_each_pipe(&data.display, i)
-			data.n_pipes++;
 	}
 
 	igt_describe("Tests basic display stream compression functionality if supported "
diff --git a/tests/i915/kms_dsc_helper.h b/tests/i915/kms_dsc_helper.h
index fe479dac472..b3828dcd44a 100644
--- a/tests/i915/kms_dsc_helper.h
+++ b/tests/i915/kms_dsc_helper.h
@@ -21,8 +21,6 @@
 #include <fcntl.h>
 #include <termios.h>
 
-#define HDISPLAY_5K	5120
-
 void force_dsc_enable(int drmfd, igt_output_t *output);
 void force_dsc_enable_bpc(int drmfd, igt_output_t *output, int input_bpc);
 void save_force_dsc_en(int drmfd, igt_output_t *output);
-- 
2.40.0

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

* [igt-dev] [i-g-t V2 4/6] tests/kms_invalid_mode: Use helpers from IGT lib
  2023-03-28 12:32 [igt-dev] [i-g-t V2 0/6] Fix Bigjoiner checks Bhanuprakash Modem
                   ` (2 preceding siblings ...)
  2023-03-28 12:32 ` [igt-dev] [i-g-t V2 3/6] tests/i915/kms_dsc: Update bigjoiner pipe constraint Bhanuprakash Modem
@ 2023-03-28 12:32 ` Bhanuprakash Modem
  2023-03-28 12:32 ` [igt-dev] [i-g-t V2 5/6] tests/kms_flip: Fix Bigjoiner checks Bhanuprakash Modem
                   ` (3 subsequent siblings)
  7 siblings, 0 replies; 12+ messages in thread
From: Bhanuprakash Modem @ 2023-03-28 12:32 UTC (permalink / raw)
  To: igt-dev, swati2.sharma, ankit.k.nautiyal, karthik.b.s

Instead of writing own logic at test level, use existing IGT
helper to read the max dot clock.

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

diff --git a/tests/kms_invalid_mode.c b/tests/kms_invalid_mode.c
index 86f529e88b1..ec048305567 100644
--- a/tests/kms_invalid_mode.c
+++ b/tests/kms_invalid_mode.c
@@ -213,27 +213,6 @@ test_output(data_t *data)
 	igt_remove_fb(data->drm_fd, &fb);
 }
 
-static int i915_max_dotclock(data_t *data)
-{
-	char buf[4096];
-	char *s;
-	int max_dotclock = 0;
-
-	if (!is_i915_device(data->drm_fd))
-		return 0;
-
-	igt_debugfs_read(data->drm_fd, "i915_frequency_info", buf);
-	s = strstr(buf, "Max pixel clock frequency:");
-	igt_assert(s);
-	igt_assert_eq(sscanf(s, "Max pixel clock frequency: %d kHz", &max_dotclock), 1);
-
-	/* 100 Mhz to 5 GHz seem like reasonable values to expect */
-	igt_assert_lt(max_dotclock, 5000000);
-	igt_assert_lt(100000, max_dotclock);
-
-	return max_dotclock;
-}
-
 static const struct {
 	const char *name;
 	bool (*adjust_mode)(data_t *data, drmModeModeInfoPtr mode);
@@ -293,7 +272,7 @@ igt_main
 		data.res = drmModeGetResources(data.drm_fd);
 		igt_assert(data.res);
 
-		data.max_dotclock = i915_max_dotclock(&data);
+		data.max_dotclock = igt_get_max_dotclock(data.drm_fd);
 		igt_info("Max dotclock: %d kHz\n", data.max_dotclock);
 	}
 
-- 
2.40.0

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

* [igt-dev] [i-g-t V2 5/6] tests/kms_flip: Fix Bigjoiner checks
  2023-03-28 12:32 [igt-dev] [i-g-t V2 0/6] Fix Bigjoiner checks Bhanuprakash Modem
                   ` (3 preceding siblings ...)
  2023-03-28 12:32 ` [igt-dev] [i-g-t V2 4/6] tests/kms_invalid_mode: Use helpers from IGT lib Bhanuprakash Modem
@ 2023-03-28 12:32 ` Bhanuprakash Modem
  2023-03-28 12:32 ` [igt-dev] [i-g-t V2 6/6] tests/kms_setmode: " Bhanuprakash Modem
                   ` (2 subsequent siblings)
  7 siblings, 0 replies; 12+ messages in thread
From: Bhanuprakash Modem @ 2023-03-28 12:32 UTC (permalink / raw)
  To: igt-dev, swati2.sharma, ankit.k.nautiyal, karthik.b.s

Bigjoiner will come in the picture when the resolution > 5K or
clock > max dot-clock. Add a support to check the selected mode
clock is greater than the max dot-clock.

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

diff --git a/tests/kms_flip.c b/tests/kms_flip.c
index 5e82f4a2f84..7cb8749c930 100755
--- a/tests/kms_flip.c
+++ b/tests/kms_flip.c
@@ -81,8 +81,6 @@
 #define RUN_TEST		1
 #define RUN_PAIR		2
 
-#define MAX_HDISPLAY_PER_CRTC 5120
-
 #ifndef DRM_CAP_TIMESTAMP_MONOTONIC
 #define DRM_CAP_TIMESTAMP_MONOTONIC 6
 #endif
@@ -96,6 +94,7 @@ uint32_t devid;
 int test_time = 3;
 static bool monotonic_timestamp;
 static pthread_t vblank_wait_thread;
+static int max_dotclock;
 
 static drmModeConnector *last_connector;
 
@@ -1528,19 +1527,19 @@ static void run_test_on_crtc_set(struct test_output *o, int *crtc_idxs,
 	/*
 	 * Handle BW limitations:
 	 *
-	 * if mode.hdisplay > 5120, then ignore
+	 * if mode resolution > 5K (or) mode clock > max_dotclock, then ignore
 	 *  - last crtc in single/multi-connector config
 	 *  - consecutive crtcs in multi-connector config
 	 *
 	 * in multi-connector config ignore if
-	 *  - previous crtc mode.hdisplay > 5120 and
+	 *  - previous crtc (mode resolution > 5K or mode clock > max_dotclock) and
 	 *  - current & previous crtcs are consecutive
 	 */
 	for (i = 0; i < crtc_count; i++) {
-		if (((o->kmode[i].hdisplay > MAX_HDISPLAY_PER_CRTC) &&
+		if ((igt_bigjoiner_possible(&o->kmode[i], max_dotclock) &&
 		     ((crtc_idxs[i] >= (total_crtcs - 1)) ||
 		      ((i < (crtc_count - 1)) && (abs(crtc_idxs[i + 1] - crtc_idxs[i]) <= 1)))) ||
-		    ((i > 0) && (o->kmode[i - 1].hdisplay > MAX_HDISPLAY_PER_CRTC) &&
+		    ((i > 0) && igt_bigjoiner_possible(&o->kmode[i - 1], max_dotclock) &&
 		     (abs(crtc_idxs[i] - crtc_idxs[i - 1]) <= 1))) {
 
 			igt_debug("Combo: %s is not possible with selected mode(s).\n", test_name);
@@ -1822,6 +1821,7 @@ igt_main_args("e", NULL, help_str, opt_handler, NULL)
 			for (i = 0; i < sizeof(tests) / sizeof(tests[0]); i++)
 				tests[i].flags &= ~(TEST_CHECK_TS | TEST_VBLANK_EXPIRED_SEQ);
 		}
+		max_dotclock = igt_get_max_dotclock(drm_fd);
 	}
 
 	igt_describe("Tests that nonblocking reading fails correctly");
-- 
2.40.0

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

* [igt-dev] [i-g-t V2 6/6] tests/kms_setmode: Fix Bigjoiner checks
  2023-03-28 12:32 [igt-dev] [i-g-t V2 0/6] Fix Bigjoiner checks Bhanuprakash Modem
                   ` (4 preceding siblings ...)
  2023-03-28 12:32 ` [igt-dev] [i-g-t V2 5/6] tests/kms_flip: Fix Bigjoiner checks Bhanuprakash Modem
@ 2023-03-28 12:32 ` Bhanuprakash Modem
  2023-03-28 13:15 ` [igt-dev] ✓ Fi.CI.BAT: success for Fix Bigjoiner checks (rev2) Patchwork
  2023-03-28 23:14 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
  7 siblings, 0 replies; 12+ messages in thread
From: Bhanuprakash Modem @ 2023-03-28 12:32 UTC (permalink / raw)
  To: igt-dev, swati2.sharma, ankit.k.nautiyal, karthik.b.s

Bigjoiner will come in the picture when the resolution > 5K or
clock > max dot-clock. Add a support to check the selected mode
clock is greater than the max dot-clock.

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

diff --git a/tests/kms_setmode.c b/tests/kms_setmode.c
index bfa108916ce..7932a3ec285 100644
--- a/tests/kms_setmode.c
+++ b/tests/kms_setmode.c
@@ -40,13 +40,12 @@
 /* restricted pipe count */
 #define CRTC_RESTRICT_CNT 2
 
-#define MAX_HDISPLAY_PER_CRTC 5120
-
 static int drm_fd;
 static drmModeRes *drm_resources;
 static int filter_test_id;
 static bool dry_run;
 static bool extended = false;
+static int max_dotclock;
 
 const drmModeModeInfo mode_640_480 = {
 	.name		= "640x480",
@@ -664,18 +663,20 @@ static void test_one_combination(const struct test_config *tconf,
 			struct crtc_config *crtc = &crtcs[i];
 
 			/*
-			 * if mode.hdisplay > 5120, then ignore
+			 * if mode resolution > 5K (or) mode clock > max_dotclock,
+			 * then ignore
 			 *   - last crtc in single/multi-connector config
 			 *   - consecutive crtcs in multi-connector config
 			 *
 			 * in multi-connector config ignore if
-			 *   - previous crtc mode.hdisplay > 5120 and
+			 *   - previous crtc (mode resolution > 5K (or)
+			 *     mode clock > max_dotclock) and
 			 *   - current & previous crtcs are consecutive
 			 */
-			if (((crtc->mode.hdisplay > MAX_HDISPLAY_PER_CRTC) &&
+			if ((igt_bigjoiner_possible(&crtc->mode, max_dotclock) &&
 			     ((crtc->crtc_idx >= (tconf->resources->count_crtcs - 1)) ||
 			      ((i < (crtc_count - 1)) && (abs(crtcs[i + 1].crtc_idx - crtc->crtc_idx) <= 1)))) ||
-			    ((i > 0) && (crtc[i - 1].mode.hdisplay > MAX_HDISPLAY_PER_CRTC) &&
+			    ((i > 0) && igt_bigjoiner_possible(&crtc[i - 1].mode, max_dotclock) &&
 			     (abs(crtc->crtc_idx - crtcs[i - 1].crtc_idx) <= 1))) {
 				igt_info("Combo: %s is not possible with selected mode(s).\n", test_name);
 				goto out;
@@ -954,6 +955,8 @@ igt_main_args("det:", NULL, help_str, opt_handler, NULL)
 
 		drm_resources = drmModeGetResources(drm_fd);
 		igt_require(drm_resources);
+
+		max_dotclock = igt_get_max_dotclock(drm_fd);
 	}
 
 	for (i = 0; i < ARRAY_SIZE(tests); i++) {
-- 
2.40.0

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

* [igt-dev] ✓ Fi.CI.BAT: success for Fix Bigjoiner checks (rev2)
  2023-03-28 12:32 [igt-dev] [i-g-t V2 0/6] Fix Bigjoiner checks Bhanuprakash Modem
                   ` (5 preceding siblings ...)
  2023-03-28 12:32 ` [igt-dev] [i-g-t V2 6/6] tests/kms_setmode: " Bhanuprakash Modem
@ 2023-03-28 13:15 ` Patchwork
  2023-03-28 23:14 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
  7 siblings, 0 replies; 12+ messages in thread
From: Patchwork @ 2023-03-28 13:15 UTC (permalink / raw)
  To: Bhanuprakash Modem; +Cc: igt-dev

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

== Series Details ==

Series: Fix Bigjoiner checks (rev2)
URL   : https://patchwork.freedesktop.org/series/115712/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_12926 -> IGTPW_8700
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

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

Participating hosts (36 -> 36)
------------------------------

  No changes in participating hosts

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

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

### IGT changes ###

#### Issues hit ####

  * igt@gem_lmem_swapping@basic:
    - bat-adln-1:         NOTRUN -> [SKIP][1] ([i915#4613]) +3 similar issues
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8700/bat-adln-1/igt@gem_lmem_swapping@basic.html

  * igt@i915_selftest@live@gt_heartbeat:
    - fi-apl-guc:         [PASS][2] -> [DMESG-FAIL][3] ([i915#5334])
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12926/fi-apl-guc/igt@i915_selftest@live@gt_heartbeat.html
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8700/fi-apl-guc/igt@i915_selftest@live@gt_heartbeat.html

  * igt@i915_selftest@live@migrate:
    - bat-adlp-9:         [PASS][4] -> [DMESG-FAIL][5] ([i915#7699])
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12926/bat-adlp-9/igt@i915_selftest@live@migrate.html
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8700/bat-adlp-9/igt@i915_selftest@live@migrate.html

  * igt@i915_selftest@live@mman:
    - bat-rpls-2:         [PASS][6] -> [TIMEOUT][7] ([i915#6794])
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12926/bat-rpls-2/igt@i915_selftest@live@mman.html
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8700/bat-rpls-2/igt@i915_selftest@live@mman.html

  * igt@i915_selftest@live@reset:
    - bat-rpls-1:         [PASS][8] -> [ABORT][9] ([i915#4983])
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12926/bat-rpls-1/igt@i915_selftest@live@reset.html
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8700/bat-rpls-1/igt@i915_selftest@live@reset.html

  * igt@i915_selftest@live@slpc:
    - bat-adln-1:         NOTRUN -> [DMESG-FAIL][10] ([i915#6997])
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8700/bat-adln-1/igt@i915_selftest@live@slpc.html

  * igt@kms_chamelium_hpd@common-hpd-after-suspend:
    - fi-bsw-nick:        NOTRUN -> [SKIP][11] ([fdo#109271]) +1 similar issue
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8700/fi-bsw-nick/igt@kms_chamelium_hpd@common-hpd-after-suspend.html
    - bat-dg2-11:         NOTRUN -> [SKIP][12] ([i915#7828])
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8700/bat-dg2-11/igt@kms_chamelium_hpd@common-hpd-after-suspend.html
    - bat-adln-1:         NOTRUN -> [SKIP][13] ([i915#7828])
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8700/bat-adln-1/igt@kms_chamelium_hpd@common-hpd-after-suspend.html

  * igt@kms_pipe_crc_basic@compare-crc-sanitycheck@pipe-d-dp-1:
    - bat-dg2-8:          [PASS][14] -> [FAIL][15] ([i915#7932])
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12926/bat-dg2-8/igt@kms_pipe_crc_basic@compare-crc-sanitycheck@pipe-d-dp-1.html
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8700/bat-dg2-8/igt@kms_pipe_crc_basic@compare-crc-sanitycheck@pipe-d-dp-1.html

  * igt@prime_vgem@basic-userptr:
    - bat-adln-1:         NOTRUN -> [SKIP][16] ([fdo#109295] / [i915#3301])
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8700/bat-adln-1/igt@prime_vgem@basic-userptr.html

  * igt@prime_vgem@basic-write:
    - bat-adln-1:         NOTRUN -> [SKIP][17] ([fdo#109295] / [i915#3291]) +2 similar issues
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8700/bat-adln-1/igt@prime_vgem@basic-write.html

  
#### Possible fixes ####

  * igt@i915_pm_rpm@basic-rte:
    - bat-adln-1:         [ABORT][18] ([i915#7977]) -> [PASS][19]
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12926/bat-adln-1/igt@i915_pm_rpm@basic-rte.html
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8700/bat-adln-1/igt@i915_pm_rpm@basic-rte.html

  * igt@i915_selftest@live@execlists:
    - fi-bsw-nick:        [ABORT][20] ([i915#7911] / [i915#7913]) -> [PASS][21]
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12926/fi-bsw-nick/igt@i915_selftest@live@execlists.html
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8700/fi-bsw-nick/igt@i915_selftest@live@execlists.html

  * igt@i915_selftest@live@gt_lrc:
    - bat-dg2-11:         [INCOMPLETE][22] ([i915#7609] / [i915#7913]) -> [PASS][23]
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12926/bat-dg2-11/igt@i915_selftest@live@gt_lrc.html
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8700/bat-dg2-11/igt@i915_selftest@live@gt_lrc.html

  * igt@i915_selftest@live@workarounds:
    - bat-rpls-1:         [DMESG-FAIL][24] ([i915#6763]) -> [PASS][25]
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12926/bat-rpls-1/igt@i915_selftest@live@workarounds.html
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8700/bat-rpls-1/igt@i915_selftest@live@workarounds.html

  
  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [fdo#109295]: https://bugs.freedesktop.org/show_bug.cgi?id=109295
  [i915#3291]: https://gitlab.freedesktop.org/drm/intel/issues/3291
  [i915#3301]: https://gitlab.freedesktop.org/drm/intel/issues/3301
  [i915#4613]: https://gitlab.freedesktop.org/drm/intel/issues/4613
  [i915#4983]: https://gitlab.freedesktop.org/drm/intel/issues/4983
  [i915#5334]: https://gitlab.freedesktop.org/drm/intel/issues/5334
  [i915#6763]: https://gitlab.freedesktop.org/drm/intel/issues/6763
  [i915#6794]: https://gitlab.freedesktop.org/drm/intel/issues/6794
  [i915#6997]: https://gitlab.freedesktop.org/drm/intel/issues/6997
  [i915#7609]: https://gitlab.freedesktop.org/drm/intel/issues/7609
  [i915#7699]: https://gitlab.freedesktop.org/drm/intel/issues/7699
  [i915#7828]: https://gitlab.freedesktop.org/drm/intel/issues/7828
  [i915#7911]: https://gitlab.freedesktop.org/drm/intel/issues/7911
  [i915#7913]: https://gitlab.freedesktop.org/drm/intel/issues/7913
  [i915#7932]: https://gitlab.freedesktop.org/drm/intel/issues/7932
  [i915#7977]: https://gitlab.freedesktop.org/drm/intel/issues/7977


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

  * CI: CI-20190529 -> None
  * IGT: IGT_7221 -> IGTPW_8700

  CI-20190529: 20190529
  CI_DRM_12926: 3c05e51a6eff5ee0f05df5b40412e6ae7a18286b @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_8700: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8700/index.html
  IGT_7221: 4b77c6d85024d22ca521d510f8eee574128fe04f @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git

== Logs ==

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

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

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

* [igt-dev] ✓ Fi.CI.IGT: success for Fix Bigjoiner checks (rev2)
  2023-03-28 12:32 [igt-dev] [i-g-t V2 0/6] Fix Bigjoiner checks Bhanuprakash Modem
                   ` (6 preceding siblings ...)
  2023-03-28 13:15 ` [igt-dev] ✓ Fi.CI.BAT: success for Fix Bigjoiner checks (rev2) Patchwork
@ 2023-03-28 23:14 ` Patchwork
  7 siblings, 0 replies; 12+ messages in thread
From: Patchwork @ 2023-03-28 23:14 UTC (permalink / raw)
  To: Bhanuprakash Modem; +Cc: igt-dev

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

== Series Details ==

Series: Fix Bigjoiner checks (rev2)
URL   : https://patchwork.freedesktop.org/series/115712/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_12926_full -> IGTPW_8700_full
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

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

Participating hosts (7 -> 8)
------------------------------

  Additional (1): shard-tglu0 

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

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

### IGT changes ###

#### Suppressed ####

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

  * igt@kms_big_joiner@2x-modeset:
    - {shard-dg1}:        NOTRUN -> [SKIP][1]
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8700/shard-dg1-17/igt@kms_big_joiner@2x-modeset.html
    - {shard-tglu}:       [SKIP][2] ([i915#2705]) -> [SKIP][3] +1 similar issue
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12926/shard-tglu-7/igt@kms_big_joiner@2x-modeset.html
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8700/shard-tglu-10/igt@kms_big_joiner@2x-modeset.html

  * igt@kms_big_joiner@invalid-modeset:
    - {shard-dg1}:        [SKIP][4] ([i915#2705]) -> [SKIP][5]
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12926/shard-dg1-17/igt@kms_big_joiner@invalid-modeset.html
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8700/shard-dg1-16/igt@kms_big_joiner@invalid-modeset.html
    - {shard-tglu}:       NOTRUN -> [SKIP][6]
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8700/shard-tglu-7/igt@kms_big_joiner@invalid-modeset.html

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

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

### IGT changes ###

#### Issues hit ####

  * igt@gem_exec_fair@basic-pace-share@rcs0:
    - shard-glk:          [PASS][7] -> [FAIL][8] ([i915#2842])
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12926/shard-glk7/igt@gem_exec_fair@basic-pace-share@rcs0.html
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8700/shard-glk4/igt@gem_exec_fair@basic-pace-share@rcs0.html

  * igt@gem_mmap_gtt@fault-concurrent-x:
    - shard-snb:          [PASS][9] -> [ABORT][10] ([i915#5161])
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12926/shard-snb5/igt@gem_mmap_gtt@fault-concurrent-x.html
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8700/shard-snb7/igt@gem_mmap_gtt@fault-concurrent-x.html

  * igt@gem_ppgtt@flink-and-close-vma-leak:
    - shard-glk:          [PASS][11] -> [FAIL][12] ([i915#644])
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12926/shard-glk6/igt@gem_ppgtt@flink-and-close-vma-leak.html
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8700/shard-glk8/igt@gem_ppgtt@flink-and-close-vma-leak.html

  * igt@kms_ccs@pipe-a-random-ccs-data-4_tiled_dg2_rc_ccs:
    - shard-glk:          NOTRUN -> [SKIP][13] ([fdo#109271])
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8700/shard-glk9/igt@kms_ccs@pipe-a-random-ccs-data-4_tiled_dg2_rc_ccs.html

  * igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions-varying-size:
    - shard-apl:          [PASS][14] -> [FAIL][15] ([i915#2346])
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12926/shard-apl4/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions-varying-size.html
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8700/shard-apl6/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions-varying-size.html

  
#### Possible fixes ####

  * {igt@gem_barrier_race@remote-request@rcs0}:
    - shard-glk:          [ABORT][16] ([i915#8211]) -> [PASS][17]
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12926/shard-glk1/igt@gem_barrier_race@remote-request@rcs0.html
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8700/shard-glk9/igt@gem_barrier_race@remote-request@rcs0.html

  * igt@gem_eio@hibernate:
    - {shard-dg1}:        [ABORT][18] ([i915#7975]) -> [PASS][19]
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12926/shard-dg1-14/igt@gem_eio@hibernate.html
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8700/shard-dg1-17/igt@gem_eio@hibernate.html

  * igt@gem_exec_fair@basic-none-solo@rcs0:
    - shard-apl:          [FAIL][20] ([i915#2842]) -> [PASS][21]
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12926/shard-apl1/igt@gem_exec_fair@basic-none-solo@rcs0.html
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8700/shard-apl3/igt@gem_exec_fair@basic-none-solo@rcs0.html

  * igt@gem_exec_fair@basic-pace-share@rcs0:
    - {shard-tglu}:       [FAIL][22] ([i915#2842]) -> [PASS][23]
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12926/shard-tglu-7/igt@gem_exec_fair@basic-pace-share@rcs0.html
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8700/shard-tglu-7/igt@gem_exec_fair@basic-pace-share@rcs0.html

  * igt@i915_pm_dc@dc9-dpms:
    - shard-apl:          [SKIP][24] ([fdo#109271]) -> [PASS][25]
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12926/shard-apl6/igt@i915_pm_dc@dc9-dpms.html
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8700/shard-apl7/igt@i915_pm_dc@dc9-dpms.html

  * igt@i915_pm_rc6_residency@rc6-idle@rcs0:
    - {shard-tglu}:       [WARN][26] ([i915#2681]) -> [PASS][27]
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12926/shard-tglu-5/igt@i915_pm_rc6_residency@rc6-idle@rcs0.html
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8700/shard-tglu-7/igt@i915_pm_rc6_residency@rc6-idle@rcs0.html

  * igt@kms_cursor_legacy@forked-move@pipe-b:
    - {shard-dg1}:        [INCOMPLETE][28] ([i915#8011]) -> [PASS][29]
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12926/shard-dg1-14/igt@kms_cursor_legacy@forked-move@pipe-b.html
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8700/shard-dg1-16/igt@kms_cursor_legacy@forked-move@pipe-b.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#109280]: https://bugs.freedesktop.org/show_bug.cgi?id=109280
  [fdo#109283]: https://bugs.freedesktop.org/show_bug.cgi?id=109283
  [fdo#109289]: https://bugs.freedesktop.org/show_bug.cgi?id=109289
  [fdo#109303]: https://bugs.freedesktop.org/show_bug.cgi?id=109303
  [fdo#109315]: https://bugs.freedesktop.org/show_bug.cgi?id=109315
  [fdo#109506]: https://bugs.freedesktop.org/show_bug.cgi?id=109506
  [fdo#110189]: https://bugs.freedesktop.org/show_bug.cgi?id=110189
  [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#111825]: https://bugs.freedesktop.org/show_bug.cgi?id=111825
  [fdo#111827]: https://bugs.freedesktop.org/show_bug.cgi?id=111827
  [i915#1072]: https://gitlab.freedesktop.org/drm/intel/issues/1072
  [i915#1755]: https://gitlab.freedesktop.org/drm/intel/issues/1755
  [i915#1839]: https://gitlab.freedesktop.org/drm/intel/issues/1839
  [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#2437]: https://gitlab.freedesktop.org/drm/intel/issues/2437
  [i915#2527]: https://gitlab.freedesktop.org/drm/intel/issues/2527
  [i915#2575]: https://gitlab.freedesktop.org/drm/intel/issues/2575
  [i915#2587]: https://gitlab.freedesktop.org/drm/intel/issues/2587
  [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#2842]: https://gitlab.freedesktop.org/drm/intel/issues/2842
  [i915#2856]: https://gitlab.freedesktop.org/drm/intel/issues/2856
  [i915#3281]: https://gitlab.freedesktop.org/drm/intel/issues/3281
  [i915#3282]: https://gitlab.freedesktop.org/drm/intel/issues/3282
  [i915#3297]: https://gitlab.freedesktop.org/drm/intel/issues/3297
  [i915#3299]: https://gitlab.freedesktop.org/drm/intel/issues/3299
  [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#3539]: https://gitlab.freedesktop.org/drm/intel/issues/3539
  [i915#3555]: https://gitlab.freedesktop.org/drm/intel/issues/3555
  [i915#3637]: https://gitlab.freedesktop.org/drm/intel/issues/3637
  [i915#3638]: https://gitlab.freedesktop.org/drm/intel/issues/3638
  [i915#3689]: https://gitlab.freedesktop.org/drm/intel/issues/3689
  [i915#3708]: https://gitlab.freedesktop.org/drm/intel/issues/3708
  [i915#3742]: https://gitlab.freedesktop.org/drm/intel/issues/3742
  [i915#3886]: https://gitlab.freedesktop.org/drm/intel/issues/3886
  [i915#3936]: https://gitlab.freedesktop.org/drm/intel/issues/3936
  [i915#3952]: https://gitlab.freedesktop.org/drm/intel/issues/3952
  [i915#3966]: https://gitlab.freedesktop.org/drm/intel/issues/3966
  [i915#4077]: https://gitlab.freedesktop.org/drm/intel/issues/4077
  [i915#4079]: https://gitlab.freedesktop.org/drm/intel/issues/4079
  [i915#4083]: https://gitlab.freedesktop.org/drm/intel/issues/4083
  [i915#4103]: https://gitlab.freedesktop.org/drm/intel/issues/4103
  [i915#4212]: https://gitlab.freedesktop.org/drm/intel/issues/4212
  [i915#4213]: https://gitlab.freedesktop.org/drm/intel/issues/4213
  [i915#4215]: https://gitlab.freedesktop.org/drm/intel/issues/4215
  [i915#4270]: https://gitlab.freedesktop.org/drm/intel/issues/4270
  [i915#433]: https://gitlab.freedesktop.org/drm/intel/issues/433
  [i915#4387]: https://gitlab.freedesktop.org/drm/intel/issues/4387
  [i915#4538]: https://gitlab.freedesktop.org/drm/intel/issues/4538
  [i915#4565]: https://gitlab.freedesktop.org/drm/intel/issues/4565
  [i915#4579]: https://gitlab.freedesktop.org/drm/intel/issues/4579
  [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#4854]: https://gitlab.freedesktop.org/drm/intel/issues/4854
  [i915#4860]: https://gitlab.freedesktop.org/drm/intel/issues/4860
  [i915#4873]: https://gitlab.freedesktop.org/drm/intel/issues/4873
  [i915#4880]: https://gitlab.freedesktop.org/drm/intel/issues/4880
  [i915#4881]: https://gitlab.freedesktop.org/drm/intel/issues/4881
  [i915#5161]: https://gitlab.freedesktop.org/drm/intel/issues/5161
  [i915#5176]: https://gitlab.freedesktop.org/drm/intel/issues/5176
  [i915#5235]: https://gitlab.freedesktop.org/drm/intel/issues/5235
  [i915#5286]: https://gitlab.freedesktop.org/drm/intel/issues/5286
  [i915#5325]: https://gitlab.freedesktop.org/drm/intel/issues/5325
  [i915#5431]: https://gitlab.freedesktop.org/drm/intel/issues/5431
  [i915#5439]: https://gitlab.freedesktop.org/drm/intel/issues/5439
  [i915#5563]: https://gitlab.freedesktop.org/drm/intel/issues/5563
  [i915#5784]: https://gitlab.freedesktop.org/drm/intel/issues/5784
  [i915#6095]: https://gitlab.freedesktop.org/drm/intel/issues/6095
  [i915#6227]: https://gitlab.freedesktop.org/drm/intel/issues/6227
  [i915#6301]: https://gitlab.freedesktop.org/drm/intel/issues/6301
  [i915#6433]: https://gitlab.freedesktop.org/drm/intel/issues/6433
  [i915#644]: https://gitlab.freedesktop.org/drm/intel/issues/644
  [i915#6524]: https://gitlab.freedesktop.org/drm/intel/issues/6524
  [i915#658]: https://gitlab.freedesktop.org/drm/intel/issues/658
  [i915#6946]: https://gitlab.freedesktop.org/drm/intel/issues/6946
  [i915#6953]: https://gitlab.freedesktop.org/drm/intel/issues/6953
  [i915#7116]: https://gitlab.freedesktop.org/drm/intel/issues/7116
  [i915#7561]: https://gitlab.freedesktop.org/drm/intel/issues/7561
  [i915#7697]: https://gitlab.freedesktop.org/drm/intel/issues/7697
  [i915#7701]: https://gitlab.freedesktop.org/drm/intel/issues/7701
  [i915#7711]: https://gitlab.freedesktop.org/drm/intel/issues/7711
  [i915#7828]: https://gitlab.freedesktop.org/drm/intel/issues/7828
  [i915#7975]: https://gitlab.freedesktop.org/drm/intel/issues/7975
  [i915#8011]: https://gitlab.freedesktop.org/drm/intel/issues/8011
  [i915#8211]: https://gitlab.freedesktop.org/drm/intel/issues/8211
  [i915#8247]: https://gitlab.freedesktop.org/drm/intel/issues/8247


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

  * CI: CI-20190529 -> None
  * IGT: IGT_7221 -> IGTPW_8700
  * Piglit: piglit_4509 -> None

  CI-20190529: 20190529
  CI_DRM_12926: 3c05e51a6eff5ee0f05df5b40412e6ae7a18286b @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_8700: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8700/index.html
  IGT_7221: 4b77c6d85024d22ca521d510f8eee574128fe04f @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit

== Logs ==

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

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

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

* Re: [igt-dev] [i-g-t V2 3/6] tests/i915/kms_dsc: Update bigjoiner pipe constraint
  2023-03-28 12:32 ` [igt-dev] [i-g-t V2 3/6] tests/i915/kms_dsc: Update bigjoiner pipe constraint Bhanuprakash Modem
@ 2023-03-29 15:48   ` Sharma, Swati2
  2023-03-30  5:18     ` Modem, Bhanuprakash
  0 siblings, 1 reply; 12+ messages in thread
From: Sharma, Swati2 @ 2023-03-29 15:48 UTC (permalink / raw)
  To: Bhanuprakash Modem, igt-dev

Hi Bhanu,

Shouldn't we use i915_pipe_output_combo_valid()?

On 28-Mar-23 6:02 PM, Bhanuprakash Modem wrote:
> Instead of writing own logic at test level, use existing IGT
> helper to check the bigjoiner support.
>
> Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
> ---
> tests/i915/kms_dsc.c        | 17 ++++++++---------
> tests/i915/kms_dsc_helper.h |  2 --
> 2 files changed, 8 insertions(+), 11 deletions(-)
>
> diff --git a/tests/i915/kms_dsc.c b/tests/i915/kms_dsc.c
> index b3c5e60c773..9c6a7780acd 100644
> --- a/tests/i915/kms_dsc.c
> +++ b/tests/i915/kms_dsc.c
> @@ -47,7 +47,6 @@ typedef struct {
>     unsigned int plane_format;
>     igt_output_t *output;
>     int input_bpc;
> -    int n_pipes;
>     int disp_ver;
>     enum pipe pipe;
> } data_t;
> @@ -76,15 +75,19 @@ static bool 
> check_big_joiner_pipe_constraint(data_t *data)
> {
>     igt_output_t *output = data->output;
>     drmModeModeInfo *mode = get_highres_mode(output);
> +    bool ret = true;
>
> -    if (mode->hdisplay >= HDISPLAY_5K &&
> -        data->pipe == (data->n_pipes - 1)) {
> +    igt_output_set_pipe(output, data->pipe);
> +    igt_output_override_mode(output, mode);
> +
> +    if (!igt_check_bigjoiner_support(&data->display)) {
>         igt_debug("Pipe-%s not supported due to bigjoiner limitation\n",
>                kmstest_pipe_name(data->pipe));
> -        return false;
> +        ret = false;
>     }
> +    igt_output_set_pipe(output, PIPE_NONE);
>
> -    return true;
> +    return ret;
> }
>
> static void test_cleanup(data_t *data)
> @@ -206,7 +209,6 @@ static void test_dsc(data_t *data, enum 
> dsc_test_type test_type, int bpc,
> igt_main
> {
>     data_t data = {};
> -    int i;
>
>     igt_fixture {
>         data.drm_fd = drm_open_driver_master(DRIVER_INTEL);
> @@ -217,9 +219,6 @@ igt_main
>         igt_display_require(&data.display, data.drm_fd);
>         igt_display_require_output(&data.display);
>         igt_require(data.disp_ver >= 11);
> -        data.n_pipes = 0;
> -        for_each_pipe(&data.display, i)
> -            data.n_pipes++;
>     }
>
>     igt_describe("Tests basic display stream compression functionality 
> if supported "
> diff --git a/tests/i915/kms_dsc_helper.h b/tests/i915/kms_dsc_helper.h
> index fe479dac472..b3828dcd44a 100644
> --- a/tests/i915/kms_dsc_helper.h
> +++ b/tests/i915/kms_dsc_helper.h
> @@ -21,8 +21,6 @@
> #include <fcntl.h>
> #include <termios.h>
>
> -#define HDISPLAY_5K    5120
> -
> void force_dsc_enable(int drmfd, igt_output_t *output);
> void force_dsc_enable_bpc(int drmfd, igt_output_t *output, int 
> input_bpc);
> void save_force_dsc_en(int drmfd, igt_output_t *output);

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

* Re: [igt-dev] [i-g-t V2 3/6] tests/i915/kms_dsc: Update bigjoiner pipe constraint
  2023-03-29 15:48   ` Sharma, Swati2
@ 2023-03-30  5:18     ` Modem, Bhanuprakash
  0 siblings, 0 replies; 12+ messages in thread
From: Modem, Bhanuprakash @ 2023-03-30  5:18 UTC (permalink / raw)
  To: Sharma, Swati2, igt-dev

Hi Swati,

On Wed-29-03-2023 09:18 pm, Sharma, Swati2 wrote:
> Hi Bhanu,
> 
> Shouldn't we use i915_pipe_output_combo_valid()?

In this test check_big_joiner_pipe_constraint() is specific to check 
bigjoiner support, so we must use igt_check_bigjoiner_support(). Where 
i915_pipe_output_combo_valid() is designed to check for all pipe/output 
constraints.

- Bhanu

> 
> On 28-Mar-23 6:02 PM, Bhanuprakash Modem wrote:
>> Instead of writing own logic at test level, use existing IGT
>> helper to check the bigjoiner support.
>>
>> Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
>> ---
>> tests/i915/kms_dsc.c        | 17 ++++++++---------
>> tests/i915/kms_dsc_helper.h |  2 --
>> 2 files changed, 8 insertions(+), 11 deletions(-)
>>
>> diff --git a/tests/i915/kms_dsc.c b/tests/i915/kms_dsc.c
>> index b3c5e60c773..9c6a7780acd 100644
>> --- a/tests/i915/kms_dsc.c
>> +++ b/tests/i915/kms_dsc.c
>> @@ -47,7 +47,6 @@ typedef struct {
>>     unsigned int plane_format;
>>     igt_output_t *output;
>>     int input_bpc;
>> -    int n_pipes;
>>     int disp_ver;
>>     enum pipe pipe;
>> } data_t;
>> @@ -76,15 +75,19 @@ static bool 
>> check_big_joiner_pipe_constraint(data_t *data)
>> {
>>     igt_output_t *output = data->output;
>>     drmModeModeInfo *mode = get_highres_mode(output);
>> +    bool ret = true;
>>
>> -    if (mode->hdisplay >= HDISPLAY_5K &&
>> -        data->pipe == (data->n_pipes - 1)) {
>> +    igt_output_set_pipe(output, data->pipe);
>> +    igt_output_override_mode(output, mode);
>> +
>> +    if (!igt_check_bigjoiner_support(&data->display)) {
>>         igt_debug("Pipe-%s not supported due to bigjoiner limitation\n",
>>                kmstest_pipe_name(data->pipe));
>> -        return false;
>> +        ret = false;
>>     }
>> +    igt_output_set_pipe(output, PIPE_NONE);
>>
>> -    return true;
>> +    return ret;
>> }
>>
>> static void test_cleanup(data_t *data)
>> @@ -206,7 +209,6 @@ static void test_dsc(data_t *data, enum 
>> dsc_test_type test_type, int bpc,
>> igt_main
>> {
>>     data_t data = {};
>> -    int i;
>>
>>     igt_fixture {
>>         data.drm_fd = drm_open_driver_master(DRIVER_INTEL);
>> @@ -217,9 +219,6 @@ igt_main
>>         igt_display_require(&data.display, data.drm_fd);
>>         igt_display_require_output(&data.display);
>>         igt_require(data.disp_ver >= 11);
>> -        data.n_pipes = 0;
>> -        for_each_pipe(&data.display, i)
>> -            data.n_pipes++;
>>     }
>>
>>     igt_describe("Tests basic display stream compression functionality 
>> if supported "
>> diff --git a/tests/i915/kms_dsc_helper.h b/tests/i915/kms_dsc_helper.h
>> index fe479dac472..b3828dcd44a 100644
>> --- a/tests/i915/kms_dsc_helper.h
>> +++ b/tests/i915/kms_dsc_helper.h
>> @@ -21,8 +21,6 @@
>> #include <fcntl.h>
>> #include <termios.h>
>>
>> -#define HDISPLAY_5K    5120
>> -
>> void force_dsc_enable(int drmfd, igt_output_t *output);
>> void force_dsc_enable_bpc(int drmfd, igt_output_t *output, int 
>> input_bpc);
>> void save_force_dsc_en(int drmfd, igt_output_t *output);

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

* Re: [igt-dev] [i-g-t V2 2/6] tests/i915/kms_big_joiner: Fix Bigjoiner checks
  2023-03-28 12:32 ` [igt-dev] [i-g-t V2 2/6] tests/i915/kms_big_joiner: " Bhanuprakash Modem
@ 2023-04-05  7:38   ` Karthik B S
  0 siblings, 0 replies; 12+ messages in thread
From: Karthik B S @ 2023-04-05  7:38 UTC (permalink / raw)
  To: Bhanuprakash Modem, igt-dev, swati2.sharma, ankit.k.nautiyal


On 3/28/2023 6:02 PM, Bhanuprakash Modem wrote:
> Bigjoiner will come in the picture when the resolution > 5K or
> clock > max dot-clock. Add a support to check the selected mode
> clock is greater than the max dot-clock.
>
> Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
> ---
>   tests/i915/kms_big_joiner.c | 67 +++++++++++++++++++++----------------
>   1 file changed, 38 insertions(+), 29 deletions(-)
>
> diff --git a/tests/i915/kms_big_joiner.c b/tests/i915/kms_big_joiner.c
> index 8be60ea1176..adc37be719d 100644
> --- a/tests/i915/kms_big_joiner.c
> +++ b/tests/i915/kms_big_joiner.c
> @@ -26,10 +26,13 @@
>   
>   #include "igt.h"
>   
> -#define MAX_HDISPLAY_PER_PIPE 5120
> -
>   IGT_TEST_DESCRIPTION("Test big joiner");
>   
> +typedef struct {
> +	uint32_t output;

Hi,

Could you please rename this as output_id, just to make it clear. Not a 
must have change, just a suggestion.

> +	drmModeModeInfo mode;
> +} big_joiner;
> +
>   typedef struct {
>   	int drm_fd;
>   	igt_display_t display;
> @@ -37,7 +40,7 @@ typedef struct {
>   	int n_pipes;
>   	enum pipe pipe1;
>   	enum pipe pipe2;
> -	uint32_t big_joiner_output[2];
> +	big_joiner big_joiner_output[2];
>   } data_t;
>   
>   static void test_invalid_modeset(data_t *data)
> @@ -91,7 +94,7 @@ static void test_basic_modeset(data_t *data)
>   	igt_display_reset(display);
>   
>   	for_each_connected_output(display, output) {
> -		if (data->big_joiner_output[0] == output->id) {
> +		if (data->big_joiner_output[0].output == output->id) {
>   			big_joiner_output = output;
>   			break;
>   		}
> @@ -99,9 +102,7 @@ static void test_basic_modeset(data_t *data)
>   
>   	igt_output_set_pipe(big_joiner_output, data->pipe1);
>   
> -	igt_sort_connector_modes(big_joiner_output->config.connector,
> -				 sort_drm_modes_by_res_dsc);
> -	mode = &big_joiner_output->config.connector->modes[0];
> +	mode = &data->big_joiner_output[0].mode;
>   	igt_output_override_mode(big_joiner_output, mode);
>   
>   	pipe = &display->pipes[data->pipe1];
> @@ -130,7 +131,7 @@ static void test_dual_display(data_t *data)
>   	igt_display_reset(display);
>   
>   	for_each_connected_output(display, output) {
> -		if (data->big_joiner_output[count] == output->id) {
> +		if (data->big_joiner_output[count].output == output->id) {
>   			big_joiner_output[count] = output;
>   			count++;
>   		}
> @@ -143,9 +144,7 @@ static void test_dual_display(data_t *data)
>   	igt_output_set_pipe(big_joiner_output[1], data->pipe2);
>   
>   	/* Set up first big joiner output on Pipe A*/
> -	igt_sort_connector_modes(big_joiner_output[0]->config.connector,
> -				 sort_drm_modes_by_res_dsc);
> -	mode = &big_joiner_output[0]->config.connector->modes[0];
> +	mode = &data->big_joiner_output[0].mode;
>   	igt_output_override_mode(big_joiner_output[0], mode);
>   
>   	pipe = &display->pipes[data->pipe1];
> @@ -156,9 +155,7 @@ static void test_dual_display(data_t *data)
>   	igt_plane_set_size(plane1, mode->hdisplay, mode->vdisplay);
>   
>   	/* Set up second big joiner output on Pipe C*/
> -	igt_sort_connector_modes(big_joiner_output[1]->config.connector,
> -				 sort_drm_modes_by_res_dsc);
> -	mode = &big_joiner_output[1]->config.connector->modes[0];
> +	mode = &data->big_joiner_output[1].mode;
>   	igt_output_override_mode(big_joiner_output[1], mode);
>   
>   	pipe = &display->pipes[data->pipe2];
> @@ -186,6 +183,8 @@ igt_main
>   	int valid_output = 0, i, count = 0, j = 0;
>   	uint16_t width = 0, height = 0;
>   	enum pipe pipe_seq[IGT_MAX_PIPES];
> +	int max_dotclock;
> +	bool retry = false;
>   
>   	igt_fixture {
>   		data.drm_fd = drm_open_driver_master(DRIVER_INTEL);
> @@ -194,13 +193,22 @@ igt_main
>   		igt_display_require(&data.display, data.drm_fd);
>   		igt_require(data.display.is_atomic);
>   
> +		max_dotclock = igt_get_max_dotclock(data.drm_fd);
> +retry:
>   		for_each_connected_output(&data.display, output) {
> +			/*
> +			 * Bigjoiner will come in the picture when
> +			 * the resolution > 5K or clock > max-dot-clock.
> +			 */
>   			igt_sort_connector_modes(output->config.connector,
> -						 sort_drm_modes_by_res_dsc);
> +						 retry ? sort_drm_modes_by_clk_dsc :
> +							 sort_drm_modes_by_res_dsc);
>   
>   			mode = &output->config.connector->modes[0];
> -			if (mode->hdisplay > MAX_HDISPLAY_PER_PIPE) {
> -				data.big_joiner_output[count++] = output->id;
> +			if (igt_bigjoiner_possible(mode, max_dotclock)) {
> +				data.big_joiner_output[count].output = output->id;
> +				memcpy(&data.big_joiner_output[count].mode, mode, sizeof(drmModeModeInfo));
> +				count++;
>   
>   				width = max(width, mode->hdisplay);
>   				height = max(height, mode->vdisplay);
> @@ -208,6 +216,11 @@ igt_main
>   			valid_output++;
>   		}
>   
> +		if (!count && !retry) {
> +			retry = true;
> +			goto retry;
> +		}
> +

I think this retry mechanism will fail in a case where two big joiner 
displays are connected.

Say we've the first display being 8k@30 and the second display being 
4k@120. Since count would've already incremented with the first display, 
we wouldn't do a retry and hence not detect the second display as a big 
joiner capable display. Could you please check this.

Instead of having a retry mechanism, I would suggest to have a check 
inside the for loop to try out both highest clk and res modes.

Thanks,
Karthik.B.S
>   		data.n_pipes = 0;
>   		for_each_pipe(&data.display, i) {
>   			data.n_pipes++;
> @@ -215,7 +228,7 @@ igt_main
>   			j++;
>   		}
>   
> -		igt_require_f(count > 0, "No output with 5k+ mode found\n");
> +		igt_require_f(count > 0, "No output with 5k+ mode (or) clock > max-dot-clock found\n");
>   
>   		igt_create_pattern_fb(data.drm_fd, width, height, DRM_FORMAT_XRGB8888,
>   				      DRM_FORMAT_MOD_LINEAR, &data.fb);
> @@ -237,14 +250,12 @@ igt_main
>   
>   		igt_display_reset(&data.display);
>   		for_each_connected_output(&data.display, output) {
> -			if (data.big_joiner_output[0] != output->id)
> +			if (data.big_joiner_output[0].output != output->id)
>   				continue;
>   
> -			igt_sort_connector_modes(output->config.connector,
> -						 sort_drm_modes_by_res_dsc);
> -
> +			mode = &data.big_joiner_output[0].mode;
>   			igt_output_set_pipe(output, data.pipe1);
> -			igt_output_override_mode(output, &output->config.connector->modes[0]);
> +			igt_output_override_mode(output, mode);
>   
>   			igt_dynamic_f("pipe-%s-%s",
>   				      kmstest_pipe_name(data.pipe1),
> @@ -261,17 +272,15 @@ igt_main
>   
>   				igt_display_reset(&data.display);
>   				for_each_connected_output(&data.display, output) {
> -					igt_sort_connector_modes(output->config.connector,
> -								 sort_drm_modes_by_res_dsc);
> -
> -					if (data.big_joiner_output[0] == output->id) {
> +					if (data.big_joiner_output[0].output == output->id) {
>   						first_output = output;
> +						mode = &data.big_joiner_output[0].mode;
> +
>   						igt_output_set_pipe(output, data.pipe1);
> -						igt_output_override_mode(output, &output->config.connector->modes[0]);
> +						igt_output_override_mode(output, mode);
>   					} else if (second_output == NULL) {
>   						second_output = output;
>   						igt_output_set_pipe(output, data.pipe2);
> -						igt_output_override_mode(output, &output->config.connector->modes[0]);
>   
>   						break;
>   					}

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

end of thread, other threads:[~2023-04-05  7:38 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-03-28 12:32 [igt-dev] [i-g-t V2 0/6] Fix Bigjoiner checks Bhanuprakash Modem
2023-03-28 12:32 ` [igt-dev] [i-g-t V2 1/6] lib/igt_kms: " Bhanuprakash Modem
2023-03-28 12:32 ` [igt-dev] [i-g-t V2 2/6] tests/i915/kms_big_joiner: " Bhanuprakash Modem
2023-04-05  7:38   ` Karthik B S
2023-03-28 12:32 ` [igt-dev] [i-g-t V2 3/6] tests/i915/kms_dsc: Update bigjoiner pipe constraint Bhanuprakash Modem
2023-03-29 15:48   ` Sharma, Swati2
2023-03-30  5:18     ` Modem, Bhanuprakash
2023-03-28 12:32 ` [igt-dev] [i-g-t V2 4/6] tests/kms_invalid_mode: Use helpers from IGT lib Bhanuprakash Modem
2023-03-28 12:32 ` [igt-dev] [i-g-t V2 5/6] tests/kms_flip: Fix Bigjoiner checks Bhanuprakash Modem
2023-03-28 12:32 ` [igt-dev] [i-g-t V2 6/6] tests/kms_setmode: " Bhanuprakash Modem
2023-03-28 13:15 ` [igt-dev] ✓ Fi.CI.BAT: success for Fix Bigjoiner checks (rev2) Patchwork
2023-03-28 23:14 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox