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,
	Ville Syrjala <ville.syrjala@linux.intel.com>
Cc: Nemesa Garg <nemesa.garg@intel.com>
Subject: Re: [PATCH 2/2] drm/i915/display: Call panel_fitting from pipe_config
Date: Tue, 13 Aug 2024 10:52:16 +0300	[thread overview]
Message-ID: <87cymc272n.fsf@intel.com> (raw)
In-Reply-To: <20240808045407.2365733-1-nemesa.garg@intel.com>

On Thu, 08 Aug 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 get enabled
> together.
>
> Introduce a new boolean flag need_joiner which is set during dp
> compute_config in joiner case and later is used to compute
> panel_fitting in pipe_config. Modify pch_panel_fitting to handle
> joiner pipes by adjusting crtc_hdisplay accordingly.

So I still don't like the fact that intel_panel_fitting() is called in
different ways for different connectors, controlled by a flag in crtc
state.

That said, I couldn't come up with a better idea either, apart from
moving *all* panel fitting intel_modeset_pipe_config().

Cc: Ville, in case he has some ideas for this. Please hold off on
merging until we get some input from him.


Thanks,
Jani.


>
> v2: Address comments (Ankit)
> v3: Change flag name (Ankit)
>
> 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            | 11 ++++++++---
>  drivers/gpu/drm/i915/display/intel_panel.c         |  3 +++
>  4 files changed, 23 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
> index 8bbde03f2508..82b67c0a90e0 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.need_joiner) {
> +			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..eb9713b088c6 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 need_joiner;
>  	} 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 65182bf69b62..d5d9d4f21fc7 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp.c
> @@ -2953,9 +2953,14 @@ intel_dp_compute_config(struct intel_encoder *encoder,
>  
>  	if ((intel_dp_is_edp(intel_dp) && fixed_mode) ||
>  	    pipe_config->output_format == INTEL_OUTPUT_FORMAT_YCBCR420) {
> -		ret = intel_panel_fitting(pipe_config, conn_state);
> -		if (ret)
> -			return ret;
> +		if (!pipe_config->joiner_pipes) {
> +			ret = intel_panel_fitting(pipe_config, conn_state);
> +			if (ret)
> +				return ret;
> +		} else {
> +			 /* Incase of joiner panel_fitting is handled during pipe_config */
> +			pipe_config->pch_pfit.need_joiner = true;
> +		}
>  	}
>  
>  	pipe_config->limited_color_range =
> 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-08-13  7:52 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-08-05  6:25 [PATCH 0/2] Consider joiner calculation for panel fitting Nemesa Garg
2024-08-05  6:25 ` [PATCH 1/2] drm/i915/display: Refactor pch_panel_fitting to use local variables for crtc dimensions Nemesa Garg
2024-08-06  3:37   ` Nautiyal, Ankit K
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 [this message]
2024-09-09  6:21       ` Garg, Nemesa
2024-09-09 14:08         ` Ville Syrjälä
2024-08-05  7:04 ` ✓ Fi.CI.BAT: success for Consider joiner calculation for panel fitting (rev2) Patchwork
2024-08-05 17:45 ` ✗ Fi.CI.IGT: failure " Patchwork
2024-08-08  5:58 ` ✓ Fi.CI.BAT: success for Consider joiner calculation for panel fitting (rev3) Patchwork
2024-08-08  8:11 ` ✗ Fi.CI.IGT: failure " Patchwork
  -- strict thread matches above, loose matches on Subject: below --
2024-07-26  9:53 [PATCH 0/2] Consider joiner calculation for panel fitting Nemesa Garg
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
2024-07-30 16:20     ` Garg, Nemesa

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