LayerManagerCommands: added SetSynchronizedsurface command
[profile/ivi/layer-management.git] / README
diff --git a/README b/README
index 493dabe..44a5ec4 100644 (file)
--- a/README
+++ b/README
@@ -3,7 +3,8 @@ Sections in this file describe:
 - Component Overview
 - Required platform capabilities
 - How to build on different platforms
 - Component Overview
 - Required platform capabilities
 - How to build on different platforms
-
+- Change the environment during Runtime
+- Running Testapplications
 
 Introduction
 ====================================
 
 Introduction
 ====================================
@@ -71,15 +72,16 @@ Extensions have to be supported by the TargetPlatform :
 X11 Extensions:
 
 x-composite : This extension should support redirecting of egl Surfaces to x11 pixmaps too.
 X11 Extensions:
 
 x-composite : This extension should support redirecting of egl Surfaces to x11 pixmaps too.
+x-damage
 
 EGL / OpenGL ES 2.0:
 
 
 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
 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
 ===
 
 Platform with X11 and OpenGL
 ===
@@ -90,6 +92,7 @@ Extensions have to be supported by the TargetPlatform :
 X11 Extensions:
 
 x-composite : This extension should support redirecting of egl Surfaces to x11 pixmaps too.
 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 :
 
 
 GLX / OpenGL :
 
@@ -98,39 +101,6 @@ The following functions should be supported by the vendor specific graphic drive
 Furthermore it should be supported to create an texture from an x11 pixmap.  
 
 
 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
 ====================================
 
 How to build on different platforms
 ====================================
 
@@ -155,8 +125,8 @@ Building the LayerManager breaks down to the following steps:
 
    Example: cd <build-dir>
             cmake <source-dir> [optional_build_options]
 
    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.
 
 
 4. Start the build.
 
@@ -176,7 +146,7 @@ You need both development packages and libraries for
 
 LayerManagerService
 --
 
 LayerManagerService
 --
-libdbus
+libdbus-1-dev
 
 X11GLESRenderer:
 --
 
 X11GLESRenderer:
 --
@@ -188,7 +158,7 @@ build an EGL Image from X11Pixmap
 Vendor specific OpenGL ES 2.0 Libraries, with JIT compiler to support shader which are
 delivered as source code
 
 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
 ---
 Core X11 libraries
 X11 Composite libraries
@@ -199,42 +169,136 @@ GLX
 Supported Build Options
 ===
 
 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]