From mboxrd@z Thu Jan 1 00:00:00 1970 From: Kenneth Graunke Subject: Re: [PATCH 1/3] drm/i915: Fix MI_DISPLAY_FLIP plane select offset on Ivybridge. Date: Tue, 07 Jun 2011 17:55:05 -0700 Message-ID: <4DEEC869.7020707@whitecape.org> References: <1307487281-3015-1-git-send-email-kenneth@whitecape.org> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii"; Format="flowed" Content-Transfer-Encoding: 7bit Return-path: Received: from homiemail-a6.g.dreamhost.com (caiajhbdcbhh.dreamhost.com [208.97.132.177]) by gabe.freedesktop.org (Postfix) with ESMTP id 778999E75B for ; Tue, 7 Jun 2011 17:55:00 -0700 (PDT) In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org Errors-To: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org To: Keith Packard Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org On 06/07/2011 04:14 PM, Keith Packard wrote: > On Tue, 7 Jun 2011 15:54:39 -0700, Kenneth Graunke wrote: >> According to BSpec volume 1c.4 section 3.2.9, Display (Plane) Select is >> now at bits 21:19 instead of 21:20. >> >> Signed-off-by: Kenneth Graunke > > I will note that the docs have an obvious bug -- 21:8 are 'reserved' on > IVB while 21:19 are 'Display (Plane) Select'. In the latest version of the Render Engine Command Streamer chapter, 18:8 are 'reserved' on IVB. Perhaps you have an old copy? Apparently MI_DISPLAY_FLIP also exists in the Blitter Engine on IVB. I suspect we actually need to use that, but I haven't tried to yet. > I trust you've actually > tried this on hardware and noticed that it works better now? No, actually...page flips are still broken. I suspect this patch is necessary but insufficient. Feel free to hold off on merging it. >> + >> + case 7: >> + OUT_RING(MI_DISPLAY_FLIP | (intel_crtc->plane<< 19)); >> + OUT_RING(fb->pitch | obj->tiling_mode); >> + OUT_RING(obj->gtt_offset); >> + >> + pf = I915_READ(PF_CTL(pipe))& PF_ENABLE; >> + pipesrc = I915_READ(PIPESRC(pipe))& 0x0fff0fff; >> + OUT_RING(pf | pipesrc); > > What's this last DWORD supposed to be for? The IVB spec says length > should be '1' and there should be only 3 DWORDS in this command. Good question. My reading of the docs say that it should be 3 DWORDs on SNB as well; this code was directly lifted from "case 6" above (save the first line). --Kenneth