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

Vikas Patil vikasmpatil at gmail.com
Fri Jul 14 09:37:11 UTC 2017


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.

> 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


More information about the dri-devel mailing list