Wayland

Last Author
devilhorns
Last Updated
31 Days Ago
Subscribers
harsh1492, etrunko

We support Wayland

Current support work is being done to enable client-side applications (as opposed to making a Wayland compositor itself - that is a future plan). Currently EFL applications that use the lower-level Ecore-Evas and higher level Elementary API's will work and display correctly in Wayland, handle input, resizing and moving. Client-side frames are already provided. Both Shared-memory buffers AND EGL/OpenGL-ES2 buffers are supported. The Shared-memory buffers are purely CPU-rendered, meaning that they will work with or without OpenGL hardware acceleration support. They are fast and usable. The OpenGL-ES2 display is fully accelerated with all primitives being rendered by OpenGL (Hardware acceleration) and already work fully due to a long history of supporting this under X11 and other embedded EGL/OpenGL-ES2 environments.

In the future, we plan to implement a complete Wayland compositor (stand-alone, no X11 needed). At this stage this is just a plan, but it will happen. We will definitely need to extend Wayland protocol to make a fully functioning desktop or mobile environment.

All the source code for Wayland support is already in our source code repositories. You will need to check them out. Please see our Contribute page for information there.

EFL is currently tracking Wayland master and will not function with the 0.85 release.

Current Status

[Evas Engines]

  • Shared Memory Engine
    • Feature complete including support for double or triple buffering, transparency, and rotation
    • Supports client-side frame decorations
  • EGL Engine
    • Feature complete including support for double or triple buffering, transparency, rotation, partial swaps, and buffer ageing
    • Supports client-side frame decorations
  • DRM Engine
    • Current features include: support for double or triple buffering
    • Supports software rendering only at the moment
    • Hardware Accelerated rendering in-progress

[Ecore_Evas]

  • Shared Memory Engine
    • Supports client-side frame decorations
    • Supports Transparency and Rotation
    • Supports Wayland Shell Maximize and Fullscreen
    • Provides internally drawn client-side frame decorations if none are supplied
  • EGL Engine
    • Supports client-side frame decorations
    • Supports Transparency and Rotation
    • Supports Wayland Shell Maximize and Fullscreen
    • Provides internally drawn client-side frame decorations if none are supplied

[Elementary]

  • Can utilize Shared Memory or EGL Engine
  • Complete support for all widgets provided by the toolkit
  • Supports Wayland Cursors
  • Supports Wayland Copy-N-Paste
  • Supports Wayland Drag-N-Drop

[Enlightenment 0.18]

  • Complete support for rendering Wayland Client applications inside the existing X11 Compositor
  • Provides a Wayland Shell for use by Wayland Client applications
  • Current work is progressing toward a Wayland-Only version

[Enlightenment 0.19]

  • Complete support for rendering Wayland Client applications inside the existing X11 Compositor
  • Provides a Wayland Shell for use by Wayland Client applications
  • Experimental support for running Wayland-Only (without X11)

Building Wayland Support

The following instructions assume that you have Wayland/Weston installed as per http://wayland.freedesktop.org/building.html

These steps assume that you have the environment variables set as per the above building instructions.

NOTE: If you are using an Intel video card, and wish to also have the Enlightenment X11 Compositor be able to render using OpenGL, then you should build Mesa (from the above instructions) with the --enable-osmesa and --enable-glx-tls options. This will also require a kernel >= 3.6 for full support. If you are using an Intel video card, you should also be using a kernel >= 3.9.2 or you Will experience various bugs and crashes with the latest Wayland.

[Compiling EFL]

To compile EFL with Wayland support, you should compile EFL as you normally would, and enable the desired below options:

  • --enable-wayland
    • To enable building the Evas Wayland Shared-Memory Engine
  • --enable-egl --with-opengl=es
    • To enable building support for the Evas Wayland EGL Engine
  • --enable-drm
    • To enable building support for the Evas DRM Engine

[Compiling Elementary]

Elementary requires no special options to support Wayland however it IS required that EFL was built with Wayland support in order to render Elementary applications inside a Wayland compositor (such as Weston)

[Compiling Enlightenment 0.18]

To compile Enlightenment with Wayland Client support, you should compile Enlightenment as you normally would, and enable the desired below options:

  • --enable-wayland-clients
    • To enable build support for the Enlightenment Compositor to render Wayland Clients
  • --enable-wayland-egl
    • To enable build support for the Enlightenment Compositor to render Wayland Clients using EGL

[Compiling Enlightenment 0.19]

To compile Enlightenment with Wayland Client support, you should compile Enlightenment as you normally would, and enable the desired below options:

  • --enable-wayland-clients
    • To enable build support for the Enlightenment Compositor to render Wayland Clients
  • --enable-wayland-egl
    • To enable build support for the Enlightenment Compositor to render Wayland Clients using EGL
  • To build the Experimental Wayland-Only version, please see the README.wayland file located here: https://git.enlightenment.org/core/enlightenment.git/tree/README.wayland

Running

For applications that use Ecore_Evas directly set the environment variable ECORE_EVAS_ENGINE to either wayland_egl or wayland_shm depending on whether you wish to use the SHM based interface with software rendering or use EGL.

For applications that use Elementary set the environment variable ELM_ENGINE to wayland_egl or wayland_shm as above.

For Wayland Client applications running inside the Enlightenment X11 Compositor, no special variables need be set (however you should be sure to restart Enlightenment After following the above build instructions)

NOTE: Support for rendering Wayland Clients inside the Enlightenment X11 Compositor Does require that the XDG_RUNTIME_DIR environment variable to be set. If it is not set by your distribution, please consult documentation for your distribution on the proper way to set it. If none is set, then the Enlightenment X11 Compositor will use /tmp by default.

Imported from https://trac.enlightenment.org/e/wiki/Wayland
History:
1 raster 2012-01-11 21:07:23
2 raster 2012-01-11 21:17:49
3 diegoviola 2012-01-11 21:26:40
4 devilhorns 2012-01-12 06:57:42
5 devilhorns 2012-01-12 17:57:24
6 pcezar 2012-08-20 12:25:29 Initial Wayland + EFL's how-to entry
7 pcezar 2012-08-20 12:36:36 Fix minor typo
8 pcezar 2012-08-20 13:02:59
9 pcezar 2012-08-20 13:04:21
10 pcezar 2012-08-20 13:15:25
11 pcezar 2012-08-20 13:49:28
12 pcezar 2012-08-22 09:39:04

Document Hierarchy