From: "Ville Syrjälä" <ville.syrjala@linux.intel.com>
To: "Souza, Jose" <jose.souza@intel.com>
Cc: "intel-gfx@lists.freedesktop.org" <intel-gfx@lists.freedesktop.org>
Subject: Re: [PATCH 11/18] drm/i915: Move skl plane fb related checks into a better place
Date: Mon, 27 Aug 2018 14:48:49 +0300 [thread overview]
Message-ID: <20180827114849.GO5565@intel.com> (raw)
In-Reply-To: <90e47d8e433e42c26976ddefef912270061b2687.camel@intel.com>
On Fri, Aug 24, 2018 at 07:56:34PM +0000, Souza, Jose wrote:
> On Thu, 2018-07-19 at 21:22 +0300, Ville Syrjala wrote:
> > From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> >
> > Move the skl+ specific framebuffer related checks from
> > intel_plane_atomic_check_with_state() into a new function
> > (skl_plane_check_fb()) which we'll simply call from the skl
> > plane->check() hook.
> >
> > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > ---
> > drivers/gpu/drm/i915/intel_atomic_plane.c | 42 --------------------
> > drivers/gpu/drm/i915/intel_display.c | 12 ------
> > drivers/gpu/drm/i915/intel_sprite.c | 66
> > +++++++++++++++++++++++++++++++
> > 3 files changed, 66 insertions(+), 54 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/i915/intel_atomic_plane.c
> > b/drivers/gpu/drm/i915/intel_atomic_plane.c
> > index eddcdd6e4b3b..7c0873060934 100644
> > --- a/drivers/gpu/drm/i915/intel_atomic_plane.c
> > +++ b/drivers/gpu/drm/i915/intel_atomic_plane.c
> > @@ -116,40 +116,11 @@ int intel_plane_atomic_check_with_state(const
> > struct intel_crtc_state *old_crtc_
> > struct drm_i915_private *dev_priv = to_i915(plane->dev);
> > struct drm_plane_state *state = &intel_state->base;
> > struct intel_plane *intel_plane = to_intel_plane(plane);
> > - const struct drm_display_mode *adjusted_mode =
> > - &crtc_state->base.adjusted_mode;
> > int ret;
> >
> > if (!intel_state->base.crtc && !old_plane_state->base.crtc)
> > return 0;
> >
> > - if (state->fb && drm_rotation_90_or_270(state->rotation)) {
> > - struct drm_format_name_buf format_name;
> > -
> > - if (state->fb->modifier != I915_FORMAT_MOD_Y_TILED &&
> > - state->fb->modifier != I915_FORMAT_MOD_Yf_TILED) {
> > - DRM_DEBUG_KMS("Y/Yf tiling required for
> > 90/270!\n");
> > - return -EINVAL;
> > - }
> > -
> > - /*
> > - * 90/270 is not allowed with RGB64 16:16:16:16,
> > - * RGB 16-bit 5:6:5, and Indexed 8-bit.
> > - * TBD: Add RGB64 case once its added in supported
> > format list.
> > - */
> > - switch (state->fb->format->format) {
> > - case DRM_FORMAT_C8:
> > - case DRM_FORMAT_RGB565:
> > - DRM_DEBUG_KMS("Unsupported pixel format %s for
> > 90/270!\n",
> > - drm_get_format_name(state->fb-
> > >format->format,
> > - &format_name)
> > );
> > - return -EINVAL;
> > -
> > - default:
> > - break;
> > - }
> > - }
> > -
> > /* CHV ignores the mirror bit when the rotate bit is set :( */
> > if (IS_CHERRYVIEW(dev_priv) &&
> > state->rotation & DRM_MODE_ROTATE_180 &&
> > @@ -163,19 +134,6 @@ int intel_plane_atomic_check_with_state(const
> > struct intel_crtc_state *old_crtc_
> > if (ret)
> > return ret;
> >
> > - /*
> > - * Y-tiling is not supported in IF-ID Interlace mode in
> > - * GEN9 and above.
> > - */
> > - if (state->fb && INTEL_GEN(dev_priv) >= 9 && crtc_state-
> > >base.enable &&
> > - adjusted_mode->flags & DRM_MODE_FLAG_INTERLACE) {
> > - if (state->fb->modifier == I915_FORMAT_MOD_Y_TILED ||
> > - state->fb->modifier == I915_FORMAT_MOD_Yf_TILED) {
> > - DRM_DEBUG_KMS("Y/Yf tiling not supported in IF-
> > ID mode\n");
> > - return -EINVAL;
> > - }
> > - }
> > -
> > /* FIXME pre-g4x don't work like this */
> > if (state->visible)
> > crtc_state->active_planes |= BIT(intel_plane->id);
> > diff --git a/drivers/gpu/drm/i915/intel_display.c
> > b/drivers/gpu/drm/i915/intel_display.c
> > index 9b9eaeda15dd..2381b762d109 100644
> > --- a/drivers/gpu/drm/i915/intel_display.c
> > +++ b/drivers/gpu/drm/i915/intel_display.c
> > @@ -3151,12 +3151,6 @@ static int skl_check_ccs_aux_surface(struct
> > intel_plane_state *plane_state)
> > int y = src_y / vsub;
> > u32 offset;
> >
> > - if (plane_state->base.rotation & ~(DRM_MODE_ROTATE_0 |
> > DRM_MODE_ROTATE_180)) {
> > - DRM_DEBUG_KMS("RC support only with 0/180 degree
> > rotation %x\n",
> > - plane_state->base.rotation);
> > - return -EINVAL;
> > - }
> > -
> > intel_add_fb_offsets(&x, &y, plane_state, 1);
> > offset = intel_plane_compute_aligned_offset(&x, &y,
> > plane_state, 1);
> >
> > @@ -3178,12 +3172,6 @@ int skl_check_plane_surface(const struct
> > intel_crtc_state *crtc_state,
> > plane_state->color_plane[0].stride = intel_fb_pitch(fb, 0,
> > rotation);
> > plane_state->color_plane[1].stride = intel_fb_pitch(fb, 1,
> > rotation);
> >
> > - if (rotation & DRM_MODE_REFLECT_X &&
> > - fb->modifier == DRM_FORMAT_MOD_LINEAR) {
> > - DRM_DEBUG_KMS("horizontal flip is not supported with
> > linear surface formats\n");
> > - return -EINVAL;
> > - }
> > -
> > if (!plane_state->base.visible)
> > return 0;
> >
> > diff --git a/drivers/gpu/drm/i915/intel_sprite.c
> > b/drivers/gpu/drm/i915/intel_sprite.c
> > index 36e150885897..041b8921f4fe 100644
> > --- a/drivers/gpu/drm/i915/intel_sprite.c
> > +++ b/drivers/gpu/drm/i915/intel_sprite.c
> > @@ -1156,6 +1156,68 @@ vlv_sprite_check(struct intel_crtc_state
> > *crtc_state,
> > return 0;
> > }
> >
> > +static int skl_plane_check_fb(const struct intel_crtc_state
> > *crtc_state,
> > + const struct intel_plane_state
> > *plane_state)
> > +{
> > + const struct drm_framebuffer *fb = plane_state->base.fb;
> > + unsigned int rotation = plane_state->base.rotation;
> > + struct drm_format_name_buf format_name;
> > +
> > + if (!fb)
> > + return 0;
> > +
> > + if (rotation & ~(DRM_MODE_ROTATE_0 | DRM_MODE_ROTATE_180) &&
> > + (fb->modifier == I915_FORMAT_MOD_Y_TILED_CCS &&
> > + fb->modifier == I915_FORMAT_MOD_Yf_TILED_CCS)) {
> > + DRM_DEBUG_KMS("RC support only with 0/180 degree
> > rotation (%x)\n",
> > + rotation);
> > + return -EINVAL;
> > + }
> > +
> > + if (rotation & DRM_MODE_REFLECT_X &&
> > + fb->modifier == DRM_FORMAT_MOD_LINEAR) {
> > + DRM_DEBUG_KMS("horizontal flip is not supported with
> > linear surface formats\n");
> > + return -EINVAL;
> > + }
> > +
> > + if (drm_rotation_90_or_270(rotation)) {
> > + if (fb->modifier != I915_FORMAT_MOD_Y_TILED &&
> > + fb->modifier != I915_FORMAT_MOD_Yf_TILED) {
> > + DRM_DEBUG_KMS("Y/Yf tiling required for
> > 90/270!\n");
> > + return -EINVAL;
> > + }
> > +
> > + /*
> > + * 90/270 is not allowed with RGB64 16:16:16:16,
> > + * RGB 16-bit 5:6:5, and Indexed 8-bit.
> > + * TBD: Add RGB64 case once its added in supported
> > format list.
> > + */
> > + switch (fb->format->format) {
> > + case DRM_FORMAT_C8:
> > + case DRM_FORMAT_RGB565:
> > + DRM_DEBUG_KMS("Unsupported pixel format %s for
> > 90/270!\n",
> > + drm_get_format_name(fb->format-
> > >format,
> > + &format_name)
> > );
> > + return -EINVAL;
> > + default:
> > + break;
> > + }
> > + }
> > +
> > + /* Y-tiling is not supported in IF-ID Interlace mode */
> > + if (crtc_state->base.enable &&
> > + crtc_state->base.adjusted_mode.flags &
> > DRM_MODE_FLAG_INTERLACE &&
> > + (fb->modifier == I915_FORMAT_MOD_Y_TILED ||
> > + fb->modifier == I915_FORMAT_MOD_Yf_TILED ||
>
> I guess this 2 checks bellow are new? It was not being handled in
> skl_check_ccs_aux_surface() or else where.
Right. The old code missed the compressed Y tiled cases. Should have
really split that change into a separate patch.
>
> Other than this everything else looks good.
>
> Reviewed-by: José Roberto de Souza <jose.souza@intel.com>
>
> > + fb->modifier == I915_FORMAT_MOD_Y_TILED_CCS ||
> > + fb->modifier == I915_FORMAT_MOD_Yf_TILED_CCS)) {
> > + DRM_DEBUG_KMS("Y/Yf tiling not supported in IF-ID
> > mode\n");
> > + return -EINVAL;
> > + }
> > +
> > + return 0;
> > +}
> > +
> > int skl_plane_check(struct intel_crtc_state *crtc_state,
> > struct intel_plane_state *plane_state)
> > {
> > @@ -1164,6 +1226,10 @@ int skl_plane_check(struct intel_crtc_state
> > *crtc_state,
> > int max_scale, min_scale;
> > int ret;
> >
> > + ret = skl_plane_check_fb(crtc_state, plane_state);
> > + if (ret)
> > + return ret;
> > +
> > /* use scaler when colorkey is not required */
> > if (!plane_state->ckey.flags) {
> > const struct drm_framebuffer *fb = plane_state-
> > >base.fb;
--
Ville Syrjälä
Intel
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
next prev parent reply other threads:[~2018-08-27 11:49 UTC|newest]
Thread overview: 58+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-07-19 18:21 [PATCH 00/18] drm/i915: GTT remapping for display Ville Syrjala
2018-07-19 18:21 ` [PATCH 01/18] drm/i915: Fix glk/cnl display w/a #1175 Ville Syrjala
2018-07-20 10:55 ` Imre Deak
2018-07-19 18:21 ` [PATCH 02/18] drm/i915: s/tile_offset/aligned_offset/ Ville Syrjala
2018-08-22 21:55 ` Souza, Jose
2018-07-19 18:21 ` [PATCH 03/18] drm/i915: Add .max_stride() plane hook Ville Syrjala
2018-08-22 22:03 ` Souza, Jose
2018-08-22 22:19 ` Souza, Jose
2018-08-23 14:48 ` Ville Syrjälä
2018-08-23 14:52 ` Ville Syrjälä
2018-07-19 18:22 ` [PATCH 04/18] drm/i915: Use pipe A primary plane .max_stride() as the global stride limit Ville Syrjala
2018-08-22 22:22 ` Souza, Jose
2018-07-19 18:22 ` [PATCH 05/18] drm/i915: Rename the plane_state->main/aux to plane_state->color_plane[] Ville Syrjala
2018-08-22 23:02 ` Souza, Jose
2018-07-19 18:22 ` [PATCH 06/18] drm/i915: Store the final plane stride in plane_state Ville Syrjala
2018-07-20 11:06 ` [PATCH v2 " Ville Syrjala
2018-08-22 23:44 ` Souza, Jose
2018-07-19 18:22 ` [PATCH 07/18] drm/i915: Store ggtt_view " Ville Syrjala
2018-08-24 20:13 ` Souza, Jose
2018-07-19 18:22 ` [PATCH 08/18] drm/i915: s/int plane/int color_plane/ Ville Syrjala
2018-08-23 1:14 ` Rodrigo Vivi
2018-08-24 0:05 ` Souza, Jose
2018-07-19 18:22 ` [PATCH 09/18] drm/i915: Nuke plane->can_scale/min_downscale Ville Syrjala
2018-08-24 0:32 ` Souza, Jose
2018-07-19 18:22 ` [PATCH 10/18] drm/i915: Extract per-platform plane->check() functions Ville Syrjala
2018-08-24 1:01 ` Souza, Jose
2018-08-24 12:03 ` Ville Syrjälä
2018-07-19 18:22 ` [PATCH 11/18] drm/i915: Move skl plane fb related checks into a better place Ville Syrjala
2018-08-24 19:56 ` Souza, Jose
2018-08-27 11:48 ` Ville Syrjälä [this message]
2018-07-19 18:22 ` [PATCH 12/18] drm/i915: Move display w/a #1175 Ville Syrjala
2018-08-23 1:09 ` Rodrigo Vivi
2018-07-19 18:22 ` [PATCH 13/18] drm/i915: Move chv rotation checks to plane->check() Ville Syrjala
2018-08-24 20:04 ` Souza, Jose
2018-07-19 18:22 ` [PATCH 14/18] drm/i915: Extract intel_cursor_check_surface() Ville Syrjala
2018-08-24 20:08 ` Souza, Jose
2018-07-19 18:22 ` [PATCH 15/18] drm/i915: Add a new "remapped" gtt_view Ville Syrjala
2018-07-19 18:59 ` Chris Wilson
2018-07-19 19:33 ` Ville Syrjälä
2018-07-19 19:46 ` Chris Wilson
2018-07-19 19:55 ` Ville Syrjälä
2018-07-19 20:16 ` Ville Syrjälä
2018-07-19 20:25 ` Chris Wilson
2018-07-19 18:22 ` [PATCH 16/18] drm/i915: Overcome display engine stride limits via GTT remapping Ville Syrjala
2018-07-19 19:01 ` Chris Wilson
2018-07-19 19:20 ` Ville Syrjälä
2018-07-19 18:22 ` [PATCH 17/18] drm/i915: Bump gen4+ fb stride limit to 256KiB Ville Syrjala
2018-08-24 20:49 ` Souza, Jose
2018-07-19 18:22 ` [PATCH 18/18] drm/i915: Bump gen4+ fb size limits to 32kx32k Ville Syrjala
2018-08-24 20:49 ` Souza, Jose
2018-07-19 18:52 ` ✗ Fi.CI.CHECKPATCH: warning for drm/i915: GTT remapping for display Patchwork
2018-07-19 19:00 ` ✗ Fi.CI.SPARSE: " Patchwork
2018-07-19 19:15 ` ✓ Fi.CI.BAT: success " Patchwork
2018-07-20 0:02 ` ✗ Fi.CI.IGT: failure " Patchwork
2018-07-20 11:15 ` ✗ Fi.CI.CHECKPATCH: warning for drm/i915: GTT remapping for display (rev2) Patchwork
2018-07-20 11:23 ` ✗ Fi.CI.SPARSE: " Patchwork
2018-07-20 11:37 ` ✓ Fi.CI.BAT: success " Patchwork
2018-07-21 14:16 ` ✓ 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=20180827114849.GO5565@intel.com \
--to=ville.syrjala@linux.intel.com \
--cc=intel-gfx@lists.freedesktop.org \
--cc=jose.souza@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.