public inbox for intel-gfx@lists.freedesktop.org
 help / color / mirror / Atom feed
From: Jani Nikula <jani.nikula@linux.intel.com>
To: Daniel Vetter <daniel@ffwll.ch>,
	Chris Wilson <chris@chris-wilson.co.uk>Daniel Vetter
	<daniel@ffwll.ch>, Jesse Barnes <jbarnes@virtuousgeek.org>,
	intel-gfx@lists.freedesktop.org, shuang.he@linux.intel.com
Subject: Re: [PATCH 4/6] drm/i915: check for audio and infoframe changes across mode sets v2
Date: Mon, 01 Dec 2014 19:35:01 +0200	[thread overview]
Message-ID: <87r3wj9su2.fsf@intel.com> (raw)
In-Reply-To: <20141201172307.GI32117@phenom.ffwll.local>

On Mon, 01 Dec 2014, Daniel Vetter <daniel@ffwll.ch> wrote:
> On Mon, Dec 01, 2014 at 04:37:41PM +0000, Chris Wilson wrote:
>> On Mon, Dec 01, 2014 at 05:30:41PM +0100, Daniel Vetter wrote:
>> > On Mon, Dec 01, 2014 at 04:09:07PM +0000, Chris Wilson wrote:
>> > > On Mon, Dec 01, 2014 at 08:04:30AM -0800, Jesse Barnes wrote:
>> > > > On Mon, 01 Dec 2014 12:25:45 +0200
>> > > > Jani Nikula <jani.nikula@linux.intel.com> wrote:
>> > > > 
>> > > > > On Thu, 06 Nov 2014, Jesse Barnes <jbarnes@virtuousgeek.org> wrote:
>> > > > > > If these change (e.g. after a modeset following a fastboot), we need to
>> > > > > > do a full mode set.
>> > > > > >
>> > > > > > v2:
>> > > > > >   - put under pipe_config check so we don't deref a null state (Jesse)
>> > > > > >
>> > > > > > Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
>> > > > > > ---
>> > > > > >  drivers/gpu/drm/i915/intel_display.c | 12 +++++++++++-
>> > > > > >  1 file changed, 11 insertions(+), 1 deletion(-)
>> > > > > >
>> > > > > > diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
>> > > > > > index cb96f11..c86eee6 100644
>> > > > > > --- a/drivers/gpu/drm/i915/intel_display.c
>> > > > > > +++ b/drivers/gpu/drm/i915/intel_display.c
>> > > > > > @@ -11230,8 +11230,18 @@ static int intel_crtc_set_config(struct drm_mode_set *set)
>> > > > > >  						   &modeset_pipes,
>> > > > > >  						   &prepare_pipes,
>> > > > > >  						   &disable_pipes);
>> > > > > > -	if (IS_ERR(pipe_config))
>> > > > > > +	if (IS_ERR(pipe_config)) {
>> > > > > >  		goto fail;
>> > > > > > +	} else if (pipe_config) {
>> > > > > > +		if (to_intel_crtc(set->crtc)->new_config->has_audio !=
>> > > > > > +		    to_intel_crtc(set->crtc)->config.has_audio)
>> > > > > > +			config->mode_changed = true;
>> > > > > > +
>> > > > > > +		/* Force mode sets for any infoframe stuff */
>> > > > > > +		if (to_intel_crtc(set->crtc)->new_config->has_infoframe ||
>> > > > > > +		    to_intel_crtc(set->crtc)->config.has_infoframe)
>> > > > > 
>> > > > > Jesse, is "||" correct here? This is bound to force a lot of mode sets.
>> > > > > 
>> > > > > See https://bugs.freedesktop.org/show_bug.cgi?id=86683
>> > > > 
>> > > > Yeah, we talked about it on IRC.  I was being extra conservative here,
>> > > > since we don't yet have code to analyze whether we need a full mode set
>> > > > due to something that will require an infoframe change.  Currently, the
>> > > > only way for us to write a new infoframe is through a mode set, and the
>> > > > old code would just happen to do a mode set most of the time we wanted
>> > > > it to (i.e. when the mode timings changed), but I don't think we'd ever
>> > > > thought of the implications of infoframe changes for stuff that doesn't
>> > > > require a mode set.
>> > > > 
>> > > > We could drop this hunk and continue to play it fast & loose, but what
>> > > > we really need here is a fuller check about whether we need a mode set
>> > > > due to requiring an infoframe change, which means pulling them apart a
>> > > > bit.
>> > > 
>> > > We need to be conservative. If we spot extraneous modesets in the wild,
>> > > we will be motivated to fix it. As a compromise, if you include a
>> > > 
>> > > DRM_DEBUG_KMS("infoframes detected - forcing full modeset\n")
>> > > 
>> > > that should be sufficient clue for us to pick up the thread again later.
>> > 
>> > The problem is that with the current code we'll do a modeset for all hdmi
>> > outputs, unconditionally. Even without fastboot=1 set. Which is too much
>> > and a regression. E.g. just having virtual > screen and scrolling with the
>> > mouse old-style would now result in a modeset each time we move one pixel.
>> > Or at least that's my analysis here (didnt test).
>> 
>> Would it be just as easy to construct a scenario that had an infroframe
>> change that didn't get applied with the revert? Besides which a full
>> modeset on every pan should be good motiviation to make them nonblocking
>> (or at least use vblank workers to do the clenaup) ;-)
>
> Without fastboot we still force a full modeset at boot-up (that part
> hasn't been cleanup up yet and brought out from under the fastboot
> switch). So for users that don't set special options reverting this won't
> cause any more modesets.

The bug doesn't mention any special options.

BR,
Jani.


> -Daniel
> -- 
> Daniel Vetter
> Software Engineer, Intel Corporation
> +41 (0) 79 365 57 48 - http://blog.ffwll.ch

-- 
Jani Nikula, Intel Open Source Technology Center
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

  reply	other threads:[~2014-12-01 17:35 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-11-05 22:26 [PATCH 1/6] drm/i915: factor out compute_config from __intel_set_mode v3 Jesse Barnes
2014-11-05 22:26 ` [PATCH 2/6] drm/i915: use compute_config in set_config v3 Jesse Barnes
2014-11-07  9:41   ` Ander Conselvan de Oliveira
2014-11-07 16:59     ` Jesse Barnes
2014-11-07 21:11     ` [PATCH] drm/i915: use compute_config in set_config v4 Jesse Barnes
2014-11-10 16:09       ` Ander Conselvan de Oliveira
2014-11-05 22:26 ` [PATCH 3/6] drm/i915/hdmi: fetch infoframe status in get_config v2 Jesse Barnes
2014-11-10 16:09   ` Ander Conselvan de Oliveira
2014-11-11 15:00   ` Daniel Vetter
2014-11-11 15:19     ` Ville Syrjälä
2014-11-11 15:23       ` Daniel Vetter
2014-11-11 15:59         ` Jesse Barnes
2014-11-05 22:26 ` [PATCH 4/6] drm/i915: check for audio and infoframe changes across mode sets v2 Jesse Barnes
2014-11-10 16:09   ` Ander Conselvan de Oliveira
2014-12-01 10:25   ` Jani Nikula
2014-12-01 16:04     ` Jesse Barnes
2014-12-01 16:09       ` Chris Wilson
2014-12-01 16:30         ` Daniel Vetter
2014-12-01 16:37           ` Chris Wilson
2014-12-01 17:23             ` Daniel Vetter
2014-12-01 17:35               ` Jani Nikula [this message]
2014-12-01 19:26                 ` Daniel Vetter
2014-12-01 16:16     ` Daniel Vetter
2014-12-01 17:22       ` Jesse Barnes
2014-11-05 22:26 ` [PATCH 5/6] drm/i915: update pipe size at set_config time Jesse Barnes
2014-11-10 16:09   ` Ander Conselvan de Oliveira
2014-11-11 15:08     ` Daniel Vetter
2014-11-05 22:26 ` [PATCH 6/6] drm/i915: calculate pfit changes in set_config v2 Jesse Barnes
2014-11-06  8:43   ` [PATCH 6/6] drm/i915: calculate pfit changes in shuang.he
2014-11-10 16:20   ` [PATCH 6/6] drm/i915: calculate pfit changes in set_config v2 Ander Conselvan de Oliveira
2014-11-10 16:32     ` Jesse Barnes
2014-11-06  9:04 ` [PATCH 1/6] drm/i915: factor out compute_config from __intel_set_mode v3 Chris Wilson
2014-11-06 14:34   ` Daniel Vetter
2014-11-10 16:08 ` Ander Conselvan de Oliveira

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=87r3wj9su2.fsf@intel.com \
    --to=jani.nikula@linux.intel.com \
    --cc=chris@chris-wilson.co.uk \
    --cc=daniel@ffwll.ch \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox