All of lore.kernel.org
 help / color / mirror / Atom feed
From: Manasi Navare <manasi.d.navare@intel.com>
To: Ville Syrjala <ville.syrjala@linux.intel.com>
Cc: intel-gfx@lists.freedesktop.org
Subject: Re: [Intel-gfx] [PATCH v2 3/8] drm/i915: Fix skl+ non-scaled pfit modes
Date: Wed, 1 Apr 2020 16:35:54 -0700	[thread overview]
Message-ID: <20200401233554.GA14630@intel.com> (raw)
In-Reply-To: <20200212161738.28141-4-ville.syrjala@linux.intel.com>

On Wed, Feb 12, 2020 at 06:17:33PM +0200, Ville Syrjala wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> 
> Fix skl_update_scaler_crtc() to deal with different scaling
> modes correctly. The current implementation assumes
> DRM_MODE_SCALE_FULLSCREEN. Fortunately we don't expose any
> border properties currently so the code does actually end
> up doing the right thing (assigning a scaler for pfit).
> The code does need to be fixed before any borders are
> exposed.
> 
> Also we have redundant calls to skl_update_scaler_crtc() in
> dp/hdmi .compute_config() which can be nuked. They were anyway
> called before we had even computed the pfit state so were
> basically nonsense. The real call we need to keep is in
> intel_crtc_atomic_check().
> 
> v2: Deal witrh skl_update_scaler_crtc() in intel_dp_ycbcr420_config()
> 
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

Just keeping the call in intel_crtc_atomic_check() looks good

Reviewed-by: Manasi Navare <manasi.d.navare@intel.com>

Manasi

> ---
>  drivers/gpu/drm/i915/display/intel_display.c | 40 ++++++++++----------
>  drivers/gpu/drm/i915/display/intel_display.h |  1 -
>  drivers/gpu/drm/i915/display/intel_dp.c      | 15 --------
>  drivers/gpu/drm/i915/display/intel_hdmi.c    |  6 ---
>  4 files changed, 19 insertions(+), 43 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
> index de50aa0b076c..becc6322b7dc 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -6101,30 +6101,28 @@ skl_update_scaler(struct intel_crtc_state *crtc_state, bool force_detach,
>  	return 0;
>  }
>  
> -/**
> - * skl_update_scaler_crtc - Stages update to scaler state for a given crtc.
> - *
> - * @state: crtc's scaler state
> - *
> - * Return
> - *     0 - scaler_usage updated successfully
> - *    error - requested scaling cannot be supported or other error condition
> - */
> -int skl_update_scaler_crtc(struct intel_crtc_state *state)
> +static int skl_update_scaler_crtc(struct intel_crtc_state *crtc_state)
>  {
> -	const struct drm_display_mode *adjusted_mode = &state->hw.adjusted_mode;
> -	bool need_scaler = false;
> +	const struct drm_display_mode *adjusted_mode =
> +		&crtc_state->hw.adjusted_mode;
> +	int width, height;
>  
> -	if (state->output_format == INTEL_OUTPUT_FORMAT_YCBCR420 ||
> -	    state->pch_pfit.enabled)
> -		need_scaler = true;
> +	if (crtc_state->pch_pfit.enabled) {
> +		u32 pfit_size = crtc_state->pch_pfit.size;
> +
> +		width = pfit_size >> 16;
> +		height = pfit_size & 0xffff;
> +	} else {
> +		width = adjusted_mode->crtc_hdisplay;
> +		height = adjusted_mode->crtc_vdisplay;
> +	}
>  
> -	return skl_update_scaler(state, !state->hw.active, SKL_CRTC_INDEX,
> -				 &state->scaler_state.scaler_id,
> -				 state->pipe_src_w, state->pipe_src_h,
> -				 adjusted_mode->crtc_hdisplay,
> -				 adjusted_mode->crtc_vdisplay, NULL, 0,
> -				 need_scaler);
> +	return skl_update_scaler(crtc_state, !crtc_state->hw.active,
> +				 SKL_CRTC_INDEX,
> +				 &crtc_state->scaler_state.scaler_id,
> +				 crtc_state->pipe_src_w, crtc_state->pipe_src_h,
> +				 width, height, NULL, 0,
> +				 crtc_state->pch_pfit.enabled);
>  }
>  
>  /**
> diff --git a/drivers/gpu/drm/i915/display/intel_display.h b/drivers/gpu/drm/i915/display/intel_display.h
> index 75438a136d58..6291d3dbc513 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.h
> +++ b/drivers/gpu/drm/i915/display/intel_display.h
> @@ -584,7 +584,6 @@ void intel_crtc_arm_fifo_underrun(struct intel_crtc *crtc,
>  				  struct intel_crtc_state *crtc_state);
>  
>  u16 skl_scaler_calc_phase(int sub, int scale, bool chroma_center);
> -int skl_update_scaler_crtc(struct intel_crtc_state *crtc_state);
>  void skl_scaler_disable(const struct intel_crtc_state *old_crtc_state);
>  void ilk_pfit_disable(const struct intel_crtc_state *old_crtc_state);
>  u32 glk_plane_color_ctl(const struct intel_crtc_state *crtc_state,
> diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
> index f4dede6253f8..a827eac8acc2 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp.c
> @@ -2307,7 +2307,6 @@ intel_dp_ycbcr420_config(struct intel_dp *intel_dp,
>  	const struct drm_display_mode *adjusted_mode =
>  		&crtc_state->hw.adjusted_mode;
>  	struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
> -	int ret;
>  
>  	if (!drm_mode_is_420_only(info, adjusted_mode) ||
>  	    !intel_dp_get_colorimetry_status(intel_dp) ||
> @@ -2316,13 +2315,6 @@ intel_dp_ycbcr420_config(struct intel_dp *intel_dp,
>  
>  	crtc_state->output_format = INTEL_OUTPUT_FORMAT_YCBCR420;
>  
> -	/* YCBCR 420 output conversion needs a scaler */
> -	ret = skl_update_scaler_crtc(crtc_state);
> -	if (ret) {
> -		DRM_DEBUG_KMS("Scaler allocation for output failed\n");
> -		return ret;
> -	}
> -
>  	intel_pch_panel_fitting(crtc, crtc_state, DRM_MODE_SCALE_FULLSCREEN);
>  
>  	return 0;
> @@ -2400,7 +2392,6 @@ intel_dp_compute_config(struct intel_encoder *encoder,
>  	else
>  		ret = intel_dp_ycbcr420_config(intel_dp, &intel_connector->base,
>  					       pipe_config);
> -
>  	if (ret)
>  		return ret;
>  
> @@ -2416,12 +2407,6 @@ intel_dp_compute_config(struct intel_encoder *encoder,
>  		intel_fixed_panel_mode(intel_connector->panel.fixed_mode,
>  				       adjusted_mode);
>  
> -		if (INTEL_GEN(dev_priv) >= 9) {
> -			ret = skl_update_scaler_crtc(pipe_config);
> -			if (ret)
> -				return ret;
> -		}
> -
>  		if (HAS_GMCH(dev_priv))
>  			intel_gmch_panel_fitting(intel_crtc, pipe_config,
>  						 conn_state->scaling_mode);
> diff --git a/drivers/gpu/drm/i915/display/intel_hdmi.c b/drivers/gpu/drm/i915/display/intel_hdmi.c
> index e68bafb76cb1..1e42b01045b1 100644
> --- a/drivers/gpu/drm/i915/display/intel_hdmi.c
> +++ b/drivers/gpu/drm/i915/display/intel_hdmi.c
> @@ -2308,12 +2308,6 @@ intel_hdmi_ycbcr420_config(struct drm_connector *connector,
>  
>  	config->output_format = INTEL_OUTPUT_FORMAT_YCBCR420;
>  
> -	/* YCBCR 420 output conversion needs a scaler */
> -	if (skl_update_scaler_crtc(config)) {
> -		DRM_DEBUG_KMS("Scaler allocation for output failed\n");
> -		return false;
> -	}
> -
>  	intel_pch_panel_fitting(intel_crtc, config,
>  				DRM_MODE_SCALE_FULLSCREEN);
>  
> -- 
> 2.24.1
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

  reply	other threads:[~2020-04-01 23:33 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-02-12 16:17 [Intel-gfx] [PATCH v2 0/8] drm/i915: pfit/scaler rework prep stuff Ville Syrjala
2020-02-12 16:17 ` [Intel-gfx] [PATCH v2 1/8] drm/i915: Parametrize PFIT_PIPE Ville Syrjala
2020-02-12 17:43   ` Jani Nikula
2020-02-13 15:00     ` Ville Syrjälä
2020-04-01 22:48     ` Manasi Navare
2020-04-02 13:55       ` Ville Syrjälä
2020-02-12 16:17 ` [Intel-gfx] [PATCH v2 2/8] drm/i915: Use intel_de_write_fw() for skl+ scaler registers Ville Syrjala
2020-02-12 17:47   ` Jani Nikula
2020-02-12 16:17 ` [Intel-gfx] [PATCH v2 3/8] drm/i915: Fix skl+ non-scaled pfit modes Ville Syrjala
2020-04-01 23:35   ` Manasi Navare [this message]
2020-02-12 16:17 ` [Intel-gfx] [PATCH v2 4/8] drm/i915: Flatten a bunch of the pfit functions Ville Syrjala
2020-04-01 23:53   ` Manasi Navare
2020-04-02 13:55     ` Ville Syrjälä
2020-04-21 23:32       ` Manasi Navare
2020-02-12 16:17 ` [Intel-gfx] [PATCH v2 5/8] drm/i915: Use drm_rect to store the pfit window pos/size Ville Syrjala
2020-02-12 16:17 ` [Intel-gfx] [PATCH v2 6/8] drm/i915: s/pipe_config/crtc_state/ in pfit functions Ville Syrjala
2020-02-12 16:17 ` [Intel-gfx] [PATCH v2 7/8] drm/i915: Pass connector state to pfit calculations Ville Syrjala
2020-02-12 16:17 ` [Intel-gfx] [PATCH v2 8/8] drm/i915: Have pfit calculations return an error code Ville Syrjala
2020-02-13  6:06 ` [Intel-gfx] ✓ Fi.CI.BAT: success for drm/i915: pfit/scaler rework prep stuff (rev2) Patchwork
2020-02-16 22:45 ` [Intel-gfx] ✓ Fi.CI.IGT: " Patchwork

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=20200401233554.GA14630@intel.com \
    --to=manasi.d.navare@intel.com \
    --cc=intel-gfx@lists.freedesktop.org \
    --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.