User Tools

Site Tools


subsystem:graphics:weston-ivi-shell

This is an old revision of the document!


Weston IVI-Shell

Weston IVI-Shell provides a shell plugin for the Weston compositor, implementing the GENIVI API for In-Vehicle Infotainment.

Project site : http://cgit.freedesktop.org/wayland/weston/tree/ivi-shell


AGL Demonstration Platform

IVI-Shell is always built when creating an "agl-demo-platform" image, but will only start automatically if you add the following lines to your conf/local.conf file :

IMAGE_INSTALL_append = " \
    weston-ivi-shell-config \
    "

or, in case the image has already been built, if you overwrite its /etc/xdg/weston/weston.ini file with this one.

If everything went fine, you should see a display similar to this one.

General architecture

IVI-Shell provides 2 protocols :

* ivi-application : client-side protocol, needed for client applications to be actually shown. Toolkits/frameworks supporting it currently include :

* ivi-hmi-controller : server-side protocol, allowing customization of shell behavior and look and feel.

Implementation examples

If we wanted to use wl_shell, we would create a wl_shell_surface on top of a wl_surface :

struct wl_shell_surface *shell_surface;
shell_surface = wl_shell_get_shell_surface (wl_shell, wl_surface);

Similarly, to use xdg_shell, we would create a xdg_surface on top of a wl_surface :

struct xdg_surface *xdg_surface;
xdg_surface = xdg_shell_get_xdg_surface (xdg_shell, wl_surface);

IVI-Shell supports creating an ivi_surface on top of a wl_surface, along with a unique ID :

struct ivi_surface *ivi_surface;
uint32_t id;   // Global numeral ID identifying a managed surface
ivi_surface = ivi_application_surface_create(id, wl_surface);

Extension features

The wayland-ivi-extension project brings additional features to IVI-Shell, including :

  • ivi-controller plugin : adds support for getting pointers to native_handle and wl_surface objects managed by wl_shell :
get_native_handle
native_handle
  • IVISurfaceCreator command-line tool : associates a Global ID to a wl_surface manually. The surface can then be controlled by using the ivi-controller plugin or ivi layout APIs.
IVISurfaceCreator --help
Usage: IVISurfaceCreator <Process ID> <Window Title> <IVI-Surface ID>

* EGLWLMockNavigation demonstration : uses ivi layout APIs to show an accelerated EGL window with a sample animated scene (screeshot here).

subsystem/graphics/weston-ivi-shell.1443633493.txt.gz · Last modified: 2015/09/30 17:18 by mbc