From: "Zanoni, Paulo R" <paulo.r.zanoni@intel.com>
To: "intel-gfx@lists.freedesktop.org"
<intel-gfx@lists.freedesktop.org>,
"maarten.lankhorst@linux.intel.com"
<maarten.lankhorst@linux.intel.com>
Subject: Re: [PATCH 2/2] drm/i915: Nuke fbc members from intel_crtc->atomic, v4.
Date: Tue, 15 Mar 2016 19:52:02 +0000 [thread overview]
Message-ID: <1458071521.2281.1.camel@intel.com> (raw)
In-Reply-To: <1457516145-32117-2-git-send-email-maarten.lankhorst@linux.intel.com>
Em Qua, 2016-03-09 às 10:35 +0100, Maarten Lankhorst escreveu:
> Whenever there's an update to the primary plane,
> fbc_pre_update and fbc_post_update are called. Kill off
> intel_crtc->atomic.update_fbc and now that intel_crtc->atomic
> is empty, kill it off too.
>
> Changes since v1:
> - Add a intel_fbc_supports_rotation helper.
> Changes since v2:
> - Remove intel_fbc_supports_rotation_helper.
> - Remove unrelated changes.
> Changes since v3:
> - Rebase
>
> Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Looks like the WM fixes indeed solved the problems I pointed in my
previous review, so:
Reviewed-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
> ---
> drivers/gpu/drm/i915/intel_display.c | 51 +++++++++++---------------
> ----------
> drivers/gpu/drm/i915/intel_drv.h | 15 -----------
> 2 files changed, 16 insertions(+), 50 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/intel_display.c
> b/drivers/gpu/drm/i915/intel_display.c
> index 2d31755608ce..6e6d8b342517 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -4912,11 +4912,9 @@ static void intel_post_plane_update(struct
> intel_crtc_state *old_crtc_state)
> {
> struct intel_crtc *crtc = to_intel_crtc(old_crtc_state-
> >base.crtc);
> struct drm_atomic_state *old_state = old_crtc_state-
> >base.state;
> - struct intel_crtc_atomic_commit *atomic = &crtc->atomic;
> struct intel_crtc_state *pipe_config =
> to_intel_crtc_state(crtc->base.state);
> struct drm_device *dev = crtc->base.dev;
> - struct drm_i915_private *dev_priv = dev->dev_private;
> struct drm_plane *primary = crtc->base.primary;
> struct drm_plane_state *old_pri_state =
> drm_atomic_get_existing_plane_state(old_state,
> primary);
> @@ -4928,22 +4926,19 @@ static void intel_post_plane_update(struct
> intel_crtc_state *old_crtc_state)
> if (pipe_config->wm_changed && pipe_config->base.active)
> intel_update_watermarks(&crtc->base);
>
> - if (atomic->update_fbc)
> - intel_fbc_post_update(crtc);
> -
> if (old_pri_state) {
> struct intel_plane_state *primary_state =
> to_intel_plane_state(primary->state);
> struct intel_plane_state *old_primary_state =
> to_intel_plane_state(old_pri_state);
>
> + intel_fbc_post_update(crtc);
> +
> if (primary_state->visible &&
> (needs_modeset(&pipe_config->base) ||
> !old_primary_state->visible))
> intel_post_enable_primary(&crtc->base);
> }
> -
> - memset(atomic, 0, sizeof(*atomic));
> }
>
> static void intel_pre_plane_update(struct intel_crtc_state
> *old_crtc_state)
> @@ -4951,7 +4946,6 @@ static void intel_pre_plane_update(struct
> intel_crtc_state *old_crtc_state)
> struct intel_crtc *crtc = to_intel_crtc(old_crtc_state-
> >base.crtc);
> struct drm_device *dev = crtc->base.dev;
> struct drm_i915_private *dev_priv = dev->dev_private;
> - struct intel_crtc_atomic_commit *atomic = &crtc->atomic;
> struct intel_crtc_state *pipe_config =
> to_intel_crtc_state(crtc->base.state);
> struct drm_atomic_state *old_state = old_crtc_state-
> >base.state;
> @@ -4960,15 +4954,14 @@ static void intel_pre_plane_update(struct
> intel_crtc_state *old_crtc_state)
> drm_atomic_get_existing_plane_state(old_state,
> primary);
> bool modeset = needs_modeset(&pipe_config->base);
>
> - if (atomic->update_fbc)
> - intel_fbc_pre_update(crtc);
> -
> if (old_pri_state) {
> struct intel_plane_state *primary_state =
> to_intel_plane_state(primary->state);
> struct intel_plane_state *old_primary_state =
> to_intel_plane_state(old_pri_state);
>
> + intel_fbc_pre_update(crtc);
> +
> if (old_primary_state->visible &&
> (modeset || !primary_state->visible))
> intel_pre_disable_primary(&crtc->base);
> @@ -12027,27 +12020,17 @@ int intel_plane_atomic_calc_changes(struct
> drm_crtc_state *crtc_state,
> if (visible || was_visible)
> pipe_config->fb_bits |= to_intel_plane(plane)-
> >frontbuffer_bit;
>
> - switch (plane->type) {
> - case DRM_PLANE_TYPE_PRIMARY:
> - intel_crtc->atomic.update_fbc = true;
> -
> - break;
> - case DRM_PLANE_TYPE_CURSOR:
> - break;
> - case DRM_PLANE_TYPE_OVERLAY:
> - /*
> - * WaCxSRDisabledForSpriteScaling:ivb
> - *
> - * cstate->update_wm was already set above, so this
> flag will
> - * take effect when we commit and program
> watermarks.
> - */
> - if (IS_IVYBRIDGE(dev) &&
> - needs_scaling(to_intel_plane_state(plane_state))
> &&
> - !needs_scaling(old_plane_state))
> - pipe_config->disable_lp_wm = true;
> + /*
> + * WaCxSRDisabledForSpriteScaling:ivb
> + *
> + * cstate->update_wm was already set above, so this flag
> will
> + * take effect when we commit and program watermarks.
> + */
> + if (plane->type == DRM_PLANE_TYPE_OVERLAY &&
> IS_IVYBRIDGE(dev) &&
> + needs_scaling(to_intel_plane_state(plane_state)) &&
> + !needs_scaling(old_plane_state))
> + pipe_config->disable_lp_wm = true;
>
> - break;
> - }
> return 0;
> }
>
> @@ -13475,9 +13458,6 @@ static int intel_atomic_check(struct
> drm_device *dev,
> struct intel_crtc_state *pipe_config =
> to_intel_crtc_state(crtc_state);
>
> - memset(&to_intel_crtc(crtc)->atomic, 0,
> - sizeof(struct intel_crtc_atomic_commit));
> -
> /* Catch I915_MODE_FLAG_INHERITED */
> if (crtc_state->mode.private_flags != crtc->state-
> >mode.private_flags)
> crtc_state->mode_changed = true;
> @@ -13786,7 +13766,8 @@ static int intel_atomic_commit(struct
> drm_device *dev,
> if (!modeset)
> intel_pre_plane_update(to_intel_crtc_state(c
> rtc_state));
>
> - if (crtc->state->active && intel_crtc-
> >atomic.update_fbc)
> + if (crtc->state->active &&
> + drm_atomic_get_existing_plane_state(state, crtc-
> >primary))
> intel_fbc_enable(intel_crtc);
>
> if (crtc->state->active &&
> diff --git a/drivers/gpu/drm/i915/intel_drv.h
> b/drivers/gpu/drm/i915/intel_drv.h
> index 6385dbb01ace..dae04c3f8cda 100644
> --- a/drivers/gpu/drm/i915/intel_drv.h
> +++ b/drivers/gpu/drm/i915/intel_drv.h
> @@ -596,19 +596,6 @@ struct intel_mmio_flip {
> unsigned int rotation;
> };
>
> -/*
> - * Tracking of operations that need to be performed at the
> beginning/end of an
> - * atomic commit, outside the atomic section where interrupts are
> disabled.
> - * These are generally operations that grab mutexes or might
> otherwise sleep
> - * and thus can't be run with interrupts disabled.
> - */
> -struct intel_crtc_atomic_commit {
> - /* Sleepable operations to perform before commit */
> -
> - /* Sleepable operations to perform after commit */
> - bool update_fbc;
> -};
> -
> struct intel_crtc {
> struct drm_crtc base;
> enum pipe pipe;
> @@ -669,8 +656,6 @@ struct intel_crtc {
> int scanline_start;
> } debug;
>
> - struct intel_crtc_atomic_commit atomic;
> -
> /* scalers available on this crtc */
> int num_scalers;
>
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
next prev parent reply other threads:[~2016-03-15 19:52 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-03-09 9:35 [PATCH 1/2] drm/i915: Remove some post-commit members from intel_crtc->atomic, v3 Maarten Lankhorst
2016-03-09 9:35 ` [PATCH 2/2] drm/i915: Nuke fbc members from intel_crtc->atomic, v4 Maarten Lankhorst
2016-03-15 19:52 ` Zanoni, Paulo R [this message]
2016-03-09 9:59 ` ✗ Fi.CI.BAT: warning for series starting with [1/2] drm/i915: Remove some post-commit members from intel_crtc->atomic, v3 Patchwork
2016-03-09 10:46 ` Maarten Lankhorst
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=1458071521.2281.1.camel@intel.com \
--to=paulo.r.zanoni@intel.com \
--cc=intel-gfx@lists.freedesktop.org \
--cc=maarten.lankhorst@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.