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
No comments:
Post a Comment