Linux: Smooth splashscreen with system having weston with drm-backend

Daniel Vetter daniel at
Fri Jul 14 13:56:37 UTC 2017

On Fri, Jul 14, 2017 at 03:07:11PM +0530, Vikas Patil wrote:
> On Thu, Jul 13, 2017 at 7:20 PM, Daniel Vetter <daniel.vetter at> wrote:
> > On Thu, Jul 13, 2017 at 3:33 PM, Vikas Patil <vikasmpatil at> wrote:
> >> Dear All,
> >>
> >> I am looking for an solution to have early smooth splashscreen on the
> >> Linux system with Weston and drm-backend.
> >>
> >> I tried showing splashscreen using Linux logo and fbcon Linux features
> >> but it is not smooth as when system boots logo gets displayed via
> >> kernel and as the Weston starts
> >> I see flicker and blackscreen.
> >>
> >> Another approach I tried is having standalone drm api based
> >> application [1] which uses the one of the available hardware
> >> plane/overlay for displaying splash image and Weston is
> >> starting and uses default plane which is different from plane utilized
> >> by above application. but still I see flicker and black screen when
> >> Weston starts.
> >>
> >> I want splash to be displayed on one of the h/w plane and Weston
> >> should start in background without any flicker and black screen on
> >> some other plane.
> >>
> >> Anyone here before achieved such a use case with such system? Looking
> >> for inputs/suggestions/ideas to achieve this. It is ok if something
> >> needs to be hacked/changd at any level (kernel driver, weston).
> >>
> >> This is required on platform such as TI (Jacinto) and Intel (Broxton)
> >> or devices based on drm graphics stack.
> >>
> >> [1]
> >>
> >> Thanking you all for your time and inputs in advance.
> >
> > If you make sure you have matching modes between the 2 users of drm
> > this should work. kms drivers (especially if they are already
> > converted to atomic) will automatically optimize transitions to not
> > flicker (if possible).
> >
> I am not sure how this will work. As per what I understood is when
> drmModeSetCrtc() is called it uses the primary/default plane and if
> application wants to use any other plane then it need to setup the
> planes using drmModeSetPlane() in application before doing
> drmModeSetCrtc() so when primary plane scan-outs at crtc phase it also
> knows it has to compose from using other planes too. This is what
> splash application is doing. But when I run weston after splash app,
> weston  I think calls drmModeSetCrtc() without the knowledge of planes
> and previous configuration overrides so it doesn't work.

Oh that doesn't work, you can't have multiple userspace things using the
display at the same time. You need to composite the different planes in
userspace first. KMS only allows one compositor at the same time (the so
called drm master).

> > If you still flicker then it's either a kernel driver issue, a hw
> > limitations (some hw needs a full modeset for e.g. changing the bit
> > depth) or you program two different things.
> >
> > Also, you must ensure that the boot-splash does not quit until weston
> > has fully taken over, otherwise kms will first shut down the screen
> > (when the splash quits), then re-enable it when weston starts.
> >
> I have tried adding while with sleep in splash app but still the
> behavior is same. FYI, I am doing this on TI's Jacinto6 platform but
> similar required on intel platform too.
> I was also thinking if there is something  can be done in drm-backend
> of weston. e.g disabling mode setting or some code but not sure if
> weston will work with it..
> Thanks & regards,
> Vikash

Daniel Vetter
Software Engineer, Intel Corporation

More information about the wayland-devel mailing list