Running EFL applications under Wayland based on Ubuntu 14.04, compile libdrm, mesa, wayland, weston, efl from sources
For correct functionality when running under Wayland you must use the latest versions of all the EFL components under Wayland. As a precursor to these steps you must have downloaded and compiled Wayland.
Installing in a custom location, system wide install would break things.
Put the above in a script env.sh and source it in the terminal you wish to build the packages.
apply this patch
or just copy
struct wl_egl_window {
struct wl_surface *surface;
otherwise you might got a crash here:
surface->win->surface === 0x3
src/gallium/state_trackers/egl/wayland/native_wayland.c
while try to eglSwapBuffers
wl_surface_attach(surface->win->surface, surface->buffer[WL_BUFFER_FRONT],
surface->dx, surface->dy);
invaid arguments errors
Setting up the environment
apt install git autoconf automake libtool autopoint check
Installing in a custom location, system wide install would break things.
Do not set LD_LIBRARY_PATH as your default, it will break things.export WLD=$HOME/install # change this to another location if you prefer export LD_LIBRARY_PATH=$WLD/lib export PKG_CONFIG_PATH=$WLD/lib/pkgconfig/:$WLD/share/pkgconfig/ export PATH=$WLD/bin:$PATH export ACLOCAL_PATH=$WLD/share/aclocal export ACLOCAL="aclocal -I $ACLOCAL_PATH" mkdir -p $WLD/share/aclocal # needed by autotools
Put the above in a script env.sh and source it in the terminal you wish to build the packages.
libdrm
sudo apt-get install xutils-dev libpciaccess-dev
git clone https://anongit.freedesktop.org/git/mesa/drm cd drm/ source ../env.sh ./autogen.sh --prefix=$WLD make -j128 make install
mesa
apt-get install x11proto-dri3-dev:all x11proto-present-dev:all libudev-dev llvm
apply below patch if encountered libdrm/nouveau.h not found errorgit clone https://anongit.freedesktop.org/git/mesa/mesa cd mesa git checkout mesa-10.1.3 source ../env.sh ./autogen.sh --prefix=$WLD --enable-egl --enable-opengl --enable-gles2 --with-egl-platforms=x11,wayland,drm --enable-gbm --enable-shared-glapi --with-gallium-drivers=r300,r600,swrast,nouveau --enable-gallium-osmesa --enable-gallium-egl make -j128 make install
apply this patch
or just copy
sudo cp /usr/include/libdrm/nouveau/nouveau.h /usr/include/libdrm/
wayland
apt install libffi-dev libexpat-dev libxml2-dev
git clone https://anongit.freedesktop.org/git/wayland/wayland.git
# master head commit 0fa3474be36be5fee98bebb169df68dcf806e3f3
cd wayland
source ../env.sh
./autogen.sh --prefix=$WLD --disable-documentation
make -j128
make install
wayland-protocols
git clone https://anongit.freedesktop.org/git/wayland/wayland-protocols.git cd wayland-protocols # master, head commit d5ded4ddaf68b161fec23d75204d2153232c3a47 source ../env.sh ./autogen.sh --prefix=$WLD make && make install
libinput
apt install libmtdev-dev libudev-dev libevdev-dev libwacom-dev
git clone https://anongit.freedesktop.org/git/wayland/libinput.git git checkout 1.7.0 source ../env.sh ./autogen.sh --prefix=$WLD --disable-libwacom make -j128 make install
weston
apt install libegl1-mesa-dev libgles2-mesa-dev libxcursor-dev libcairo2-dev libxcb-composite0-dev libgbm-dev libxkbcommon-dev libjpeg8-dev libpam0g-dev
git clone https://anongit.freedesktop.org/git/wayland/weston # mater commit 9fe5d5fae9d41bb5f9ec070dbbc0567c738f4141 cd weston source ../env.sh ./autogen.sh --prefix=$WLD --disable-setuid-install make -j128 make install
libxkbcommon
ifpkg-config --modversion xkbcommon
< 0.5, then compile libxkbcommonapt-get install libxcb-xkb-dev
git clone https://github.com/xkbcommon/libxkbcommon.git cd libxkbcommon source ../env.sh ./autogen.sh --prefix=$WLD make -j128 make install
efl
apt-get install libssl-dev libluajit-5.1-dev libfribidi-dev libgif-dev libtiff-dev libmount-dev libblkid-dev libsndfile1-dev libbullet-dev
apt-get install libgstreamer1*
git clone https://git.enlightenment.org/core/efl.git/ cd efl # next commit will require systemd > 209,while ubuntu 14.04 only have 204 git reset --hard cec8a49b51b13670e5adaeb44940f3bece106fb4 source ../env.sh ./autogen.sh --prefix=$WLD --enable-wayland --enable-ecore-wayland --enable-egl --with-opengl=es make make install
Notes
please confirm that struct wl_egl_window definition in wayland and mesa are same.struct wl_egl_window {
struct wl_surface *surface;
};int width; int height; int dx; int dy; int attached_width; int attached_height; void *private; void (*resize_callback)(struct wl_egl_window *, void *);
otherwise you might got a crash here:
surface->win->surface === 0x3
src/gallium/state_trackers/egl/wayland/native_wayland.c
while try to eglSwapBuffers
wl_surface_attach(surface->win->surface, surface->buffer[WL_BUFFER_FRONT],
surface->dx, surface->dy);
invaid arguments errors
Comments
Post a Comment