User Tools

Site Tools


subsystem:graphics:weston-ivi-shell

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
subsystem:graphics:weston-ivi-shell [2015/09/30 16:51]
mbc
subsystem:graphics:weston-ivi-shell [2019/09/23 05:08] (current)
jeker updated dead link
Line 9: Line 9:
 ===== AGL Demonstration Platform ===== ===== AGL Demonstration Platform =====
  
-IVI-Shell is always built when [[https://​git.automotivelinux.org/​gerrit/​gitweb?​p=AGL/​meta-agl-demo.git;​a=blob;​f=README.md;​h=0722d30898c16e6aad27d1b25725210865c19478;​hb=HEAD#​l102|creating an "​agl-demo-platform"​ image]], but will only start automatically if you add the following lines to your //​conf/​local.conf//​ file :+IVI-Shell is always built when [[https://​git.automotivelinux.org/​gerrit/​gitweb?​p=AGL/​meta-agl-demo.git;​a=blob;​f=README.md;​h=0722d30898c16e6aad27d1b25725210865c19478;​hb=HEAD#​l102|creating an "​agl-demo-platform"​ image]], but will only start automatically if you add the following lines to your "//​conf/​local.conf//​" ​file :
  
 <​code>​IMAGE_INSTALL_append = " \ <​code>​IMAGE_INSTALL_append = " \
Line 15: Line 15:
     "</​code>​     "</​code>​
  
-or, in case the image has already been built, if you overwrite its ///​etc/​xdg/​weston/​weston.ini//​ file with **[[https://​git.automotivelinux.org/​gerrit/​gitweb?​p=AGL/​meta-agl.git;​a=blob_plain;​f=meta-ivi-common/​recipes-graphics/​wayland/​weston-ivi-shell/​weston.ini.ivi-shell|this one]]**.+or, in case the image has already been built, if you overwrite its "///​etc/​xdg/​weston/​weston.ini//​" ​file with **[[https://​git.automotivelinux.org/​gerrit/​gitweb?​p=AGL/​meta-agl.git;​a=blob_plain;​f=meta-ivi-common/​recipes-graphics/​wayland/​weston-ivi-shell/​weston.ini.ivi-shell|this one]]**. ​Or: 
 + 
 +<​code>​ 
 +[core] 
 +shell=ivi-shell.so 
 +backend=drm-backend.so 
 + 
 +[ivi-shell] 
 +ivi-module=ivi-controller.so 
 +</​code>​ 
 + 
 +If everything went fine, you should see a display similar to [[http://​iot.bzh/​images/​images/​weston-ivi-shell.png|this one]]. 
 + 
 +Note also that you might have to turn the screen adding the following lines to "///​etc/​xdg/​weston/​weston.ini//"​ 
 + 
 +<​code>​ 
 +[output] 
 +name=HDMI-A-1 
 +transform=270 
 +</​code>​ 
 + 
 +---- 
 + 
 +===== 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 : 
 +  * **//Qt//** : [[https://​git.automotivelinux.org/​gerrit/​gitweb?​p=AGL/​meta-agl-demo.git;​a=blob;​f=recipes- ​ qt/​qt5/​qtwayland/​0021-Implement-initial-IVI-Shell- ​ support.patch;​h=8723def26c3e093580265410389c087d84326a48;​hb=HEAD|ad-hoc patch]] 
 +  * **//EFL//** : [[https://​git.enlightenment.org/​core/​efl.git/​commit/?​id=50287ab731d4d87170238b365203e830edc038d5|Git commit]] 
 +  * **//​Chromium/​Crosswalk//​** : [[https://​github.com/​01org/​ozone-wayland/​commit/​a034a018b6ec317ec5559dcce6efec916ec40512|Git commit]] 
 + 
 +* **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//​ :  
 +<​code>​struct wl_shell_surface *shell_surface;​ 
 +shell_surface = wl_shell_get_shell_surface (wl_shell, wl_surface);</​code>​ 
 + 
 +Similarly, to use //​xdg_shell//,​ we would create a //​xdg_surface//​ on top of a //​wl_surface//​ :  
 +<​code>​struct xdg_surface *xdg_surface;​ 
 +xdg_surface = xdg_shell_get_xdg_surface (xdg_shell, wl_surface);</​code>​ 
 + 
 +IVI-Shell supports creating an //​ivi_surface//​ on top of a //​wl_surface//,​ along with a //unique ID// :  
 +<​code>​struct ivi_surface *ivi_surface;​ 
 +uint32_t id;   // Global numeral ID identifying a managed surface 
 +ivi_surface = ivi_application_surface_create(id,​ wl_surface);</​code>​ 
 + 
 +---- 
 + 
 +===== Extension features ===== 
 + 
 +The **[[http://​git.projects.genivi.org/?​p=wayland-ivi-extension.git|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//​ : 
 +<​code>​get_native_handle() 
 +native_handle</​code>​ 
 + 
 +  * **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. 
 + 
 +<​code>​$ IVISurfaceCreator --help 
 +Usage: IVISurfaceCreator <Process ID> <Window Title> <​IVI-Surface ID></​code>​ 
 + 
 +  * **EGLWLMockNavigation** demonstration : uses ivi layout APIs to show an accelerated EGL window with a sample animated scene. 
 + 
 +Screeshot [[http://​iot.bzh/​images/​images/​renesas_agl_wayland-ivi-extension-1.jpg|here]]. 
 + 
 +==== Additional information ==== 
 + 
 +Additional information regarding wayland-ivi-extension,​ most notably detailed design and HOWTO, can be found on the **GENIVI wiki** : 
 +[[https://​at.projects.genivi.org/​wiki/​display/​PROJ/​Wayland+IVI+Extension+Design]]
subsystem/graphics/weston-ivi-shell.1443631913.txt.gz · Last modified: 2015/09/30 16:51 by mbc