From: "Nautiyal, Ankit K" <ankit.k.nautiyal@intel.com>
To: Kunal Joshi <kunal1.joshi@intel.com>, <igt-dev@lists.freedesktop.org>
Cc: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com>,
Karthik B S <karthik.b.s@intel.com>,
Bhanuprakash Modem <bhanuprakash.modem@intel.com>
Subject: Re: [PATCH i-g-t 4/4] tests/intel/kms_big_joiner: add tests for force joiner
Date: Thu, 28 Mar 2024 12:36:02 +0530 [thread overview]
Message-ID: <84e251ef-45bd-4783-812b-810ad1827913@intel.com> (raw)
In-Reply-To: <20240325165136.1265895-5-kunal1.joshi@intel.com>
On 3/25/2024 10:21 PM, Kunal Joshi wrote:
> add tests for force joiner
Need to addwhy we need to use force joiner, and the subtests added.
>
> v2: check status after forcing (Ankit)
> take out commoon code (Ankit)
> fix missing force_joiner (Ankit)
>
> Cc: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com>
> Cc: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
> Cc: Karthik B S <karthik.b.s@intel.com>
> Cc: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
> Signed-off-by: Kunal Joshi <kunal1.joshi@intel.com>
> ---
> tests/intel/kms_big_joiner.c | 102 +++++++++++++++++++++++++++++------
> 1 file changed, 85 insertions(+), 17 deletions(-)
>
> diff --git a/tests/intel/kms_big_joiner.c b/tests/intel/kms_big_joiner.c
> index b57996212..fd6baccc3 100644
> --- a/tests/intel/kms_big_joiner.c
> +++ b/tests/intel/kms_big_joiner.c
> @@ -44,9 +44,14 @@
> * SUBTEST: basic
> * Description: Verify the basic modeset on big joiner mode on all pipes
> *
> + * SUBTEST: invalid-modeset-force-joiner
> + * Description: Verify if the modeset on the adjoining pipe is rejected when
> + * the pipe is active with a force joiner modeset
> + *
> + * SUBTEST: basic-force-joiner
> + * Description: Verify the basic modeset on force joiner mode on all pipes
I think we need to document that force bigjoiner will be used to test
bigjoiner funtionality with a non bigjoiner panel.
Where the config is already having, bigjoiner, force bigjoiner wouldnt
be used.
With the above documentation changes, this is:
Reviewed-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
> */
> -
> -IGT_TEST_DESCRIPTION("Test big joiner");
> +IGT_TEST_DESCRIPTION("Test big joiner / force joiner");
>
> #define INVALID_TEST_OUTPUT 2
>
> @@ -79,6 +84,19 @@ static void set_all_master_pipes_for_platform(data_t *data)
> }
> }
>
> +static void toggle_force_joiner_on_all_non_big_joiner_outputs(data_t *data, bool toggle)
> +{
> + bool status;
> + igt_output_t *output;
> + int i;
> +
> + for (i = 0; i < data->non_big_joiner_output_count; i++) {
> + output = data->non_big_joiner_output[i];
> + status = igt_force_and_check_bigjoiner_status(data->drm_fd, output->name, toggle);
> + igt_assert_f(status, "Failed to toggle force joiner\n");
> + }
> +}
> +
> static enum pipe get_next_master_pipe(data_t *data, unsigned int available_pipe_mask)
> {
> if ((data->master_pipes & available_pipe_mask) == 0)
> @@ -105,7 +123,7 @@ static enum pipe setup_pipe(data_t *data, igt_output_t *output, enum pipe pipe,
> return master_pipe;
> }
>
> -static void test_single_joiner(data_t *data, int output_count)
> +static void test_single_joiner(data_t *data, int output_count, bool force_joiner)
> {
> int i;
> enum pipe pipe, master_pipe;
> @@ -116,7 +134,7 @@ static void test_single_joiner(data_t *data, int output_count)
> igt_fb_t fb;
> drmModeModeInfo *mode;
>
> - outputs = data->big_joiner_output;
> + outputs = force_joiner ? data->non_big_joiner_output : data->big_joiner_output;
>
> for (i = 0; i < output_count; i++) {
> output = outputs[i];
> @@ -137,7 +155,7 @@ static void test_single_joiner(data_t *data, int output_count)
> }
> }
>
> -static void test_multi_joiner(data_t *data, int output_count)
> +static void test_multi_joiner(data_t *data, int output_count, bool force_joiner)
> {
> int i;
> unsigned int available_pipe_mask;
> @@ -149,7 +167,7 @@ static void test_multi_joiner(data_t *data, int output_count)
> drmModeModeInfo *mode;
>
> available_pipe_mask = BIT(data->n_pipes) - 1;
> - outputs = data->big_joiner_output;
> + outputs = force_joiner ? data->non_big_joiner_output : data->big_joiner_output;
>
> igt_display_reset(&data->display);
> for (i = 0; i < output_count; i++) {
> @@ -177,7 +195,7 @@ static void test_multi_joiner(data_t *data, int output_count)
> }
>
> static void test_invalid_modeset_two_joiner(data_t *data,
> - bool combined)
> + bool combined, bool force_joiner)
> {
> int i, j, ret;
> unsigned int available_pipe_mask;
> @@ -190,7 +208,8 @@ static void test_invalid_modeset_two_joiner(data_t *data,
> drmModeModeInfo *mode;
>
> available_pipe_mask = BIT(data->n_pipes) - 1;
> - outputs = combined ? data->combined_output : data->big_joiner_output;
> + outputs = force_joiner ? data->non_big_joiner_output :
> + combined ? data->combined_output : data->big_joiner_output;
>
> for (i = 0; i < data->n_pipes-1; i++) {
> igt_display_reset(&data->display);
> @@ -223,7 +242,7 @@ static void test_invalid_modeset_two_joiner(data_t *data,
> }
> }
>
> -static void test_big_joiner_on_last_pipe(data_t *data)
> +static void test_joiner_on_last_pipe(data_t *data, bool force_joiner)
> {
> int i, len, ret;
> igt_output_t **outputs;
> @@ -232,8 +251,8 @@ static void test_big_joiner_on_last_pipe(data_t *data)
> igt_fb_t fb;
> drmModeModeInfo *mode;
>
> - len = data->big_joiner_output_count;
> - outputs = data->big_joiner_output;
> + len = force_joiner ? data->non_big_joiner_output_count : data->big_joiner_output_count;
> + outputs = force_joiner ? data->non_big_joiner_output : data->big_joiner_output;
>
> for (i = 0; i < len; i++) {
> igt_display_reset(&data->display);
> @@ -257,12 +276,14 @@ static void test_big_joiner_on_last_pipe(data_t *data)
>
> igt_main
> {
> + bool force_joiner_supported;
> int i, j;
> igt_output_t *output;
> drmModeModeInfo mode;
> data_t data;
>
> igt_fixture {
> + force_joiner_supported = false;
> data.big_joiner_output_count = 0;
> data.non_big_joiner_output_count = 0;
> data.combined_output_count = 0;
> @@ -290,7 +311,10 @@ igt_main
> data.big_joiner_output[data.big_joiner_output_count++] = output;
> igt_output_override_mode(output, &mode);
> } else {
> - data.non_big_joiner_output[data.non_big_joiner_output_count++] = output;
> + if (igt_has_force_joiner_debugfs(data.drm_fd, output)) {
> + force_joiner_supported = true;
> + data.non_big_joiner_output[data.non_big_joiner_output_count++] = output;
> + }
> }
> data.output_count++;
> }
> @@ -313,10 +337,10 @@ igt_main
> igt_require_f(data.n_pipes > 1,
> "Minimum 2 pipes required\n");
> igt_dynamic_f("single-joiner")
> - test_single_joiner(&data, data.big_joiner_output_count);
> + test_single_joiner(&data, data.big_joiner_output_count, false);
> if (data.big_joiner_output_count > 1)
> igt_dynamic_f("multi-joiner")
> - test_multi_joiner(&data, data.big_joiner_output_count);
> + test_multi_joiner(&data, data.big_joiner_output_count, false);
> }
>
> igt_describe("Verify if the modeset on the adjoining pipe is rejected "
> @@ -326,13 +350,57 @@ igt_main
> igt_require_f(data.n_pipes > 1, "Minimum of 2 pipes are required\n");
> if (data.big_joiner_output_count >= 1)
> igt_dynamic_f("big_joiner_on_last_pipe")
> - test_big_joiner_on_last_pipe(&data);
> + test_joiner_on_last_pipe(&data, false);
> if (data.big_joiner_output_count > 1)
> igt_dynamic_f("invalid_combinations")
> - test_invalid_modeset_two_joiner(&data, false);
> + test_invalid_modeset_two_joiner(&data, false, false);
> if (data.combined_output_count)
> igt_dynamic_f("combined_output")
> - test_invalid_modeset_two_joiner(&data, true);
> + test_invalid_modeset_two_joiner(&data, true, false);
> + }
> +
> + igt_describe("Verify the basic modeset on big joiner mode on all pipes");
> + igt_subtest_with_dynamic("basic-force-joiner") {
> + igt_require_f(force_joiner_supported,
> + "force joiner not supported on this platform or none of the connected output supports it\n");
> + igt_require_f(data.non_big_joiner_output_count > 0,
> + "No non big joiner output found\n");
> + igt_require_f(data.n_pipes > 1,
> + "Minimum 2 pipes required\n");
> + igt_dynamic_f("single") {
> + toggle_force_joiner_on_all_non_big_joiner_outputs(&data, true);
> + test_single_joiner(&data, data.non_big_joiner_output_count, true);
> + toggle_force_joiner_on_all_non_big_joiner_outputs(&data, false);
> + }
> + if (data.non_big_joiner_output_count > 1) {
> + igt_dynamic_f("multi") {
> + toggle_force_joiner_on_all_non_big_joiner_outputs(&data, true);
> + test_multi_joiner(&data, data.non_big_joiner_output_count, true);
> + toggle_force_joiner_on_all_non_big_joiner_outputs(&data, false);
> + }
> + }
> + }
> +
> + igt_subtest_with_dynamic("invalid-modeset-force-joiner") {
> + igt_require_f(force_joiner_supported,
> + "force joiner not supported on this platform or none of the connected output supports it\n");
> + igt_require_f(data.non_big_joiner_output_count > 0, "Non big joiner output not found\n");
> + igt_require_f(data.n_pipes > 1, "Minimum of 2 pipes are required\n");
> +
> + if (data.non_big_joiner_output_count >= 1) {
> + igt_dynamic_f("big_joiner_on_last_pipe") {
> + toggle_force_joiner_on_all_non_big_joiner_outputs(&data, true);
> + test_joiner_on_last_pipe(&data, true);
> + toggle_force_joiner_on_all_non_big_joiner_outputs(&data, false);
> + }
> + }
> + if (data.non_big_joiner_output_count > 1) {
> + igt_dynamic_f("invalid_combinations") {
> + toggle_force_joiner_on_all_non_big_joiner_outputs(&data, true);
> + test_invalid_modeset_two_joiner(&data, false, true);
> + toggle_force_joiner_on_all_non_big_joiner_outputs(&data, false);
> + }
> + }
> }
>
> igt_fixture {
next prev parent reply other threads:[~2024-03-28 7:06 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-03-25 16:51 [PATCH i-g-t 0/4] revamp big joiner test Kunal Joshi
2024-03-25 16:51 ` [PATCH i-g-t 1/4] lib/igt_kms: move bigjoiner_mode_found to lib Kunal Joshi
2024-03-25 16:51 ` [PATCH i-g-t 2/4] tests/intel/kms_big_joiner: revamp bigjoiner Kunal Joshi
2024-03-28 6:59 ` Nautiyal, Ankit K
2024-03-25 16:51 ` [PATCH i-g-t 3/4] lib/igt_kms: add helper to enable/disable force joiner Kunal Joshi
2024-03-28 7:11 ` Nautiyal, Ankit K
2024-03-25 16:51 ` [PATCH i-g-t 4/4] tests/intel/kms_big_joiner: add tests for " Kunal Joshi
2024-03-28 7:06 ` Nautiyal, Ankit K [this message]
2024-03-25 20:52 ` ✓ CI.xeBAT: success for revamp big joiner test (rev9) Patchwork
2024-03-25 20:54 ` ✓ Fi.CI.BAT: " Patchwork
2024-03-26 4:17 ` ✗ Fi.CI.IGT: failure " Patchwork
-- strict thread matches above, loose matches on Subject: below --
2024-03-28 8:39 [PATCH i-g-t 0/4] revamp big joiner test Kunal Joshi
2024-03-28 8:39 ` [PATCH i-g-t 4/4] tests/intel/kms_big_joiner: add tests for force joiner Kunal Joshi
2024-03-21 18:28 [PATCH i-g-t 0/4] revamp big joiner test Kunal Joshi
2024-03-21 18:28 ` [PATCH i-g-t 4/4] tests/intel/kms_big_joiner: add tests for force joiner Kunal Joshi
2024-03-10 14:27 [PATCH i-g-t 0/4] revamp big joiner test Kunal Joshi
2024-03-10 14:27 ` [PATCH i-g-t 4/4] tests/intel/kms_big_joiner: add tests for force joiner Kunal Joshi
2024-03-20 13:17 ` Nautiyal, Ankit K
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=84e251ef-45bd-4783-812b-810ad1827913@intel.com \
--to=ankit.k.nautiyal@intel.com \
--cc=bhanuprakash.modem@intel.com \
--cc=igt-dev@lists.freedesktop.org \
--cc=karthik.b.s@intel.com \
--cc=kunal1.joshi@intel.com \
--cc=stanislav.lisovskiy@intel.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox