On Thu, Jul 13, 2017 at 7:20 PM, Daniel Vetter daniel.vetter@ffwll.ch wrote:
On Thu, Jul 13, 2017 at 3:33 PM, Vikas Patil vikasmpatil@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/39080525baca7bf136f2412d6...
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