[Intel-gfx] [PATCH 1/3] drm/i915: Fix MI_DISPLAY_FLIP plane select offset on Ivybridge.
kenneth at whitecape.org
Tue Jun 7 17:55:05 PDT 2011
On 06/07/2011 04:14 PM, Keith Packard wrote:
> On Tue, 7 Jun 2011 15:54:39 -0700, Kenneth Graunke<kenneth at whitecape.org> 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<kenneth at whitecape.org>
> 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
More information about the Intel-gfx