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

Matt Hoosier matt.hoosier at gmail.com
Mon Jul 17 19:39:42 UTC 2017


On Fri, Jul 14, 2017 at 8:56 AM, Daniel Vetter <daniel at ffwll.ch> wrote:

> 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 ffwll.ch>
> wrote:
> > > On Thu, Jul 13, 2017 at 3:33 PM, Vikas Patil <vikasmpatil at gmail.com>
> 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] http://git.ti.com/glsdk/example-applications/blobs/
> 39080525baca7bf136f2412d62436366a736af6b/drm-tests/drm_z_alpha.c
> > >>
> > >> 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).
> -Daniel
>

I think what you're missing here is that you'll need to register your DRM
splashscreen program with a VT session. Make sure to implement handling of
the VT_SETMODE ioctl so that your application drops its DRM master status.

Also beware that the DRM backend of Weston will aggressively set the mode
before you have any chance to paint user-defined content of your own in a
Wayland client program. So there will still be some window of time during
which your early splashscreen disappears and no specific application
content replaces it.


>
> > > 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
> http://blog.ffwll.ch
> _______________________________________________
> wayland-devel mailing list
> wayland-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/wayland-devel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/dri-devel/attachments/20170717/626007aa/attachment-0001.html>


More information about the dri-devel mailing list