[i-g-t V6 4/8] lib/igt_kms: Force joiner support in bigjoiner checks

B, Jeevan jeevan.b at intel.com
Thu Jun 27 06:54:52 UTC 2024


LGTM. 

Reviewed-by: Jeevan B <jeevan.b at intel.com>

> -----Original Message-----
> From: Modem, Bhanuprakash <bhanuprakash.modem at intel.com>
> Sent: Tuesday, June 18, 2024 1:53 PM
> To: igt-dev at lists.freedesktop.org; B, Jeevan <jeevan.b at intel.com>
> Cc: Modem, Bhanuprakash <bhanuprakash.modem at intel.com>; Joshi, Kunal1
> <kunal1.joshi at intel.com>
> Subject: [i-g-t V6 4/8] lib/igt_kms: Force joiner support in bigjoiner checks
> 
> As we recently introduced the option (through debugfs) to force the bigjoiner,
> needs to extend the support in bigjoiner checks to handle the force joiner.
> 
> Cc: Kunal Joshi <kunal1.joshi at intel.com>
> Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem at intel.com>
> ---
>  lib/igt_kms.c | 19 +++++++++++--------
>  1 file changed, 11 insertions(+), 8 deletions(-)
> 
> diff --git a/lib/igt_kms.c b/lib/igt_kms.c index 9fdfadde1..d565e79ce 100644
> --- a/lib/igt_kms.c
> +++ b/lib/igt_kms.c
> @@ -6415,6 +6415,7 @@ bool igt_check_bigjoiner_support(igt_display_t
> *display)
>  		enum pipe idx;
>  		drmModeModeInfo *mode;
>  		igt_output_t *output;
> +		bool force_joiner;
>  	} pipes[IGT_MAX_PIPES];
>  	int max_dotclock;
> 
> @@ -6433,6 +6434,7 @@ bool igt_check_bigjoiner_support(igt_display_t
> *display)
>  		pipes[pipes_in_use].idx = output->pending_pipe;
>  		pipes[pipes_in_use].mode = igt_output_get_mode(output);
>  		pipes[pipes_in_use].output = output;
> +		pipes[pipes_in_use].force_joiner =
> +igt_check_force_joiner_status(display->drm_fd, output->name);
>  		pipes_in_use++;
>  	}
> 
> @@ -6444,21 +6446,22 @@ bool igt_check_bigjoiner_support(igt_display_t
> *display)
>  	max_dotclock = igt_get_max_dotclock(display->drm_fd);
> 
>  	/*
> -	 * if mode resolution > 5K (or) mode.clock > max dot-clock, then ignore
> +	 * if force joiner (or) 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 resolution > 5K or mode.clock > max dot-clock)
> and
> +	 *  - previous crtc (force joiner or mode resolution > 5K or
> +mode.clock > max dot-clock) and
>  	 *  - current & previous crtcs are consecutive
>  	 */
>  	for (i = 0; i < pipes_in_use; i++) {
> -		if (igt_bigjoiner_possible(pipes[i].mode, max_dotclock)) {
> -			igt_info("pipe-%s-%s: (Max dot-clock: %d KHz)",
> +		if (pipes[i].force_joiner || igt_bigjoiner_possible(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),
> -				 max_dotclock);
> +				 max_dotclock, pipes[i].force_joiner ? "Yes" :
> "No");
>  			kmstest_dump_mode(pipes[i].mode);
> 
>  			if (pipes[i].idx >= (total_pipes - 1)) { @@ -6481,11
> +6484,11 @@ bool igt_check_bigjoiner_support(igt_display_t *display)
>  			}
>  		}
> 
> -		if ((i > 0) && igt_bigjoiner_possible(pipes[i - 1].mode,
> max_dotclock)) {
> -			igt_info("pipe-%s-%s: (Max dot-clock: %d KHz)",
> +		if ((i > 0) && (pipes[i - 1].force_joiner ||
> igt_bigjoiner_possible(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),
> -				 max_dotclock);
> +				 max_dotclock, pipes[i - 1].force_joiner ? "Yes" :
> "No");
>  			kmstest_dump_mode(pipes[i - 1].mode);
> 
>  			if (!display->pipes[pipes[i - 1].idx + 1].enabled) {
> --
> 2.43.2



More information about the igt-dev mailing list