[Intel-gfx] [RFC] drm/i915: use PIPE_CONTROL for flushing on gen6+

Jesse Barnes jbarnes at virtuousgeek.org
Fri Aug 19 19:37:17 CEST 2011


On Fri, 12 Aug 2011 16:55:47 -0700
Eric Anholt <eric at anholt.net> wrote:

> On Fri, 12 Aug 2011 11:18:45 -0700, Jesse Barnes <jbarnes at virtuousgeek.org> wrote:
> > I'm trying to figure out why this doesn't work.  Anyone have ideas?
> > 
> > On gen6+ (well probably since Cantiga actually) we're supposed to use
> > PIPE_CONTROL rather than MI_FLUSH for flushing the pipeline and
> > caches.  This patch doesn't cause hangs or crashes in my testing, but
> > does prevent glxgears from displaying anything.
> > 
> > The other worrying thing about this is that gen6+ has a command length
> > field of 3, but we're using 2 in the DRI driver, even on gen6.
> > Changing it doesn't seem to have any effect, but it's still of concern.
> 
> From what I've read, the hardware tends to process shortened packets
> using some garbage in whatever fields were left out.
> 
> I don't see why we'd need a separate object for the pipe control write
> destination.  We could just drop it in some unused bit of the status
> page, right?

Yeah, that would be fine.  I just re-used the scratch page from ILK
since we already had code for it, but on SNB it should be safe to just
use the HWS.

> I'd drop the scratch_addr from packets that don't do a post-sync write,
> for clarity.
> 
> I don't see what's actually going wrong in this patch, though.

I tried adding the TLB flush, which was missing, but I still see big
missing regions on the login screen.  I guess even blits somehow aren't
landing or getting sequenced correctly... back to the docs to look for
more clues.

-- 
Jesse Barnes, Intel Open Source Technology Center



More information about the Intel-gfx mailing list