1 Sections in this file describe:
4 - Required platform capabilities
5 - How to build on different platforms
9 ====================================
10 In the automotive domain, the most HMI systems are using their own window manager implementation.
11 Many applications (e.g. navigation, reversing camera) are implemented standalone and
12 therefore one service is used to composite all applications to the final image on the screen. This Service
13 is also know as LayerManagement.
14 This Component provides a common API and a proof-of-concept implementation for the Layer Management Service.
15 This service should improve the existing vendor-specific layer management implementations
16 which have the following features :
18 * Fixed number of hardware layers
19 * Hardware accelerated compositing
21 * Number of layers not extensible during runtime
22 * Vendor-specific implementation
23 * No standardized interface
25 * No change during runtime possible
27 The IVI Layer Management have the following enhancements :
29 * Well-defined interface
30 * Standardized compositing
31 * Convenient and consistent access to hardware accelerated modules
32 * Separation of HMI and Layer Management
33 * Dynamically Extensions during runtime
34 * Low integration complexity
35 * Reduced dependency on hardware
38 ====================================
39 The IVI Layer Management consist of three subcomponents.
41 The LayerManagementService
43 This is the main component which controls and handles
44 the different layers with its content. Furthermore he
45 will execute the commands which are deployed by the corresponding
46 communicator. The content of the different layers are deployed to the
49 The LayerManagementCommunicator
51 This subcomponent will handle the LayerManagement API messages. Generally
52 a communicator will establish the communication between application and the
53 LayerManagementService. The concept behind the communicator is to abstract
54 the required ipc mechanism on the target platform.
56 The LayerManagementRenderer
58 This subcomponent will handle the rendering of the different layers and its content on the
59 final used target platform. The concept behind the renderer is to abstract
60 the required rendering mechanism on the target platform.
62 Required Platform capabilities
63 ====================================
65 Platform with X11 and OpenGL ES 2.0
68 If you have choosen the X11GLESRenderer as rendering backend, then the following
69 Extensions have to be supported by the TargetPlatform :
73 x-composite : This extension should support redirecting of egl Surfaces to x11 pixmaps too.
78 The following functions should be supported by the vendor specific graphic driver
79 glEGLImageTargetTexture2DOES
82 Furthermore it should be supported to create an egl image from an x11 pixmap.
84 Platform with X11 and OpenGL
87 If you have choosen the GLXRenderer as rendering backend, then the following
88 Extensions have to be supported by the TargetPlatform :
92 x-composite : This extension should support redirecting of egl Surfaces to x11 pixmaps too.
96 GLX_TEXTURE_FROM_PIXMAP :
97 The following functions should be supported by the vendor specific graphic driver
98 Furthermore it should be supported to create an texture from an x11 pixmap.
101 Beagle board platform
104 If you have choosen the BeagleRenderer as rendering backend, than the following
105 kernel module must be available too :
107 CMEM Module is needed, it can be downloaded from
109 http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/linuxutils/index.html
111 The EGL implementation on the beagle board should support the following egl config:
113 EGL_SURFACE_TYPE = EGL_WINDOW_BIT | EGL_PIXMAP_BIT
114 EGL_RENDERABLE_TYPE = EGL_OPENGL_ES2_BIT,
117 EGL_BIND_TO_TEXTURE_RGBA = EGL_TRUE
119 Furthermore the application which should be rendered by the layermanagement, should initialize egl
120 by the following steps:
126 5. Allocate native pixmap Structure
127 6. Allocate native pixmap space by CMEM_alloc
128 7. Get physical address of native pixmap using the CMEM module, and assign the address to the native pixmap structure.
129 8. Create egl pixmap surface using the allocated native pixmap.
130 9. Create egl context.
131 10. Make egl context with the surface as current.
134 How to build on different platforms
135 ====================================
137 These conditions need to be met in order to build the LayerManager component:
139 - CMake required (version 2.6 or higher)
141 Building the LayerManager breaks down to the following steps:
143 1. Pull the current codebase from the git repository to your target source directory [referred to as <source-dir>]
145 Example: git clone https://git.genivi.org/srv/git/layer_management
147 This should give you a directory called "layer_management" in your current directory.
149 2. Create a build directory, e.g. IVILayerManagement_build [referred to as <build-dir>]
151 Example: mkdir IVILayerManagement_build
153 3. In <build-dir> Generate build system for your platform using CMake.
154 This step provides some customization options to configure build options.
156 Example: cd <build-dir>
157 cmake <source-dir> [optional_build_options]
159 For a full list of available build options in [optional_build_options] see "Supported Build Options"
165 5. Install LayerManager on local system.
166 Note: This step will require root priviledges on most systems.
168 Example: sudo make install
170 The LayerManager may now be started by calling "LayerManagerService".
175 You need both development packages and libraries for
184 X11 Composite libraries
186 Vendor specific EGL 1.4 Libraries, which are support the EGL_IMAGE_KHR Extension including
187 build an EGL Image from X11Pixmap
188 Vendor specific OpenGL ES 2.0 Libraries, with JIT compiler to support shader which are
189 delivered as source code
194 X11 Composite libraries
199 Supported Build Options
202 - Build configuration:
203 Option: -DCMAKE_BUILD_TYPE=DEBUG or
204 -DCMAKE_BUILD_TYPE=RELEASE
206 - Build for X11 Desktop with GLX Renderer
207 Option: -DWITH_DESKTOP=ON or
210 - Build for X11 with OpenGL ES 2.0 Renderer
211 Option: -DWITH_X11_GLES=ON or
215 Option: -DWITH_EGL_EXAMPLE=ON or
216 -DWITH_EGL_EXAMPLE=OFF
219 Option: -DWITH_GLX_EXAMPLE=ON or
220 -DWITH_GLX_EXAMPLE=OFF
222 - Build available tests
223 Option: -DWITH_TESTS=ON or
226 Remark: Test File are currently not upstreamed.
228 - Build for diferent Platforms
230 You have the choice to use GLXRenderer or X11GLESRenderer.
232 GLXRenderer (X11Renderer.so) which is normaly used for a Desktop, VMWare Image and GMA500 based Headunits
234 cmake <source-dir>/ -DWITH_DESKTOP=ON -DWITH_GLX_EXAMPLE=ON -DWITH_TESTS=OFF -DWITH_EGL_EXAMPLE=OFF -DWITH_X11_GLES=OFF
236 X11GLESRenderer which is used on more embedded device which are supporting EGL and OpenGL ES 2.0
238 cmake <source-dir>/ -DWITH_DESKTOP=OFF -DWITH_GLX_EXAMPLE=OFF -DWITH_TESTS=OFF -DWITH_EGL_EXAMPLE=ON -DWITH_X11_GLES=ON