Summary

This spec is intended for EGL/OpenGL ES2.0 support and optimization in different compositors on ARM platforms. The integration of meegotouch-compositor and chromium-wm will be focused on to make them available in Linaro images. The GLES2 support of compiz and kwin is only covered in this spec with low priority.

Release Note

TBD

Rationale

Use OpenGL ES2.0 backend with GPU acceleration to get better graphics performance of different compositors on ARM platforms. Drivers from different vendors should be verified on specific SOCs, and mesa driver can be used as reference during implementation.

User stories

  • meegotouch-compositor: used in meego touch framework, based on qt graphics view framework, support gles2 already
  • chromium-wm: used in chromium OS, based on clutter, support GLES2
  • compiz: to be used as default compositing window manager in Ubuntu 11.04, now doesn't support EGL/GLES2.
  • kwin: used in kde plasma, GLES2 support is in planning

Assumptions

N/A

Design

  • For compositors with GLES2 support already (meego-touch compositor, chromium-wm), make them run on ARM platforms from different vendors, and create related Linaro heads.
  • For compositors without GLES2 support (compiz and kwin)
    • The extensively used fixed pipeline implementation should be replaced by programmable implementations with glsl shaders step by step.
    • The usage of legacy EXT and ARB extensions should be avoided as much as possible.
    • Add GLES2 support based on desktop OpenGL 2.x support, the GLSL shader sources should also be updated for some special requirements for GLES2
    • EGL support should be added for features such as texture from pixmap.
    • Compile time selection of GLX/EGL and OpenGL/ES2 should still be used before the proxy library for runtime detection is availale

Implementation

  • meegotouch-compositor
    • identify underlying packages needed for meegotouch-compositor, and package them in PPA for development
    • setup meegotouch-compositor on ARM system, and run test applications. Figure out problems for gles2 support if any.
    • solve problems found when run meegotouch-compositor and accompanied tests.
    • create linaro head for meego touch
  • chromium-wm
    • identify underlaying packages depended on by chromium-wm, and package them in PPA for development
    • setup chromium-wm on ARM system, and run test applications to see if any problem for gles2 support
    • fix bugs for chromium-wm or underlying libraries in the stack
    • create linaro head for chromium OS
  • compiz
    • confirm with upstream and Ubuntu unity team about gles2 support in compiz
  • kwin
    • check with Martin about latest status for gles2 support in kwin

Test/Demo Plan

  • demo meegotouch compositor on ARM platforms at the end of 1105 cycle
  • demo chromium window manager on ARM platforms at the end of 1105 cycle

Unresolved issues

N/A

BoF agenda and discussion

Notes from UDS session: ===== Topics


Discuss potential improvements to the OpenGL ES backends of: * meegotouch-compositor * chromium-wm * clutter compositors

Discussions


General issues: - Driver performance (same WM, same H/W yields different results e.g. between nouveau and proprietary drivers) - GLX_texture_from_pixmap vs. EGL_KHR_image_pixmap. meegotouch-compositor and chromium-wm already using image_pixmap to effect. - Legacy OpenGL (desktop 1.x, 2.x) vs. OpenGL ES. Initially, implement OpenGL ES backend, maintaining as much compatibility with core profile of desktop OpenGL as possible (VAOs will be exception).

Actions


[jesse-barker]Check the specs to confirm static vs. dynamic nature of texture_from_pixmap vs. image_pixmap

  • Nothing in the EGL_KHR_image_base or EGL_KHR_image_pixmap specs indicates that the image behavior should be dynamic (i.e. the texture image remains static unless/until the application provides new contents) - jesse.

[dbo/mgraesslin]Coordinate common efforts (matrix work, fixed functionality, etc.) between kwin and compiz.


WorkingGroups/Middleware/Graphics/Specs/1105/Compositors (last modified 2011-01-13 21:59:17)