All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jani Nikula <jani.nikula@linux.intel.com>
To: Nemesa Garg <nemesa.garg@intel.com>, intel-gfx@lists.freedesktop.org
Cc: Nemesa Garg <nemesa.garg@intel.com>
Subject: Re: [PATCH 2/2] drm/i915/display: Call panel_fitting from pipe_config
Date: Tue, 30 Jul 2024 10:56:39 +0300	[thread overview]
Message-ID: <87frrrxqh4.fsf@intel.com> (raw)
In-Reply-To: <20240726095357.1261804-3-nemesa.garg@intel.com>

On Fri, 26 Jul 2024, Nemesa Garg <nemesa.garg@intel.com> wrote:
> In panel fitter/pipe scaler scenario the pch_pfit configuration
> currently takes place before accounting for pipe_src width for
> joiner. This causes issue when pch_pfit and joiner gets
> enabled together.
>
> Introduce a new boolean flag is_required which can be filled
> during dp compute_config and later is used to compute panel_fitting in
> pipe_config. Modify pch_panel_fitting to handle joiner pipes by adjusting
> crtc_hdisplay accordingly.

Superficially looks simple enough, but this actually adds a bunch of
complexity. It's not obvious why encoders handle panel fitting in
completely different places, or what "pch_pfit.is_required" really
means.

BR,
Jani.

>
> Signed-off-by: Nemesa Garg <nemesa.garg@intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_display.c       | 11 +++++++++++
>  drivers/gpu/drm/i915/display/intel_display_types.h |  1 +
>  drivers/gpu/drm/i915/display/intel_dp.c            |  7 ++-----
>  drivers/gpu/drm/i915/display/intel_panel.c         |  3 +++
>  4 files changed, 17 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
> index 8bbde03f2508..a7194a84b6b8 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -4796,6 +4796,17 @@ intel_modeset_pipe_config(struct intel_atomic_state *state,
>  		return ret;
>  	}
>  
> +	for_each_new_connector_in_state(&state->base, connector, connector_state, i) {
> +		if (connector_state->crtc != &crtc->base)
> +			continue;
> +
> +		if (crtc_state->pch_pfit.is_required) {
> +			ret = intel_panel_fitting(crtc_state, connector_state);
> +			if (ret)
> +				return ret;
> +		}
> +	}
> +
>  	/* Dithering seems to not pass-through bits correctly when it should, so
>  	 * only enable it on 6bpc panels and when its not a compliance
>  	 * test requesting 6bpc video pattern.
> diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h b/drivers/gpu/drm/i915/display/intel_display_types.h
> index a04d52dbf6e1..a4ab26d8fa43 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_types.h
> +++ b/drivers/gpu/drm/i915/display/intel_display_types.h
> @@ -1258,6 +1258,7 @@ struct intel_crtc_state {
>  		struct drm_rect dst;
>  		bool enabled;
>  		bool force_thru;
> +		bool is_required;
>  	} pch_pfit;
>  
>  	/* FDI configuration, only valid if has_pch_encoder is set. */
> diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
> index d0d878da71ee..d892c5a429f1 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp.c
> @@ -2922,11 +2922,8 @@ intel_dp_compute_config(struct intel_encoder *encoder,
>  		pipe_config->has_pch_encoder = true;
>  
>  	fixed_mode = intel_panel_fixed_mode(connector, adjusted_mode);
> -	if (intel_dp_is_edp(intel_dp) && fixed_mode) {
> -		ret = intel_panel_compute_config(connector, adjusted_mode);
> -		if (ret)
> -			return ret;
> -	}
> +	if (intel_dp_is_edp(intel_dp) && fixed_mode)
> +		pipe_config->pch_pfit.is_required = true;
>  
>  	if (adjusted_mode->flags & DRM_MODE_FLAG_DBLSCAN)
>  		return -EINVAL;
> diff --git a/drivers/gpu/drm/i915/display/intel_panel.c b/drivers/gpu/drm/i915/display/intel_panel.c
> index dd18136d1c61..0da45c2330d3 100644
> --- a/drivers/gpu/drm/i915/display/intel_panel.c
> +++ b/drivers/gpu/drm/i915/display/intel_panel.c
> @@ -395,6 +395,9 @@ static int pch_panel_fitting(struct intel_crtc_state *crtc_state,
>  	u16 crtc_hdisplay = adjusted_mode->crtc_hdisplay;
>  	u16 crtc_vdisplay = adjusted_mode->crtc_vdisplay;
>  
> +	if (crtc_state->joiner_pipes)
> +		crtc_hdisplay = adjusted_mode->crtc_hdisplay / 2;
> +
>  	/* Native modes don't need fitting */
>  	if (crtc_hdisplay == pipe_src_w &&
>  	    crtc_vdisplay == pipe_src_h &&

-- 
Jani Nikula, Intel

  parent reply	other threads:[~2024-07-30  7:56 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-07-26  9:53 [PATCH 0/2] Consider joiner calculation for panel fitting Nemesa Garg
2024-07-26  9:53 ` [PATCH 1/2] drm/i915/display: Refactor pch_panel_fitting to use local variables for crtc dimensions Nemesa Garg
2024-07-29 14:43   ` Nautiyal, Ankit K
2024-07-26  9:53 ` [PATCH 2/2] drm/i915/display: Call panel_fitting from pipe_config Nemesa Garg
2024-07-29 15:06   ` Nautiyal, Ankit K
2024-07-30  7:56   ` Jani Nikula [this message]
2024-07-30 16:20     ` Garg, Nemesa
2024-07-26 10:54 ` ✗ Fi.CI.BAT: failure for Consider joiner calculation for panel fitting Patchwork
2024-07-29  8:27 ` ✓ Fi.CI.BAT: success " Patchwork
2024-07-29 15:28 ` ✗ Fi.CI.IGT: failure " Patchwork
  -- strict thread matches above, loose matches on Subject: below --
2024-08-05  6:25 [PATCH 0/2] " Nemesa Garg
2024-08-05  6:25 ` [PATCH 2/2] drm/i915/display: Call panel_fitting from pipe_config Nemesa Garg
2024-08-06  3:35   ` Nautiyal, Ankit K
2024-08-08  4:54   ` Nemesa Garg
2024-08-13  5:18     ` Nautiyal, Ankit K
2024-08-13  7:52     ` Jani Nikula
2024-09-09  6:21       ` Garg, Nemesa
2024-09-09 14:08         ` Ville Syrjälä

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=87frrrxqh4.fsf@intel.com \
    --to=jani.nikula@linux.intel.com \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=nemesa.garg@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.