AnsweredAssumed Answered

Bug in Vivante i.MX6 Wayland drivers when doing nested compositing

Question asked by Dario Freddi on Mar 3, 2015
Latest reply on Apr 10, 2015 by Dario Freddi

Hello,

 

We encountered a bug while trying nested Wayland compositing on a MX6Q board. The setup is as follows:


- Weston on fbdev as system compositor, using FSL patched Weston (behavior described below happens both with gal2d and standard gl renderer)

- A custom compositor built with QtWayland, as a session compositor over Weston.

- Apps launched into the session compositor.

 

Launching clients onto Weston works perfectly (including the session compositor), but when it comes to launching applications into the session compositor the applications crash without being able to initialize EGL. The backtrace is:

 

#0 wl_global_create (display=0x0, interface=0x74aa9d00 <wl_viv_interface>, version=version@entry=1, data=data@entry=0x0, bind=0x74abae8c <gcoWL_BindWLViv>) at src/wayland-server.c:918

#1 0x74abc8dc in gcoOS_InitLocalDisplayInfo (Display=<optimized out>,

localDisplay=0xf7c28) at ../user/gc_hal_user_wayland.c:2279

#2 0x74c85568 in veglInitLocalDisplayInfo (Display=<optimized out>) at

gc_egl_platform.c:347

#3 0x76ffa632 in WaylandEglClientBufferIntegration::initializeHardware

(this=0x2910d0, waylandDisplay=0xfd238) at

../../../../hardwareintegration/compositor/wayland-egl/waylandeglclientbufferintegration.cpp:161

#4 0x76fb39f6 in QtWayland::Compositor::initializeHardwareIntegration

(this=this@entry=0x28ee18) at wayland_wrapper/qwlcompositor.cpp:291

#5 0x76fb3c52 in QtWayland::Compositor::init (this=0x28ee18) at

wayland_wrapper/qwlcompositor.cpp:170

#6 0x76fbf7ac in QWaylandCompositor::QWaylandCompositor

(this=0x7efff798, window=0x7efff774, socketName=0x0, extensions=...) at

compositor_api/qwaylandcompositor.cpp:68

#7 0x0000d86a in ?? ()

#1 0x74abc8dc in gcoOS_InitLocalDisplayInfo (Display=<optimized out>,

localDisplay=0xf7c28) at ../user/gc_hal_user_wayland.c:2279

#2 0x74c85568 in veglInitLocalDisplayInfo (Display=<optimized out>) at

gc_egl_platform.c:347

 

The problem apparently is that into the Vivante chain the Wayland display passed over becomes NULL and is then given to wl_global_create.

The very same configuration on different hardware/drivers works perfectly.

 

Thanks for any help.

Outcomes