[Intel-gfx] [PATCH 3/3] drm/i915/bdw: Use the GEN8 SRM when qeueing a flip

Daniel Vetter daniel at ffwll.ch
Wed Apr 9 14:59:51 CEST 2014


On Mon, Apr 07, 2014 at 01:59:17PM -0700, Ben Widawsky wrote:
> On Mon, Apr 07, 2014 at 08:24:34PM +0100, Damien Lespiau wrote:
> > Signed-off-by: Damien Lespiau <damien.lespiau at intel.com>
> > ---
> >  drivers/gpu/drm/i915/intel_display.c | 22 +++++++++++++++++++---
> >  1 file changed, 19 insertions(+), 3 deletions(-)
> > 
> > diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> > index 3697433..a646ed4 100644
> > --- a/drivers/gpu/drm/i915/intel_display.c
> > +++ b/drivers/gpu/drm/i915/intel_display.c
> > @@ -8821,8 +8821,16 @@ static int intel_gen7_queue_flip(struct drm_device *dev,
> >  	}
> >  
> >  	len = 4;
> > -	if (ring->id == RCS)
> > +	if (ring->id == RCS) {
> >  		len += 6;
> > +		/*
> > +		 * On Gen 8, SRM is now taking an extra dword to accommodate
> > +		 * 48bits addresses, and we need a NOOP for the batch size to
> > +		 * stay even.
> > +		 */
> > +		if (IS_GEN8(dev))
> > +			len += 2;
> > +	}
> >  
> >  	/*
> >  	 * BSpec MI_DISPLAY_FLIP for IVB:
> > @@ -8857,10 +8865,18 @@ static int intel_gen7_queue_flip(struct drm_device *dev,
> >  		intel_ring_emit(ring, ~(DERRMR_PIPEA_PRI_FLIP_DONE |
> >  					DERRMR_PIPEB_PRI_FLIP_DONE |
> >  					DERRMR_PIPEC_PRI_FLIP_DONE));
> > -		intel_ring_emit(ring, MI_STORE_REGISTER_MEM(1) |
> > -				MI_SRM_LRM_GLOBAL_GTT);
> > +		if (IS_GEN8(dev))
> > +			intel_ring_emit(ring, MI_STORE_REGISTER_MEM_GEN8(1) |
> > +					      MI_SRM_LRM_GLOBAL_GTT);
> > +		else
> > +			intel_ring_emit(ring, MI_STORE_REGISTER_MEM(1) |
> > +					      MI_SRM_LRM_GLOBAL_GTT);
> >  		intel_ring_emit(ring, DERRMR);
> >  		intel_ring_emit(ring, ring->scratch.gtt_offset + 256);
> > +		if (IS_GEN8(dev)) {
> > +			intel_ring_emit(ring, 0);
> > +			intel_ring_emit(ring, MI_NOOP);
> > +		}
> >  	}
> >  
> >  	intel_ring_emit(ring, MI_DISPLAY_FLIP_I915 | plane_bit);
> 
> Cool. This explains the bad DERRMR values I was seeing in in error
> states. I'm honestly didn't check if we actually need an SRM for BDW
> still, but I'll assume you did check.
> 
> I also think it's worth to make a intel_gen8_queue_flip, but since I
> don't touch this code much, I'll leave it to you to decide.

Yeah, gen8_queue_flip would kinda look neat. Anyway pull in the entire
series, thanks.
-Daniel

> 
> The series is:
> Reviewed-by: Ben Widawsky <ben at bwidawsk.net>
> 
> minus the above mentioned fact of whether it's needed.
> 
> -- 
> Ben Widawsky, Intel Open Source Technology Center
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx

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



More information about the Intel-gfx mailing list