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 V4 38/52] tests/i915/kms_big_joiner: Negative tests for Bigjoiner
Date: Fri, 23 Sep 2022 10:35:37 +0530	[thread overview]
Message-ID: <20220923050537.2059166-1-bhanuprakash.modem@intel.com> (raw)
In-Reply-To: <20220922160004.2041598-39-bhanuprakash.modem@intel.com>

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.

V2:
- Fix redundant negative tests
V3:
- Drop duplicate logic

Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
Reviewed-by: Karthik B S <karthik.b.s@intel.com>
---
 tests/i915/kms_big_joiner.c | 187 +++++++++++++++---------------------
 1 file changed, 79 insertions(+), 108 deletions(-)

diff --git a/tests/i915/kms_big_joiner.c b/tests/i915/kms_big_joiner.c
index 7d400616..94823cc4 100644
--- a/tests/i915/kms_big_joiner.c
+++ b/tests/i915/kms_big_joiner.c
@@ -45,111 +45,42 @@ typedef struct {

 static void test_invalid_modeset(data_t *data)
 {
-	drmModeModeInfo *mode;
+	igt_output_t *output;
 	igt_display_t *display = &data->display;
-	igt_output_t *output, *big_joiner_output = NULL, *second_output = NULL;
 	int ret;
-	igt_pipe_t *pipe;
-	igt_plane_t *plane;
-
-	igt_display_reset(display);

-	for_each_connected_output(display, output) {
-		mode = &output->config.connector->modes[0];
+	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 (data->big_joiner_output[0].id == output->id) {
-			big_joiner_output = output;
-		} else if (second_output == NULL) {
-			second_output = output;
-		}
-	}
+		if (p == PIPE_NONE)
+			continue;

-	igt_output_set_pipe(big_joiner_output, data->pipe1);
+		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);

-	mode = &big_joiner_output->config.connector->modes[data->big_joiner_output[0].mode_number];
-	igt_output_override_mode(big_joiner_output, mode);
-
-	pipe = &display->pipes[data->pipe1];
-	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);
-
-	igt_display_commit2(display, COMMIT_ATOMIC);
+		pipe = &display->pipes[p];
+		plane = igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_PRIMARY);

-	igt_output_set_pipe(second_output, data->pipe2);
-
-	mode = igt_output_get_mode(second_output);
+		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);
+	}

-	pipe = &display->pipes[data->pipe2];
-	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);
+	igt_assert(!igt_check_bigjoiner_support(display));

 	/* 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_assert_lt(ret, 0);
-
-	igt_output_set_pipe(big_joiner_output, PIPE_NONE);
-	igt_output_set_pipe(second_output, PIPE_NONE);
-
-	pipe = &display->pipes[data->pipe1];
-	plane = igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_PRIMARY);
-
-	/*
-	 * Do not explicitly set the plane of the second output to NULL,
-	 * as it is the adjacent pipe to the big joiner output and
-	 * setting the big joiner plane to NULL will take care of this.
-	 */
-	igt_plane_set_fb(plane, NULL);
-	igt_display_commit2(display, COMMIT_ATOMIC);
-	igt_output_override_mode(big_joiner_output, NULL);
-
-	igt_output_set_pipe(second_output, data->pipe2);
-
-	mode = igt_output_get_mode(second_output);
-
-	pipe = &display->pipes[data->pipe2];
-	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);

+	igt_display_reset(&data->display);
 	igt_display_commit2(display, COMMIT_ATOMIC);

-	igt_output_set_pipe(big_joiner_output, data->pipe1);
-
-	mode = &big_joiner_output->config.connector->modes[data->big_joiner_output[0].mode_number];
-	igt_output_override_mode(big_joiner_output, mode);
-
-	pipe = &display->pipes[data->pipe1];
-	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 expected to fail as the adjacent pipe is already in use*/
-	ret = igt_display_try_commit_atomic(display, DRM_MODE_ATOMIC_TEST_ONLY |
-					    DRM_MODE_ATOMIC_ALLOW_MODESET, NULL);
 	igt_assert_lt(ret, 0);
-
-	igt_output_set_pipe(big_joiner_output, PIPE_NONE);
-	igt_output_set_pipe(second_output, PIPE_NONE);
-	igt_plane_set_fb(plane, NULL);
-
-	pipe = &display->pipes[data->pipe2];
-	plane = igt_pipe_get_plane_type(pipe, DRM_PLANE_TYPE_PRIMARY);
-	igt_plane_set_fb(plane, NULL);
-
-	igt_display_commit2(display, COMMIT_ATOMIC);
-
-	igt_output_override_mode(big_joiner_output, NULL);
 }

 static void test_basic_modeset(data_t *data)
@@ -261,19 +192,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,14 +232,56 @@ 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]))
+		data.pipe1 = pipe_seq[j - 1];
+
+		igt_display_reset(&data.display);
+		for_each_connected_output(&data.display, output) {
+			if (data.big_joiner_output[0].id != output->id)
+				continue;
+
+			igt_sort_connector_modes(output->config.connector,
+						 sort_drm_modes_by_res_dsc);
+
+			igt_output_set_pipe(output, data.pipe1);
+			igt_output_override_mode(output, &output->config.connector->modes[0]);
+
+			igt_dynamic_f("pipe-%s-%s",
+				      kmstest_pipe_name(data.pipe1),
+				      igt_output_name(output))
 				test_invalid_modeset(&data);
 		}
+
+		if(valid_output > 1) {
+			for (i = 0; i < data.n_pipes - 1; i++) {
+				igt_output_t *first_output = NULL, *second_output = NULL;
+
+				data.pipe1 = pipe_seq[i];
+				data.pipe2 = pipe_seq[i + 1];
+
+				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].id == output->id) {
+						first_output = output;
+						igt_output_set_pipe(output, data.pipe1);
+						igt_output_override_mode(output, &output->config.connector->modes[0]);
+					} 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]);
+					}
+				}
+
+				igt_dynamic_f("pipe-%s-%s-pipe-%s-%s",
+					      kmstest_pipe_name(data.pipe1),
+					      igt_output_name(first_output),
+					      kmstest_pipe_name(data.pipe2),
+					      igt_output_name(second_output))
+					test_invalid_modeset(&data);
+			}
+		}
 	}

 	igt_describe("Verify simultaneous modeset on 2 big joiner outputs");
--
2.37.3

  reply	other threads:[~2022-09-23  5:08 UTC|newest]

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

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=20220923050537.2059166-1-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.