[Intel-gfx] Flicker-free boot in DRM

Jesse Barnes jbarnes at virtuousgeek.org
Mon Oct 31 17:57:26 CET 2011


On Sat, 29 Oct 2011 00:05:22 -0700
"Keith Packard" <keithp at keithp.com> wrote:

> 
> Steve Langasek came over today and we hacked on the i915 driver
> initialization code to try and avoid the initial mode set. I thought I'd
> summarize what we found out.
> 
>  *  Ubuntu has hacked up grub2 so that it gets the boot monitor running
>     in a reasonable configuration using VBE calls if possible. In
>     particular, it does try to find a 32bpp mode.
> 
>     Unfortunately, this won't actually work on many machines as the BIOS
>     is often missing the native mode for the panel. So, we'll often need to
>     deal with situations where the BIOS has got the panel running in the
>     right mode, but there's a scaler running and the pipe and plane are
>     wrong. I wonder if it's possible to change the plane/pipe/scaler
>     configuration without turning the panel off and without causing any
>     visible artifacts on the screen. My (limited) testing generated
>     quite the visual fireworks...

Should be possible I think, but depends on the specific hardware rev.
Last time I tried lots of combinations was on Crestline for panel
fitting.  Scaling down or up with fitting worked w/o shutting down the
pipe, but to scale back up from a centered mode required a pipeconf
toggle.  I think BIOSes mostly use the fitter though, so it ought to be
possible.

>  *  Constructing a fake drm_framebuffer is a pain; there are a million
>     places that assume all kinds of things about the frame buffer on
>     a crtc.

Easier to just copy the contents out of the current framebuffer into a
new one before flipping to the new buffer.

>  *  DRM destroys all references to the current mode before crtc->mode_set is
>     called. This makes it impossible to short-circuit pieces of mode_set
>     internally. There's absolutely no reason for this; all of the
>     changed data are available as parameters to the underlying functions.
> 
>  *  drm should let the driver decide whether mode_set_base will work
>     to switch frame buffers. Otherwise, there are all kinds of cases
>     which the hardware supports and which it will refuse to let through.
>     I think it should return -EAGAIN or some such to signal that the
>     system should try to do a full mode set.

I think that's already possible if we don't use the helper function for
mode setting.

-- 
Jesse Barnes, Intel Open Source Technology Center
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/intel-gfx/attachments/20111031/4a212756/attachment.sig>


More information about the Intel-gfx mailing list