[Intel-gfx] Flicker-free boot in DRM
jbarnes at virtuousgeek.org
Mon Oct 31 09:57:26 PDT 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
> * 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
Jesse Barnes, Intel Open Source Technology Center
-------------- next part --------------
A non-text attachment was scrubbed...
Size: 836 bytes
Desc: not available
More information about the Intel-gfx