All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Gupta, Nidhi1" <nidhi1.gupta@intel.com>
To: "igt-dev@lists.freedesktop.org" <igt-dev@lists.freedesktop.org>
Subject: Re: [igt-dev] [i-g-t v5 39/52] tests/i915/kms_busy: Add support for Bigjoiner
Date: Wed, 28 Dec 2022 04:10:19 +0000	[thread overview]
Message-ID: <PH7PR11MB6006A34FB1D29D8E300F343AC5F29@PH7PR11MB6006.namprd11.prod.outlook.com> (raw)
In-Reply-To: <PH7PR11MB600698F43943115166E19407C5ED9@PH7PR11MB6006.namprd11.prod.outlook.com>

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

On Tue, 2022-11-15 at 08:43 +0530, Bhanuprakash Modem wrote:
>This patch will add a check to Skip the subtest if a selected pipe/output
>combo won't support Bigjoiner or 8K mode.
>
>Example:
>* Pipe-D wont support a mode > 5K
>* To use 8K mode on a pipe then consecutive pipe must be available & free.
>
>V2: - Use updated helper name
>
>Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com<mailto:bhanuprakash.modem@intel.com>>
Reviewed-by: Nidhi Gupta <nidhi1.gupta@intel.com>
>---
>tests/i915/kms_busy.c | 106 ++++++++++++++++++++++++++++--------------
> 1 file changed, 71 insertions(+), 35 deletions(-)
>diff --git a/tests/i915/kms_busy.c b/tests/i915/kms_busy.c
>index b0642612..20d3058f 100644
>--- a/tests/i915/kms_busy.c
>+++ b/tests/i915/kms_busy.c
>@@ -32,15 +32,12 @@  IGT_TEST_DESCRIPTION("Basic check of KMS ABI with busy framebuffers.");
>
>static bool all_pipes = false;
>
>-static igt_output_t *
>-set_fb_on_crtc(igt_display_t *dpy, int pipe, struct igt_fb *fb)
>+static void
>+set_fb_on_crtc(igt_display_t *dpy, int pipe,
>+                  igt_output_t *output, struct igt_fb *fb)
> {
>             drmModeModeInfoPtr mode;
>             igt_plane_t *primary;
>-           igt_output_t *output;
>-
>-           output = igt_get_single_output_for_pipe(dpy, pipe);
>-           igt_require(output);
>
>             igt_output_set_pipe(output, pipe);
>             mode = igt_output_get_mode(output);
>@@ -51,8 +48,6 @@  set_fb_on_crtc(igt_display_t *dpy, int pipe, struct igt_fb *fb)
>
>             primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
>             igt_plane_set_fb(primary, fb);
>-
>-           return output;
> }
>
> static void do_cleanup_display(igt_display_t *dpy)
>@@ -136,18 +131,23 @@  static void flip_to_fb(igt_display_t *dpy, int pipe,
>             put_ahnd(ahnd);
> }
>
>-static void test_flip(igt_display_t *dpy, int pipe, bool modeset)
>+static void test_flip(igt_display_t *dpy, int pipe,
>+                                igt_output_t *output, bool modeset)
>{
>             struct igt_fb fb[2];
>             int warmup[] = { 0, 1, 0, -1 };
>             struct timespec tv = {};
>-           igt_output_t *output;
>             int timeout;
>
>             if (modeset)
>                            igt_require(dpy->is_atomic);
>
>-           output = set_fb_on_crtc(dpy, pipe, &fb[0]);
>+           igt_info("Using (pipe %s + %s) to run the subtest.\n",
>+                          kmstest_pipe_name(pipe), igt_output_name(output));
>+
>+           igt_display_reset(dpy);
>+
>+           set_fb_on_crtc(dpy, pipe, output, &fb[0]);
>             igt_display_commit2(dpy, COMMIT_LEGACY);
>
>             igt_create_pattern_fb(dpy->drm_fd,
>@@ -224,13 +224,18 @@  static void test_atomic_commit_hang(igt_display_t *dpy, igt_plane_t *primary,
> }
>
> static void test_hang(igt_display_t *dpy,
>-                                enum pipe pipe, bool modeset, bool hang_newfb)
>+                                enum pipe pipe, igt_output_t *output,
>+                               bool modeset, bool hang_newfb)
> {
>             struct igt_fb fb[2];
>-           igt_output_t *output;
>             igt_plane_t *primary;
>
>-           output = set_fb_on_crtc(dpy, pipe, &fb[0]);
>+           igt_info("Using (pipe %s + %s) to run the subtest.\n",
>+                          kmstest_pipe_name(pipe), igt_output_name(output));
>+
>+           igt_display_reset(dpy);
>+
>+           set_fb_on_crtc(dpy, pipe, output, &fb[0]);
>             igt_display_commit2(dpy, COMMIT_ATOMIC);
>             primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
>
>@@ -265,16 +270,22 @@  static void test_hang(igt_display_t *dpy,
>             igt_remove_fb(dpy->drm_fd, &fb[0]);
> }
>
>-static void test_pageflip_modeset_hang(igt_display_t *dpy, enum pipe pipe)
>+static void
>+test_pageflip_modeset_hang(igt_display_t *dpy,
>+                                            igt_output_t *output, enum pipe pipe)
> {
>             struct igt_fb fb;
>             struct drm_event_vblank ev;
>-           igt_output_t *output;
>             igt_plane_t *primary;
>             igt_spin_t *t;
>             uint64_t ahnd = get_reloc_ahnd(dpy->drm_fd, 0);
>
>-           output = set_fb_on_crtc(dpy, pipe, &fb);
>+           igt_info("Using (pipe %s + %s) to run the subtest.\n",
>+                          kmstest_pipe_name(pipe), igt_output_name(output));
>+
>+           igt_display_reset(dpy);
>+
>+           set_fb_on_crtc(dpy, pipe, output, &fb);
>             primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
>
>             igt_display_commit2(dpy, dpy->is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY);
>@@ -299,6 +310,22 @@  static void test_pageflip_modeset_hang(igt_display_t *dpy, enum pipe pipe)
>             igt_remove_fb(dpy->drm_fd, &fb);
> }
>
>+static bool
>+pipe_output_combo_valid(igt_display_t *dpy,
>+                                         igt_output_t *output, enum pipe pipe)
>+{
>+           bool ret = true;
>+
>+           igt_display_reset(dpy);
>+
>+           igt_output_set_pipe(output, pipe);
>+           if (!i915_pipe_output_combo_valid(dpy))
>+                          ret = false;
>+           igt_output_set_pipe(output, PIPE_NONE);
>+
>+           return ret;
>+}
>+
> static int opt_handler(int opt, int opt_index, void *data)
> {
>             switch (opt) {
>@@ -346,7 +373,8 @@  igt_main_args("e", NULL, help_str, opt_handler, NULL)
> {
>             igt_display_t display = { .drm_fd = -1, .n_pipes = IGT_MAX_PIPES };
>
>-           enum pipe active_pipes[IGT_MAX_PIPES];
>+           enum pipe pipe, active_pipes[IGT_MAX_PIPES];
>+           igt_output_t *output;
>             uint32_t last_pipe = 0;
>             int i;
>             struct {
>@@ -367,8 +395,6 @@  igt_main_args("e", NULL, help_str, opt_handler, NULL)
>             int fd;
>
>             igt_fixture {
>-                          enum pipe pipe;
>-
>                            fd = drm_open_driver_master(DRIVER_INTEL);
>
>                            igt_require_gem(fd);
>@@ -391,63 +417,72 @@  igt_main_args("e", NULL, help_str, opt_handler, NULL)
>
>             igt_describe("Test for basic check of KMS ABI with busy framebuffers.");
>             igt_subtest_with_dynamic("basic") { /* just run on the first pipe */
>-                          enum pipe pipe;
>+                          for_each_pipe_with_single_output(&display, pipe, output) {
>+                                         if (!pipe_output_combo_valid(&display, output, pipe))
>+                                                        continue;
>
>-                          for_each_pipe(&display, pipe) {
>                                           igt_dynamic("flip")
>-                                                        test_flip(&display, pipe, false);
>+                                                        test_flip(&display, pipe, output, false);
>                                           igt_dynamic("modeset")
>-                                                        test_flip(&display, pipe, true);
>+                                                        test_flip(&display, pipe, output, true);
>                                           break;
>                            }
>             }
>
>             igt_subtest_with_dynamic("basic-hang") {
>-                          enum pipe pipe;
>                            igt_hang_t hang = igt_allow_hang(display.drm_fd, 0, 0);
>                            errno = 0;
>
>-                          for_each_pipe(&display, pipe) {
>+                          for_each_pipe_with_single_output(&display, pipe, output) {
>+                                         if (!pipe_output_combo_valid(&display, output, pipe))
>+                                                        continue;
>+
>                                           if (!all_pipes && pipe != active_pipes[0] &&
>                                                                           pipe != active_pipes[last_pipe])
>                                                          continue;
>
>                                           igt_dynamic_f("flip-pipe-%s", kmstest_pipe_name(pipe))
>-                                                        test_flip(&display, pipe, false);
>+                                                        test_flip(&display, pipe, output, false);
>                                           igt_dynamic_f("modeset-pipe-%s", kmstest_pipe_name(pipe))
>-                                                        test_flip(&display, pipe, true);
>+                                                        test_flip(&display, pipe, output, true);
>                            }
>
>                            igt_disallow_hang(display.drm_fd, hang);
>             }
>
>             igt_subtest_with_dynamic("extended-pageflip-modeset-hang-oldfb") {
>-                          enum pipe pipe;
>                            igt_hang_t hang = igt_allow_hang(display.drm_fd, 0, 0);
>                            errno = 0;
>
>-                          for_each_pipe(&display, pipe) {
>+                          for_each_pipe_with_single_output(&display, pipe, output) {
>+                                         if (!pipe_output_combo_valid(&display, output, pipe))
>+                                                        continue;
>+
>                                           if (!all_pipes && pipe != active_pipes[0] &&
>                                                                           pipe != active_pipes[last_pipe])
>                                                          continue;
>
>                                           igt_dynamic_f("pipe-%s", kmstest_pipe_name(pipe))
>-                                                        test_pageflip_modeset_hang(&display, pipe);
>+                                                        test_pageflip_modeset_hang(&display, output, pipe);
>                            }
>
>                            igt_disallow_hang(display.drm_fd, hang);
>             }
>
>             for (i = 0; i < sizeof(tests) / sizeof (tests[0]); i++) {
>+                          igt_fixture
>+                                         igt_require(display.is_atomic);
>+
>                            igt_subtest_with_dynamic(tests[i].name) {
>-                                         enum pipe pipe;
>                                           igt_hang_t hang;
>                                           errno = 0;
>
>-                                         igt_require(display.is_atomic);
>                                           hang = igt_allow_hang(display.drm_fd, 0, 0);
>
>-                                         for_each_pipe(&display, pipe) {
>+                                         for_each_pipe_with_single_output(&display, pipe, output) {
>+                                                        if (!pipe_output_combo_valid(&display, output, pipe))
>+                                                                       continue;
>+
>                                                          if (!all_pipes && pipe != active_pipes[0] &&
>                                                                                          pipe != active_pipes[last_pipe])
>                                                                         continue;
>@@ -456,7 +491,8 @@  igt_main_args("e", NULL, help_str, opt_handler, NULL)
>                                                                         if (tests[i].reset)
>                                                                                        igt_set_module_param_int(display.drm_fd, "force_reset_modeset_test", 1);
>
>-                                                                       test_hang(&display, pipe, tests[i].modeset, tests[i].hang_newfb);
>+                                                                       test_hang(&display, pipe, output,
>+                                                                                        tests[i].modeset, tests[i].hang_newfb);
>
>                                                                         if (tests[i].reset)
>                                                                                        igt_set_module_param_int(display.drm_fd, "force_reset_modeset_test", 0);
>



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

  reply	other threads:[~2022-12-28  4:10 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-12-27  5:27 [igt-dev] [i-g-t v5 05/52] tests/kms_atomic_interruptible: Add support for Bigjoiner Gupta, Nidhi1
2022-12-28  4:10 ` Gupta, Nidhi1 [this message]
2022-12-29  3:26   ` [igt-dev] [i-g-t v5 10/52] tests/kms_concurrent: " Gupta, Nidhi1
2022-12-29  5:11     ` [igt-dev] [i-g-t v5 42/52] tests/i915/kms_draw_crc: " Gupta, Nidhi1
2022-12-30 14:37       ` [igt-dev] [i-g-t v5 46/52] tests/i915/kms_frontbuffer_tracking: " Gupta, Nidhi1
2022-12-30 14:46         ` [igt-dev] [i-g-t v5 18/52] tests/kms_invalid_mode: " Gupta, Nidhi1
2022-12-30 15:27           ` [igt-dev] [i-g-t v5 33/52] tests/kms_sequence: " Gupta, Nidhi1
  -- strict thread matches above, loose matches on Subject: below --
2022-11-15 17:08 [igt-dev] [i-g-t v5 00/52] Add IGT " Bhanuprakash Modem
2022-11-15 17:08 ` [igt-dev] [i-g-t v5 39/52] tests/i915/kms_busy: Add " Bhanuprakash Modem
2022-11-15 16:58 [igt-dev] [i-g-t v5 00/52] Add IGT " Bhanuprakash Modem
2022-11-15 16:59 ` [igt-dev] [i-g-t v5 39/52] tests/i915/kms_busy: Add " 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=PH7PR11MB6006A34FB1D29D8E300F343AC5F29@PH7PR11MB6006.namprd11.prod.outlook.com \
    --to=nidhi1.gupta@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.