From: Jani Nikula <jani.nikula@linux.intel.com>
To: Ville Syrjala <ville.syrjala@linux.intel.com>,
intel-gfx@lists.freedesktop.org
Subject: Re: [PATCH 6/9] drm/i915/pfit: Check pfit destination window on ILK-BDW
Date: Tue, 22 Oct 2024 11:26:33 +0300 [thread overview]
Message-ID: <87bjzcwnk6.fsf@intel.com> (raw)
In-Reply-To: <20241016143134.26903-7-ville.syrjala@linux.intel.com>
On Wed, 16 Oct 2024, Ville Syrjala <ville.syrjala@linux.intel.com> wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> The ILK-BDW panel fitter has several restrictions on the
> destination window size. Check for those and reject the
> configuration if things aren't entirely proper.
>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Acked-by: Jani Nikula <jani.nikula@intel.com>
> ---
> drivers/gpu/drm/i915/display/intel_panel.c | 55 ++++++++++++++++++++++
> 1 file changed, 55 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_panel.c b/drivers/gpu/drm/i915/display/intel_panel.c
> index 593e41907d53..d66ce8537f7d 100644
> --- a/drivers/gpu/drm/i915/display/intel_panel.c
> +++ b/drivers/gpu/drm/i915/display/intel_panel.c
> @@ -383,6 +383,57 @@ void intel_panel_add_encoder_fixed_mode(struct intel_connector *connector,
> "current (BIOS)");
> }
>
> +static int intel_pch_pfit_check_dst_window(const struct intel_crtc_state *crtc_state)
> +{
> + struct intel_display *display = to_intel_display(crtc_state);
> + struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
> + const struct drm_display_mode *adjusted_mode =
> + &crtc_state->hw.adjusted_mode;
> + const struct drm_rect *dst = &crtc_state->pch_pfit.dst;
> + int width = drm_rect_width(dst);
> + int height = drm_rect_height(dst);
> + int x = dst->x1;
> + int y = dst->y1;
> +
> + if (adjusted_mode->flags & DRM_MODE_FLAG_INTERLACE &&
> + (y & 1 || height & 1)) {
> + drm_dbg_kms(display->drm,
> + "[CRTC:%d:%s] pfit window (" DRM_RECT_FMT ") misaligned for interlaced output\n",
> + crtc->base.base.id, crtc->base.name, DRM_RECT_ARG(dst));
> + return -EINVAL;
> + }
> +
> + /*
> + * "Restriction : When pipe scaling is enabled, the scaled
> + * output must equal the pipe active area, so Pipe active
> + * size = (2 * PF window position) + PF window size."
> + *
> + * The vertical direction seems more forgiving than the
> + * horizontal direction, but still has some issues so
> + * let's follow the same hard rule for both.
> + */
> + if (adjusted_mode->crtc_hdisplay != 2 * x + width ||
> + adjusted_mode->crtc_vdisplay != 2 * y + height) {
> + drm_dbg_kms(display->drm,
> + "[CRTC:%d:%s] pfit window (" DRM_RECT_FMT ") not centered\n",
> + crtc->base.base.id, crtc->base.name, DRM_RECT_ARG(dst));
> + return -EINVAL;
> + }
> +
> + /*
> + * "Restriction : The X position must not be programmed
> + * to be 1 (28:16=0 0000 0000 0001b)."
> + */
> + if (x == 1) {
> + drm_dbg_kms(display->drm,
> + "[CRTC:%d:%s] pfit window (" DRM_RECT_FMT ") badly positioned\n",
> + crtc->base.base.id, crtc->base.name, DRM_RECT_ARG(dst));
> + return -EINVAL;
> + }
> +
> + return 0;
> +}
> +
> static int intel_pch_pfit_check_src_size(const struct intel_crtc_state *crtc_state)
> {
> struct intel_display *display = to_intel_display(crtc_state);
> @@ -575,6 +626,10 @@ static int pch_panel_fitting(struct intel_crtc_state *crtc_state,
> if (DISPLAY_VER(display) >= 9)
> return 0;
>
> + ret = intel_pch_pfit_check_dst_window(crtc_state);
> + if (ret)
> + return ret;
> +
> ret = intel_pch_pfit_check_src_size(crtc_state);
> if (ret)
> return ret;
--
Jani Nikula, Intel
next prev parent reply other threads:[~2024-10-22 8:26 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-10-16 14:31 [PATCH 0/9] drm/i915/pfit: Panel fitter stuff Ville Syrjala
2024-10-16 14:31 ` [PATCH 1/9] drm/i915/pfit: Check pipe source size against pfit limits on ILK-BDW Ville Syrjala
2024-10-22 8:24 ` Jani Nikula
2024-10-16 14:31 ` [PATCH 2/9] drm/i915/pfit: Check pfit scaling factors " Ville Syrjala
2024-10-22 8:24 ` Jani Nikula
2024-10-16 14:31 ` [PATCH 3/9] drm/i915/pfit: Reject pfit downscaling for GMCH platforms Ville Syrjala
2024-10-22 8:25 ` Jani Nikula
2024-10-16 14:31 ` [PATCH 4/9] drm/i915/pfit: Check pfit minimum timings in pre-SKL Ville Syrjala
2024-10-22 8:25 ` Jani Nikula
2024-10-16 14:31 ` [PATCH 5/9] drm/i915/pfit: Reject cloning when using pfit on ILK-BDW Ville Syrjala
2024-10-22 8:25 ` Jani Nikula
2024-10-16 14:31 ` [PATCH 6/9] drm/i915/pfit: Check pfit destination window " Ville Syrjala
2024-10-22 8:26 ` Jani Nikula [this message]
2024-10-16 14:31 ` [PATCH 7/9] drm/i915/panel: Convert panel code to intel_display Ville Syrjala
2024-10-22 8:26 ` Jani Nikula
2024-10-16 14:31 ` [PATCH 8/9] drm/i915/pfit: Extract intel_pfit.c Ville Syrjala
2024-10-22 8:31 ` Jani Nikula
2024-10-23 15:38 ` Ville Syrjälä
2024-10-16 14:31 ` [PATCH 9/9] drm/i915: Remove ckey/format checks from skl_update_scaler_plane() Ville Syrjala
2024-10-22 9:04 ` Jani Nikula
2024-10-16 19:58 ` ✓ Fi.CI.BAT: success for drm/i915/pfit: Panel fitter stuff Patchwork
2024-10-16 19:59 ` ✗ Fi.CI.CHECKPATCH: warning " Patchwork
2024-10-16 19:59 ` ✗ Fi.CI.SPARSE: " Patchwork
2024-10-16 22:16 ` ✗ Fi.CI.IGT: failure " 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=87bjzcwnk6.fsf@intel.com \
--to=jani.nikula@linux.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.