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. Or:

[core]
shell=ivi-shell.so
backend=drm-backend.so            
                      
[ivi-shell]           
ivi-module=ivi-controller.so

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

Note also that you might have to turn the screen adding the following lines to “/etc/xdg/weston/weston.ini

[output]
name=HDMI-A-1
transform=270

General architecture

IVI-Shell provides 2 protocols :

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

* 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.

Additional information

Additional information regarding wayland-ivi-extension, most notably detailed design and HOWTO, can be found on the GENIVI wiki : http://wiki.projects.genivi.org/index.php/Wayland_IVI_Extension_Design

subsystem/graphics/weston-ivi-shell.1485534907.txt.gz · Last modified: 2017/01/27 16:35 by jobol