All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ander Conselvan De Oliveira <conselvan2@gmail.com>
To: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
	intel-gfx@lists.freedesktop.org
Subject: Re: [PATCH 09/12] drm/i915: Remove some post-commit members from intel_crtc->atomic, v2.
Date: Wed, 25 Nov 2015 15:11:40 +0200	[thread overview]
Message-ID: <1448457100.2907.27.camel@gmail.com> (raw)
In-Reply-To: <1447945645-32005-10-git-send-email-maarten.lankhorst@linux.intel.com>

On Thu, 2015-11-19 at 16:07 +0100, Maarten Lankhorst wrote:
> fb_bits is useful to have in the crtc_state for cs flips when
> the code is updated to use intel_frontbuffer_flip_prepare/complete.
> So calculate it in advance and move it to crtc_state. The other stuff
> can be calculated in post_plane_update, and aren't useful elsewhere.
> 
> Changes since v1:
> - Changing wording, remove comment about loop.
> 
> Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> ---
>  drivers/gpu/drm/i915/intel_atomic.c  |  1 +
>  drivers/gpu/drm/i915/intel_display.c | 29 ++++++++++++++++++++---------
>  drivers/gpu/drm/i915/intel_drv.h     |  3 +--
>  3 files changed, 22 insertions(+), 11 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_atomic.c
> b/drivers/gpu/drm/i915/intel_atomic.c
> index 8e579a8505ac..9a45cff26767 100644
> --- a/drivers/gpu/drm/i915/intel_atomic.c
> +++ b/drivers/gpu/drm/i915/intel_atomic.c
> @@ -98,6 +98,7 @@ intel_crtc_duplicate_state(struct drm_crtc *crtc)
>  	crtc_state->disable_cxsr = false;
>  	crtc_state->wm_changed = false;
>  	crtc_state->fb_changed = false;
> +	crtc_state->fb_bits = 0;
>  
>  	return &crtc_state->base;
>  }
> diff --git a/drivers/gpu/drm/i915/intel_display.c
> b/drivers/gpu/drm/i915/intel_display.c
> index d539703de367..95501aba7d23 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -4730,15 +4730,20 @@ intel_pre_disable_primary(struct drm_crtc *crtc)
>  	hsw_disable_ips(intel_crtc);
>  }
>  
> -static void intel_post_plane_update(struct intel_crtc *crtc)
> +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);
>  
> -	intel_frontbuffer_flip(dev, atomic->fb_bits);
> +	intel_frontbuffer_flip(dev, pipe_config->fb_bits);
>  
>  	crtc->wm.cxsr_allowed = true;
>  
> @@ -4748,8 +4753,17 @@ static void intel_post_plane_update(struct intel_crtc
> *crtc)
>  	if (atomic->update_fbc)
>  		intel_fbc_update(dev_priv);
>  
> -	if (atomic->post_enable_primary)
> -		intel_post_enable_primary(&crtc->base);
> +	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);

Hmm, old_pri_state and old_primary_state. I wonder if it is worth creating a
intel_atomic_get_existing_plane_state() helper to avoid this kind of stuff.
Something to check out later.

Reviewed-by: Ander Conselvan de Oliveira <conselvan2@gmail.com>


> +
> +		if (primary_state->visible &&
> +		    (needs_modeset(&pipe_config->base) ||
> +		     !old_primary_state->visible))
> +			intel_post_enable_primary(&crtc->base);
> +	}
>  
>  	if (needs_modeset(&pipe_config->base))
>  		intel_display_power_put(dev_priv, POWER_DOMAIN_MODESET);
> @@ -11729,13 +11743,10 @@ int intel_plane_atomic_calc_changes(struct
> drm_crtc_state *crtc_state,
>  	}
>  
>  	if (visible || was_visible)
> -		intel_crtc->atomic.fb_bits |=
> -			to_intel_plane(plane)->frontbuffer_bit;
> +		pipe_config->fb_bits |= to_intel_plane(plane)
> ->frontbuffer_bit;
>  
>  	switch (plane->type) {
>  	case DRM_PLANE_TYPE_PRIMARY:
> -		intel_crtc->atomic.post_enable_primary = turn_on;
> -
>  		if (turn_off)
>  			intel_crtc->atomic.disable_fbc = true;
>  
> @@ -13444,7 +13455,7 @@ static int intel_atomic_commit(struct drm_device *dev,
>  	intel_atomic_wait_for_vblanks(dev, dev_priv, crtc_vblank_mask);
>  
>  	for_each_crtc_in_state(state, crtc, crtc_state, i)
> -		intel_post_plane_update(to_intel_crtc(crtc));
> +		intel_post_plane_update(to_intel_crtc_state(crtc_state));
>  
>  	mutex_lock(&dev->struct_mutex);
>  	drm_atomic_helper_cleanup_planes(dev, state);
> diff --git a/drivers/gpu/drm/i915/intel_drv.h
> b/drivers/gpu/drm/i915/intel_drv.h
> index e4ae629e7009..35ae827ab923 100644
> --- a/drivers/gpu/drm/i915/intel_drv.h
> +++ b/drivers/gpu/drm/i915/intel_drv.h
> @@ -370,6 +370,7 @@ struct intel_crtc_state {
>  #define PIPE_CONFIG_QUIRK_MODE_SYNC_FLAGS	(1<<0) /* unreliable sync
> mode.flags */
>  	unsigned long quirks;
>  
> +	unsigned fb_bits; /* framebuffers to flip */
>  	bool update_pipe; /* can a fast modeset be performed? */
>  	bool disable_cxsr;
>  	bool wm_changed; /* watermarks are updated */
> @@ -537,9 +538,7 @@ struct intel_crtc_atomic_commit {
>  	bool disable_fbc;
>  
>  	/* Sleepable operations to perform after commit */
> -	unsigned fb_bits;
>  	bool update_fbc;
> -	bool post_enable_primary;
>  };
>  
>  struct intel_crtc {
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

  reply	other threads:[~2015-11-25 13:11 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-11-19 15:07 [PATCH 00/12] Remove intel_crtc->atomic and fix BAT! Maarten Lankhorst
2015-11-19 15:07 ` [PATCH 01/12] drm/i915: Move disable_cxsr to the crtc_state Maarten Lankhorst
2015-11-24 12:24   ` Ander Conselvan De Oliveira
2015-11-19 15:07 ` [PATCH 02/12] drm/i915: Calculate watermark related members in the crtc_state, v3 Maarten Lankhorst
2015-11-24 14:03   ` Ander Conselvan De Oliveira
2015-11-24 14:55     ` Maarten Lankhorst
2015-11-25  9:22       ` Ander Conselvan De Oliveira
2015-11-30  8:52         ` Maarten Lankhorst
2015-12-03 12:49           ` [PATCH v2 02/12] drm/i915: Calculate watermark related members in the crtc_state, v4 Maarten Lankhorst
2015-12-03 14:32             ` Daniel Vetter
2015-11-19 15:07 ` [PATCH 03/12] drm/i915/skl: Update watermarks before the crtc is disabled Maarten Lankhorst
2015-11-25  9:33   ` Ander Conselvan De Oliveira
2015-11-25  9:33     ` [Intel-gfx] " Ander Conselvan De Oliveira
2015-11-19 15:07 ` [PATCH 04/12] drm/i915: Remove double wait_for_vblank on broadwell Maarten Lankhorst
2015-11-25  9:44   ` Ander Conselvan De Oliveira
2015-12-08 14:14     ` Ville Syrjälä
2015-12-09 15:27       ` Maarten Lankhorst
2015-12-10  8:43       ` Daniel Vetter
2015-11-19 15:07 ` [PATCH 05/12] drm/i915: Kill off intel_crtc->atomic.wait_vblank, v2 Maarten Lankhorst
2015-11-25 12:21   ` Ander Conselvan De Oliveira
2015-11-25 12:38     ` Imre Deak
2015-11-25 13:37     ` Daniel Stone
2015-11-25 12:39   ` Ander Conselvan De Oliveira
2015-11-19 15:07 ` [PATCH 06/12] drm/i915: Remove intel_crtc->atomic.disable_ips Maarten Lankhorst
2015-11-25 12:51   ` Ander Conselvan De Oliveira
2015-11-19 15:07 ` [PATCH 07/12] drm/i915: Remove atomic.pre_disable_primary Maarten Lankhorst
2015-11-19 15:07 ` [PATCH 08/12] drm/i915: Remove update_sprite_watermarks Maarten Lankhorst
2015-11-19 15:07 ` [PATCH 09/12] drm/i915: Remove some post-commit members from intel_crtc->atomic, v2 Maarten Lankhorst
2015-11-25 13:11   ` Ander Conselvan De Oliveira [this message]
2015-11-19 15:07 ` [PATCH 10/12] drm/i915: Nuke fbc members from intel_crtc->atomic Maarten Lankhorst
2015-11-26 11:28   ` Ander Conselvan De Oliveira
2015-11-19 15:07 ` [PATCH 11/12] drm/i915: Keep track of the cdclk as if all crtc's were active Maarten Lankhorst
2015-11-26 13:31   ` Ander Conselvan De Oliveira
2015-11-26 13:32     ` Ander Conselvan De Oliveira
2015-12-21 13:17   ` Mika Kahola
2015-11-19 15:07 ` [PATCH 12/12] drm/i915: Calculate visibility in check_plane correctly regardless of dpms Maarten Lankhorst
2015-11-26 13:48   ` Ander Conselvan De Oliveira
2015-11-30  9:45     ` Maarten Lankhorst
2015-12-21 13:27   ` Mika Kahola

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=1448457100.2907.27.camel@gmail.com \
    --to=conselvan2@gmail.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.