From: Jeevan B <jeevan.b@intel.com>
To: igt-dev@lists.freedesktop.org
Cc: kunal1.joshi@intel.com, Jeevan B <jeevan.b@intel.com>,
Ankit Nautiyal <ankit.k.nautiyal@intel.com>
Subject: [PATCH i-g-t 4/4] lib/igt_kms: Add 6k resolution support for a single CRTC
Date: Wed, 4 Dec 2024 11:39:24 +0530 [thread overview]
Message-ID: <20241204060924.1155970-5-jeevan.b@intel.com> (raw)
In-Reply-To: <20241204060924.1155970-1-jeevan.b@intel.com>
increase big_joiner limitation to 6k from 5k for display version
greater than 30.
v2: Update fd to drm_fd and few minor styling fixes.
Bspec: 68858
Apart from lib following tests are modified:
tests/intel/kms_pm_lpsp.c
tests/kms_flip.c
tests/kms_setmode.c
Signed-off-by: Jeevan B <jeevan.b@intel.com>
Reviewed-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
---
lib/igt_kms.c | 24 ++++++++++++++++--------
lib/igt_kms.h | 5 +++--
tests/intel/kms_pm_lpsp.c | 4 ++--
tests/kms_flip.c | 4 ++--
tests/kms_setmode.c | 4 ++--
5 files changed, 25 insertions(+), 16 deletions(-)
diff --git a/lib/igt_kms.c b/lib/igt_kms.c
index 6fb5822ee..11245dd12 100644
--- a/lib/igt_kms.c
+++ b/lib/igt_kms.c
@@ -6355,6 +6355,7 @@ int igt_get_max_dotclock(int fd)
/**
* igt_bigjoiner_possible:
+ * @drm_fd: drm file descriptor
* @mode: libdrm mode
* @max_dotclock: Max pixel clock frequency
*
@@ -6363,10 +6364,15 @@ int igt_get_max_dotclock(int fd)
*
* Returns: True if mode requires Bigjoiner, else False.
*/
-bool igt_bigjoiner_possible(drmModeModeInfo *mode, int max_dotclock)
+bool igt_bigjoiner_possible(int drm_fd, drmModeModeInfo *mode, int max_dotclock)
{
- return (mode->hdisplay > MAX_HDISPLAY_PER_PIPE ||
- mode->clock > max_dotclock);
+ int max_hdisplay, dev_id;
+
+ dev_id = intel_get_drm_devid(drm_fd);
+ max_hdisplay = (intel_display_ver(dev_id) >= 30) ? HDISPLAY_6K_PER_PIPE :
+ HDISPLAY_5K_PER_PIPE;
+
+ return (mode->hdisplay > max_hdisplay || mode->clock > max_dotclock);
}
/**
@@ -6387,10 +6393,10 @@ bool bigjoiner_mode_found(int drm_fd, drmModeConnector *connector,
bool found = false;
igt_sort_connector_modes(connector, sort_drm_modes_by_res_dsc);
- found = igt_bigjoiner_possible(&connector->modes[0], max_dotclock);
+ found = igt_bigjoiner_possible(drm_fd, &connector->modes[0], max_dotclock);
if (!found) {
igt_sort_connector_modes(connector, sort_drm_modes_by_clk_dsc);
- found = igt_bigjoiner_possible(&connector->modes[0], max_dotclock);
+ found = igt_bigjoiner_possible(drm_fd, &connector->modes[0], max_dotclock);
}
if (found)
*mode = connector->modes[0];
@@ -6409,7 +6415,7 @@ bool bigjoiner_mode_found(int drm_fd, drmModeConnector *connector,
*/
bool igt_ultrajoiner_possible(drmModeModeInfo *mode, int max_dotclock)
{
- return (mode->hdisplay > 2 * MAX_HDISPLAY_PER_PIPE ||
+ return (mode->hdisplay > 2 * HDISPLAY_5K_PER_PIPE ||
mode->clock > 2 * max_dotclock);
}
@@ -6605,7 +6611,8 @@ bool igt_check_bigjoiner_support(igt_display_t *display)
* - current & previous crtcs are consecutive
*/
for (i = 0; i < pipes_in_use; i++) {
- if (pipes[i].force_joiner || igt_bigjoiner_possible(pipes[i].mode, max_dotclock)) {
+ if (pipes[i].force_joiner ||
+ igt_bigjoiner_possible(display->drm_fd, pipes[i].mode, max_dotclock)) {
igt_info("pipe-%s-%s: (Max dot-clock: %d KHz), force joiner: %s\n",
kmstest_pipe_name(pipes[i].idx),
igt_output_name(pipes[i].output),
@@ -6632,7 +6639,8 @@ bool igt_check_bigjoiner_support(igt_display_t *display)
}
}
- if ((i > 0) && (pipes[i - 1].force_joiner || igt_bigjoiner_possible(pipes[i - 1].mode, max_dotclock))) {
+ if ((i > 0) && (pipes[i - 1].force_joiner ||
+ igt_bigjoiner_possible(display->drm_fd, pipes[i - 1].mode, max_dotclock))) {
igt_info("pipe-%s-%s: (Max dot-clock: %d KHz), force joiner: %s\n",
kmstest_pipe_name(pipes[i - 1].idx),
igt_output_name(pipes[i - 1].output),
diff --git a/lib/igt_kms.h b/lib/igt_kms.h
index c2fbbb5b0..8810123fb 100644
--- a/lib/igt_kms.h
+++ b/lib/igt_kms.h
@@ -146,7 +146,8 @@ const char *kmstest_scaling_filter_str(int filter);
const char *kmstest_dsc_output_format_str(int output_format);
void kmstest_dump_mode(drmModeModeInfo *mode);
-#define MAX_HDISPLAY_PER_PIPE 5120
+#define HDISPLAY_6K_PER_PIPE 6144
+#define HDISPLAY_5K_PER_PIPE 5120
int kmstest_get_pipe_from_crtc_id(int fd, int crtc_id);
void kmstest_set_vt_graphics_mode(void);
@@ -1241,7 +1242,7 @@ 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_bigjoiner_possible(int drm_fd, drmModeModeInfo *mode, int max_dotclock);
bool bigjoiner_mode_found(int drm_fd, drmModeConnector *connector,
int max_dotclock, drmModeModeInfo *mode);
bool igt_ultrajoiner_possible(drmModeModeInfo *mode, int max_dotclock);
diff --git a/tests/intel/kms_pm_lpsp.c b/tests/intel/kms_pm_lpsp.c
index 889da42de..74e9d799a 100644
--- a/tests/intel/kms_pm_lpsp.c
+++ b/tests/intel/kms_pm_lpsp.c
@@ -166,11 +166,11 @@ static bool test_constraint(data_t *data)
if (igt_check_force_joiner_status(data->drm_fd, data->output->name))
return false;
- if (igt_bigjoiner_possible(mode, max_dotclock)) {
+ if (igt_bigjoiner_possible(data->drm_fd, mode, max_dotclock)) {
for_each_connector_mode(data->output) {
mode = &data->output->config.connector->modes[j__];
- if (igt_bigjoiner_possible(mode, max_dotclock))
+ if (igt_bigjoiner_possible(data->drm_fd, mode, max_dotclock))
continue;
igt_output_override_mode(data->output, mode);
diff --git a/tests/kms_flip.c b/tests/kms_flip.c
index 88cd41083..3ad4d0afb 100755
--- a/tests/kms_flip.c
+++ b/tests/kms_flip.c
@@ -1756,11 +1756,11 @@ static void run_test_on_crtc_set(struct test_output *o, int *crtc_idxs,
o->kconnector[i - 1]->connector_type_id);
if (((igt_check_force_joiner_status(drm_fd, conn_name) ||
- igt_bigjoiner_possible(&o->kmode[i], max_dotclock)) &&
+ igt_bigjoiner_possible(drm_fd, &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) && (igt_check_force_joiner_status(drm_fd, prev_conn_name) ||
- igt_bigjoiner_possible(&o->kmode[i - 1], max_dotclock)) &&
+ igt_bigjoiner_possible(drm_fd, &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);
diff --git a/tests/kms_setmode.c b/tests/kms_setmode.c
index bc7b8fabb..d61cfeb9a 100644
--- a/tests/kms_setmode.c
+++ b/tests/kms_setmode.c
@@ -736,11 +736,11 @@ static void test_one_combination(const struct test_config *tconf,
* - current & previous crtcs are consecutive
*/
if (((igt_check_force_joiner_status(drm_fd, conn_name) ||
- igt_bigjoiner_possible(&crtc->mode, max_dotclock)) &&
+ igt_bigjoiner_possible(drm_fd, &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) && (igt_check_force_joiner_status(drm_fd, prev_conn_name) ||
- igt_bigjoiner_possible(&crtc[i - 1].mode, max_dotclock)) &&
+ igt_bigjoiner_possible(drm_fd, &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;
--
2.25.1
next prev parent reply other threads:[~2024-12-04 5:54 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-12-04 6:09 [PATCH i-g-t 0/4] Skip test if joiner display is connected Jeevan B
2024-12-04 6:09 ` [PATCH i-g-t 1/4] lib/igt_kms: Add is_joiner_mode function Jeevan B
2024-12-04 6:09 ` [PATCH i-g-t 2/4] tests/kms_async_flips: Skip async flips on joiner output Jeevan B
2024-12-04 6:09 ` [PATCH i-g-t 3/4] tests/kms_display_modes: Skip test if joiner display is connected Jeevan B
2024-12-04 6:09 ` Jeevan B [this message]
2024-12-04 7:40 ` ✓ i915.CI.BAT: success for Skip test if joiner display is connected (rev6) Patchwork
2024-12-04 9:13 ` ✗ Xe.CI.BAT: failure " Patchwork
2024-12-04 9:14 ` B, Jeevan
2024-12-04 9:17 ` ✗ i915.CI.Full: " Patchwork
2024-12-04 10:08 ` ✗ Xe.CI.Full: " Patchwork
2024-12-09 14:36 ` ✓ i915.CI.Full: success " Patchwork
-- strict thread matches above, loose matches on Subject: below --
2024-11-29 4:27 [PATCH i-g-t 0/4] Skip test if joiner display is connected Jeevan B
2024-11-29 4:27 ` [PATCH i-g-t 4/4] lib/igt_kms: Add 6k resolution support for a single CRTC Jeevan B
2024-11-27 8:13 [PATCH i-g-t 0/4] Skip test if joiner display is connected Jeevan B
2024-11-27 8:13 ` [PATCH i-g-t 4/4] lib/igt_kms: Add 6k resolution support for a single CRTC Jeevan B
2024-11-28 8:14 ` 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=20241204060924.1155970-5-jeevan.b@intel.com \
--to=jeevan.b@intel.com \
--cc=ankit.k.nautiyal@intel.com \
--cc=igt-dev@lists.freedesktop.org \
--cc=kunal1.joshi@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 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.