[Intel-gfx] [PATCH 13/21] drm/i915: Preserve scaler state when clearing crtc_state

Konduru, Chandra chandra.konduru at intel.com
Tue Mar 17 11:11:09 PDT 2015


> -----Original Message-----
> From: Daniel Vetter [mailto:daniel.vetter at ffwll.ch] On Behalf Of Daniel Vetter
> Sent: Tuesday, March 17, 2015 7:17 AM
> To: Konduru, Chandra
> Cc: intel-gfx at lists.freedesktop.org; Conselvan De Oliveira, Ander; Vetter, Daniel
> Subject: Re: [Intel-gfx] [PATCH 13/21] drm/i915: Preserve scaler state when
> clearing crtc_state
> 
> On Sat, Mar 14, 2015 at 10:55:38PM -0700, Chandra Konduru wrote:
> > crtc_state is cleared during mode set which wipes out complete scaler
> > state too. This is causing issues. To fix, ensure scaler state is
> > preserved because it contains not only crtc scaler usage, but also
> > planes using scalers on this crtc.
> >
> > Signed-off-by: Chandra Konduru <chandra.konduru at intel.com>
> 
> I guess this is going to conflict with Ander's crtc state series. But since you're
> signed up to review that I guess you will know what needs to be changed here.
> Hopefully Ander's series will just take care of this.

Planes may have changed its scaling needs and updated scaler_users
is in crtc_state. Wiping out crtc state will wipeout staged scaler_state 
and cause incorrect behavior. So preserving computed (or staged) 
scaler state into crtc state.

Ander, 
Can you pls check for any issue here?

> -Daniel
> 
> > ---
> >  drivers/gpu/drm/i915/intel_display.c |    5 ++++-
> >  1 file changed, 4 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/gpu/drm/i915/intel_display.c
> > b/drivers/gpu/drm/i915/intel_display.c
> > index e07c24e..9c3c6b1 100644
> > --- a/drivers/gpu/drm/i915/intel_display.c
> > +++ b/drivers/gpu/drm/i915/intel_display.c
> > @@ -10617,11 +10617,14 @@ static void
> >  clear_intel_crtc_state(struct intel_crtc_state *crtc_state)  {
> >  	struct drm_crtc_state tmp_state;
> > +	struct intel_crtc_scaler_state scaler_state;
> >
> > -	/* Clear only the intel specific part of the crtc state */
> > +	/* Clear only the intel specific part of the crtc state excluding
> > +scalers */
> >  	tmp_state = crtc_state->base;
> > +	scaler_state = crtc_state->scaler_state;
> >  	memset(crtc_state, 0, sizeof *crtc_state);
> >  	crtc_state->base = tmp_state;
> > +	crtc_state->scaler_state = scaler_state;
> >  }
> >
> >  static int
> > --
> > 1.7.9.5
> >
> > _______________________________________________
> > Intel-gfx mailing list
> > Intel-gfx at lists.freedesktop.org
> > http://lists.freedesktop.org/mailman/listinfo/intel-gfx
> 
> --
> Daniel Vetter
> Software Engineer, Intel Corporation
> http://blog.ffwll.ch


More information about the Intel-gfx mailing list