[Intel-gfx] [PATCH 1/3] drm/i915: Fix MI_DISPLAY_FLIP plane select offset on Ivybridge.

Kenneth Graunke kenneth at whitecape.org
Wed Jun 8 02:55:05 CEST 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 
first line).

--Kenneth



More information about the Intel-gfx mailing list