As part of an internship for OpenWide Ingénierie, I spent the latest
month working on an EGLFS (EGL Full Screen) module for the EFL. The idea is
similar to the Qt's EGLFS module, indeed the goal is to provide hardware
accelerated graphics on embedded linux platforms which only support the
framebuffer and libEGL/libGLESv2 without using X11, Wayland or KMS. This
opens up numerous exciting possibilities: for example I've been able to use
Enlightenment on Android devices with libhybris. However with just a little
bit more code other examples may include standalone EFL on the
Raspberry-Pi, or on Mali platforms, iMX6 and so on...

    My work included the creation of ecore_evas_eglfs which uses the
existing ecore_fb and the new evas_eglfs. As the ecore_evas_eglfs module is
almost the same as ecore_evas_fb, code duplication was avoided by appending
ecore_evas_eglfs_new_internal at the end of ecore_evas_fb.c. (in the same
way as ecore_evas_gl_drm_new was added at the end of ecore_evas_drm.c)
    The evas_eglfs module includes more new things. This time my work was
based on gl_drm, however I removed the usage of DRM and GBM to only keep
the bare necessities: EGL/GLESv2. When using eglCreateWindowSurface the
native_window argument is set to NULL so that EGL creates a full screen

    In order to make this work more useful I also added EGLFS support to
Elementary and I created a Wl_Eglfs module for Enlightenment. I was able to
test my module in plenty of situations including: unit tests with expedite,
simple application with elementary_tests standalone, complete desktop
experience with enlightenment and fully-featured app with calaos.

    My code modifications are available on the following git repositories
which might still be a little bit hacky for now :
        * https://github.com/FlorentRevest/EFL
        * https://github.com/FlorentRevest/Elementary
        * https://github.com/FlorentRevest/Enlightenment

    During my epic journey with EFL on embedded Linux I also created an
OpenEmbedded distribution called boot2efl. Once again my work was inspired
by boot2qt and I designed a lightweight system able to run on libhybris.
The most supported platform is the radxa rock however there is some very
early support for the ODroid C1 and Cubieboard1. You can download a
flashable update.img image here :
    Or you can build it yourself by running the following commands :
    git clone https://github.com/FlorentRevest/boot2efl
    cd boot2efl
    . ./prepare-build.sh
    bitbake boot2efl-image

    Demonstration videos are available on youtube here :
https://youtu.be/RdCyzL0Gguk https://youtu.be/YnD9qt1dvGc
    As you can see on the Enlightenment example there is a glitch when
showing the main menu. It still needs some investigations.

    I hope my work will prove useful to someone else, I believe it can be a
great piece of news for Tizen porting on Android devices. (libhybris is the
technology behind namely SailfishOS, WebOS-Ports, Mer and Nemomobile) Don't
hesitate to ask me any question you might have on my plugin or to share
your thoughts about my work.
    Florent Revest
enlightenment-devel mailing list

Reply via email to