All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ander Conselvan de Oliveira <conselvan2@gmail.com>
To: Jesse Barnes <jbarnes@virtuousgeek.org>, intel-gfx@lists.freedesktop.org
Subject: Re: [PATCH 2/6] drm/i915: use compute_config in set_config
Date: Wed, 29 Oct 2014 16:31:56 +0200	[thread overview]
Message-ID: <5450FA5C.2080205@gmail.com> (raw)
In-Reply-To: <1414090247-28930-2-git-send-email-jbarnes@virtuousgeek.org>

On 10/23/2014 09:50 PM, Jesse Barnes wrote:
> This will allow us to consult more info before deciding whether to flip
> or do a full mode set.
>
> Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
> ---
>   drivers/gpu/drm/i915/intel_display.c | 36 ++++++++++++++++++++++++++++++------
>   1 file changed, 30 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> index d5f95e4..e031ee8 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -11427,6 +11427,7 @@ static int intel_crtc_set_config(struct drm_mode_set *set)
>   	struct drm_device *dev;
>   	struct drm_mode_set save_set;
>   	struct intel_set_config *config;
> +	unsigned modeset_pipes, prepare_pipes, disable_pipes;
>   	int ret;
>
>   	BUG_ON(!set);
> @@ -11472,9 +11473,17 @@ static int intel_crtc_set_config(struct drm_mode_set *set)
>   	if (ret)
>   		goto fail;

If this fails ...

>
> +	ret = intel_modeset_compute_config(set->crtc, set->mode, set->fb,
> +					   &modeset_pipes, &prepare_pipes,
> +					   &disable_pipes);
> +	if (ret)
> +		goto fail;
> +
>   	if (config->mode_changed) {
> -		ret = intel_set_mode(set->crtc, set->mode,
> -				     set->x, set->y, set->fb);
> +		ret = intel_set_mode_pipes(set->crtc, set->mode,
> +					   set->x, set->y, set->fb,
> +					   modeset_pipes, prepare_pipes,
> +					   disable_pipes);
>   	} else if (config->fb_changed) {
>   		struct intel_crtc *intel_crtc = to_intel_crtc(set->crtc);
>
> @@ -11521,8 +11530,10 @@ fail:
>
>   		/* Try to restore the config */
>   		if (config->mode_changed &&
> -		    intel_set_mode(save_set.crtc, save_set.mode,
> -				   save_set.x, save_set.y, save_set.fb))
> +		    intel_set_mode_pipes(save_set.crtc, save_set.mode,
> +					 save_set.x, save_set.y, save_set.fb,
> +					 modeset_pipes, prepare_pipes,
> +					 disable_pipes))

... we end up here, with *_pipes uninitialized. And in any case, they 
were computed for the new mode, not the saved one.

Ander

>   			DRM_ERROR("failed to restore config after modeset failure\n");
>   	}
>
> @@ -13409,14 +13420,27 @@ void intel_modeset_setup_hw_state(struct drm_device *dev,
>   		for_each_pipe(dev_priv, pipe) {
>   			struct drm_crtc *crtc =
>   				dev_priv->pipe_to_crtc_mapping[pipe];
> +			unsigned modeset_pipes, prepare_pipes, disable_pipes;
> +			int ret;
> +
> +			ret = intel_modeset_compute_config(crtc, &crtc->mode,
> +							   crtc->primary->fb,
> +							   &modeset_pipes,
> +							   &prepare_pipes,
> +							   &disable_pipes);
> +			if (ret) {
> +				DRM_DEBUG_KMS("prepare failed\n");
> +				goto out;
> +			}
>
>   			__intel_set_mode(crtc, &crtc->mode, crtc->x, crtc->y,
> -					 crtc->primary->fb);
> +					 crtc->primary->fb, modeset_pipes,
> +					 prepare_pipes, disable_pipes);
>   		}
>   	} else {
>   		intel_modeset_update_staged_output_state(dev);
>   	}
> -
> +out:
>   	intel_modeset_check_state(dev);
>   }
>
>

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

  reply	other threads:[~2014-10-29 14:31 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-10-23 18:50 [PATCH 1/6] drm/i915: factor out compute_config from __intel_set_mode Jesse Barnes
2014-10-23 18:50 ` [PATCH 2/6] drm/i915: use compute_config in set_config Jesse Barnes
2014-10-29 14:31   ` Ander Conselvan de Oliveira [this message]
2014-10-30 18:47     ` Jesse Barnes
2014-10-23 18:50 ` [PATCH 3/6] drm/i915/hdmi: fetch infoframe status in get_config Jesse Barnes
2014-10-30 13:20   ` Ander Conselvan de Oliveira
2014-10-30 18:49     ` Jesse Barnes
2014-10-23 18:50 ` [PATCH 4/6] drm/i915: check for audio and infoframe changes across mode sets Jesse Barnes
2014-10-23 18:50 ` [PATCH 5/6] drm/i915: update pipe size at set_config time Jesse Barnes
2014-10-23 18:50 ` [PATCH 6/6] drm/i915: calculate pfit changes in set_config Jesse Barnes
2014-10-30 15:40   ` Ander Conselvan de Oliveira
2014-10-29 14:30 ` [PATCH 1/6] drm/i915: factor out compute_config from __intel_set_mode Ander Conselvan de Oliveira
2014-10-30 18:38   ` Jesse Barnes
2014-11-03 11:39     ` Daniel Vetter

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=5450FA5C.2080205@gmail.com \
    --to=conselvan2@gmail.com \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=jbarnes@virtuousgeek.org \
    /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.