AnsweredAssumed Answered

i.MX6 and QtWayland bad performance and other issue

Question asked by YenChin Lee on Oct 20, 2014
Latest reply on Jul 19, 2017 by Adelante sey

Has anyone try playing i.MX6 with QtWayland ? I find out the

QtWayland application performance is really bad, worse than running the same

application under X11 or EGLFS.

 

These test is use image build from Yocto project with meta-freescale's patches.

 

I use `Cinematic Experience' as my testing app, here is the

cinematicexperience running under weston with qtwayland.

 

   https://www.dropbox.com/s/3au5mmlvkroerh5/i.mx6%20with%20qtwayland.mp4?dl=0

 

However, compare the application speed wth EGLFS platform, you will find

the QtWayland on i.MX6 is really slow.

 

   https://www.dropbox.com/s/nmjbzue7k5rxwz6/i.mx6%20with%20eglfs.mp4?dl=0

 

Expect for the bad performance, I also can't run QtWayland's examples,

ex: qml-compositor

 

When I try to run the qml-compositor, there's an EGL error.

 

    root@machine:/usr/share/qt5/

examples/wayland/qml-compositor# ./qml-compositor -platform eglfs
    QEglFSImx6Hooks will set environment variable FB_MULTI_BUFFER=2 to enable double buffering and vsync.
    If this is not desired, you can override this via: export QT_EGLFS_IMX6_NO_FB_MULTI_BUFFER=1
    QtCompositor: Failed to initialize EGL display. Could not find glEGLImageTargetTexture2DOES.

Sine the compositor can't initialize EGL display, I can't running either
opengl app nor QtQuick2 application via wayland protocol.

But weston compositor can run well under the fb-backend.so, just the
slow qtwayland performance problem (weston-simple-egl works fine).

Since my goal is use Qt as the core of my system, it will be nice to run
QtWayland and build a compositor in purely Qt, like Jolla's Salifish does.

Is there anyway to make QtWayland and it's example run well under i.MX6 ?

Here is my libraries version and what I do.

Here is my machine info:

    CPU: i.MX6 DuleLite
    DRAM: 1GB (176MB for GPU)
    Kernel: 3.10.17-1.0.1_ga
    Type: Based on wandboard

    meta-freescale branch: master
    meta-qt5 branch: master

I use Qt 5.3.2 and QtWayland-git branch 5.4 (commit: c3d2a7b), which
need to add a backport patch to build with Qt 5.3.2, you can find the
patch at following link

    http://pastebin.com/gZFxSgRa

To use qtwayland, you need to setup `QT_WAYLAND_IGNORE_BIND_DISPLAY=1` variable since
i.MX6 Vivante do not use eglBindWaylandDisplayWL() to bind the
wl_display to the EGL display. For more information, please see

    https://qt.gitorious.org/qt/lkundrak-qtwayland/commit/4d4fe579225ac089b24912bf8fad5585e615ce6b

Note:

[1] You can find Qt 5.3.2 in meta-qt5 master branch
     https://github.com/meta-qt5/meta-qt5.git

[2] I also testing the libhybris on i.MX6 with Android 4.4.2_r1, but the
qml-compositor example also can't run and the qt5-qpa-hwcompositor QPA
plugin performance is not so good like qtwayland.

If you interesting to testing i.mx6 with libhybris, you can find some
info in

     https://github.com/aosp-hybris

The libhybris please to use following repo

     https://github.com/aosp-hybris/libhybris   (branch: test_viv)

Currently aosp-hybris project just put on hold (temporarily halted)
until my company's work finish. But if you interested in how to run
i.MX6DL under wandboard with libhybrs, you can contacts me for the image.

Outcomes