- Component Overview
- Required platform capabilities
- How to build on different platforms
-
+- Change the environment during Runtime
+- Running Testapplications
Introduction
====================================
X11 Extensions:
x-composite : This extension should support redirecting of egl Surfaces to x11 pixmaps too.
+x-damage
EGL / OpenGL ES 2.0:
-EGL_IMAGE_KHR :
+EGL_IMAGE_KHR:
The following functions should be supported by the vendor specific graphic driver
glEGLImageTargetTexture2DOES
eglCreateImageKHR
eglDestroyImageKHR
-Furthermore it should be supported to create an egl image from an x11 pixmap.
+Furthermore it should be supported to create an egl image from an x11 pixmap.
Platform with X11 and OpenGL
===
X11 Extensions:
x-composite : This extension should support redirecting of egl Surfaces to x11 pixmaps too.
+x-damage : This extension is required to render surfaces only, if there content has changed.
GLX / OpenGL :
Furthermore it should be supported to create an texture from an x11 pixmap.
-Beagle board platform
-===
-
-If you have choosen the BeagleRenderer as rendering backend, than the following
-kernel module must be available too :
-
-CMEM Module is needed, it can be downloaded from
-
-http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/linuxutils/index.html
-
-The EGL implementation on the beagle board should support the following egl config:
-
-EGL_SURFACE_TYPE = EGL_WINDOW_BIT | EGL_PIXMAP_BIT
-EGL_RENDERABLE_TYPE = EGL_OPENGL_ES2_BIT,
-EGL_RED_SIZE = 8
-EGL_ALPHA_SIZE = 8
-EGL_BIND_TO_TEXTURE_RGBA = EGL_TRUE
-
-Furthermore the application which should be rendered by the layermanagement, should initialize egl
-by the following steps:
-
-1. Get EGL Display
-2. Initialize EGL
-3. Bind API
-4. Choose EGL Config
-5. Allocate native pixmap Structure
-6. Allocate native pixmap space by CMEM_alloc
-7. Get physical address of native pixmap using the CMEM module, and assign the address to the native pixmap structure.
-8. Create egl pixmap surface using the allocated native pixmap.
-9. Create egl context.
-10. Make egl context with the surface as current.
-
-
How to build on different platforms
====================================
Example: cd <build-dir>
cmake <source-dir> [optional_build_options]
-
- For a full list of available build options in [optional_build_options] see "Supported Build Options"
+
+ For a full list of available build options in [optional_build_options] see "Supported Build Options"
4. Start the build.
LayerManagerService
--
-libdbus
+libdbus-1-dev
X11GLESRenderer:
--
Vendor specific OpenGL ES 2.0 Libraries, with JIT compiler to support shader which are
delivered as source code
-X11Renderer:
+GLXRenderer:
---
Core X11 libraries
X11 Composite libraries
Supported Build Options
===
-- Build configuration:
- Option: -DCMAKE_BUILD_TYPE=DEBUG or
- -DCMAKE_BUILD_TYPE=RELEASE
+Build Flag Default Value Description
+
+WITH_CLIENTEXAMPLES ON Build examples for client library usage
+WITH_CLIENT_LIB ON Build LayerManagement client library
+WITH_DESKTOP OFF Build renderer plugin for OpenGL/X11 based platforms
+WITH_CONTROL_BIN ON Build LayerManagerControl binary
+WITH_CONTROL_LIB OFF Build LayerManagement control library
+WITH_DLT OFF Build with DLT logging support
+WITH_DOCUMENTATION OFF Generate documentation during build (requires doxygen)
+WITH_EGL_EXAMPLE ON Build examples for GLES/X11 based platforms
+WITH_EXAMPLE_SCENE_PROVIDER OFF Build scene provider plugin to run example applications
+WITH_FORCE_COPY OFF Force Software Copy of Pixmaps (compatibility for VMs)
+WITH_GENERIC_COMMUNICATOR ON Build Generic Communicator Plugin based on IpcModules
+WITH_GLESv2_LIB OFF Build development library for GLES/X11 based renderers
+WITH_GLX_EXAMPLE OFF Build examples for OpenGL/X11 based platforms
+WITH_GLX_LIB OFF Build development library for OpenGL/X11 based renderers
+WITH_SERVICE_BIN ON Build LayerManagerService binary
+WITH_STATIC_LIBRARIES OFF Link all plugins and libraries statically
+WITH_STYLE_CHECKING OFF Report styleguide problems during build (requires python)
+WITH_SYSTEMD_HEALTH_MONITOR OFF Build plugin for systemd based health monitoring
+WITH_TESTS OFF Build unit test binaries for all enabled components
+WITH_TEXT_RENDERER OFF Build renderer plugin with pure logging (no rendering)
+WITH_WAYLAND_X11 OFF Build renderer plugin for GLES/Wayland with X11 backend
+WITH_WAYLAND_X11_LIB OFF Build development library for GLES/Wayland X11 based renderers
+WITH_WAYLAND_DRM OFF Build renderer plugin for GLES/Wayland with DRM backend
+WITH_WAYLAND_DRM_LIB OFF Build development library for GLES/Wayland DRM based renderers
+WITH_WAYLAND_FBDEV OFF Build renderer plugin for GLES/Wayland with FBDEV backend
+WITH_WAYLAND_FBDEV_LIB OFF Build development library for GLES/Wayland FBDEV based renderers
+WITH_WL_EXAMPLE OFF Build examples for GLES/Wayland based platforms
+WITH_X11_GLES ON Build renderer plugin for GLES/X11 based platforms
+
+You can set either of them during cmake execution, e.g.
+
+ cmake -DWITH_FORCE_COPY=ON -DWITH_EGL_EXAMPLE=OFF <source_dir>
+
+or you can update your CmakeCache variables afterwards using tools like ccmake.
+
+Build for different Platforms
+===
-- Build for X11 Desktop with GLX Renderer
- Option: -DWITH_DESKTOP=ON or
- -DWITH_DESKTOP=OFF
+ You have the choice to use GLXRenderer or X11GLESRenderer.
-- Build for X11 with OpenGL ES 2.0 Renderer
- Option: -DWITH_X11_GLES=ON or
- -DWITH_X11_GLES=OFF
-
-- Build EGL examples
- Option: -DWITH_EGL_EXAMPLE=ON or
- -DWITH_EGL_EXAMPLE=OFF
+ GLXRenderer (X11Renderer.so) which is normaly used for a Desktop, VMWare Image and GMA500 based Headunits
-- Build GLX examples
- Option: -DWITH_GLX_EXAMPLE=ON or
- -DWITH_GLX_EXAMPLE=OFF
+ cmake <source-dir>/ -DWITH_DESKTOP=ON -DWITH_GLX_EXAMPLE=ON -DWITH_TESTS=OFF -DWITH_EGL_EXAMPLE=OFF -DWITH_X11_GLES=OFF
-- Build available tests
- Option: -DWITH_TESTS=ON or
- -DWITH_TESTS=OFF
+ X11GLESRenderer which is used on more embedded device which are supporting EGL and OpenGL ES 2.0
- Remark: Test File are currently not upstreamed.
+ cmake <source-dir>/ -DWITH_DESKTOP=OFF -DWITH_GLX_EXAMPLE=OFF -DWITH_TESTS=OFF -DWITH_EGL_EXAMPLE=ON -DWITH_X11_GLES=ON
-- Build for diferent Platforms
+Change the Environment during Runtime
+=====================================
+The following environments can be set to change the runtime behaviour.
- You have the choice to use GLXRenderer or X11GLESRenderer.
+LM_PLUGIN_PATH set the path for the location of communicator and renderer PlugIns
+ default : /usr/lib/layermanager
+ Example : export LM_PLUGIN_PATH= /usr/local/lib/layermanager
- GLXRenderer (X11Renderer.so) which is normaly used for a Desktop, VMWare Image and GMA500 based Headunits
+LM_USE_SESSION_BUS enables the DBUS communication to run on Session bus instead of Systembus
+ default : disabled run on system bus
+ Example : export LM_USE_SESSION_BUS=enable
- cmake <source-dir>/ -DWITH_DESKTOP=ON -DWITH_GLX_EXAMPLE=ON -DWITH_TESTS=OFF -DWITH_EGL_EXAMPLE=OFF -DWITH_X11_GLES=OFF
+Commandline parameter :
+LayerManagerService : -w<horizontalresolution> - default 1280
+ -h<verticalresolution> - default 480
+ -c<console debug level> - default 2 (only errors and info)
+ -f<file debug level> - default 0 (disabled) log file location is /tmp/LayerManagerService.log
+ possible debug levels : 0 disabled
+ 1 errors
+ 2 info,errors
+ 3 info,errors, warnings
+ 4 info,errors, warnings,debug
+ -v shows version of layermanager
- X11GLESRenderer which is used on more embedded device which are supporting EGL and OpenGL ES 2.0
+Running Testapplications
+=====================================
- cmake <source-dir>/ -DWITH_DESKTOP=OFF -DWITH_GLX_EXAMPLE=OFF -DWITH_TESTS=OFF -DWITH_EGL_EXAMPLE=ON -DWITH_X11_GLES=ON
+1. Starting the service
+
+precondition :
+
+install prefix is /usr/local
+no compositing manager is running like openbox xfce metacity, kill these if needed
+
+run:
+#> export DISPLAY=:0
+#> export LD_LIBRARY_PATH=/usr/local/lib:/usr/lib
+#> export LM_PLUGIN_PATH=/usr/local/lib/layermanager
+#> LayerManagerService &
+
+2. Running OpenGL / OpenGL ES 2.0 Example Applications
+
+precondition :
+
+install prefix is /usr/local
+LayerManagerService Running
+
+run:
+#> export DISPLAY=:0
+#> export LD_LIBRARY_PATH=/usr/local/lib:/usr/lib
+OpenGL ES Example
+#> EGLX11ApplicationExample &
+OpenGL Example
+#> GLX11ApplicationExample &
+
+3. Running LayerManagerControl
+
+The LayerManagerControl can be used to change and debug
+the runtime behaviour of the service.
+
+Please Call :
+LayerManagerControl without arguments to see a list of supported commands
+
+Examples
+ LayerManagerControl get scene
+ LayerManagerControl get layers
+ LayerManagerControl get layer 1000
+ LayerManagerControl get surfaces
+ LayerManagerControl get surface 0xa
+ LayerManagerControl analyze surface 10
+ LayerManagerControl scatter
+ LayerManagerControl watch surface 0xa
+
+precondition :
+
+install prefix is /usr/local
+LayerManagerService Running
+run:
+#> export DISPLAY=:0
+#> export LD_LIBRARY_PATH=/usr/local/lib:/usr/lib
+#> LayerManagerControl [command]