ARMGraphicsStackOnX

Revision 10 as of 2010-05-18 13:36:25

Clear message

Topics

  • requirements for graphics drivers for a good X11 experience
    • version alignment
  • performance benchmarking on X
  • 3D story on X and arm
  • video/multimedia on X and arm

Driver Requirements for X

  • Kernel driver:
    • Compatibility with kernel 2.6.32 (Lucid) or higher.
    • KMS (Kernel Mode Setting) - hard requirement
      • no transitioning resolution of the bootsplash and X
      • seamless visual experience from bootsplash to X
      • Mode setting happens in the LCD driver
      • faster and more reliable suspend/resume
    • Compatibility with the userspace libdrm 2.4.18 (Lucid) or higher -> usually backwards compatible -- no general need version alignment

      • separation of LVDS control and GPU (due to licencing of external GPU tech) makes DRM/KMS integration harder
    • Support for RandR output hotplug events (so that the xserver receives an event when external screens are connected or disconnected)
    • GEM (Graphics Execution Manager), TTM (Translation Table Maps) or an alternative kernel video memory manager
      • needed for DRI2 to work (aka accelerated redirected/offscreen 3D/GL)
      • needed for OpenGL extensions like FBOs (GL_ARB_framebuffer_object)
      • GEM is usually safe wrt backwards compatiblility
      • GLX_texture_from_pixmap needed because of the window-manager/compositor mutter used by unity
      • XDamage, XFixes, XComposite (might be needed to be supported on the driver side)
      • TTM can be looked at as an implementation detail, as a subset of GEM support
    • Dynamic front buffer resizing as in -intel's UXA (so that we don't have to set the virtual resolution and restart X when dealing with external screens using high resolutions)
  • DDX (X.Org) driver:
    • Compatibility with xserver 1.7.x (Lucid) or higher (1.8.x)
      • needs to be aligned version wise
    • Support for RandR 1.3 (especially transformations, scaling, etc.)
      • version does not change frequently -- minimum should be >= 1.2 to get good multi head support

      • current development is ongoing for xinerama support
    • Use of the E-EDID functions in X.org (this is useful for HDMI)
      • currently not well supported as typically arm devices have been directly connected to the display
      • likely will need some other mechanism to get the resolution choices to xrandr
      • currently the resolution is hard coded into the kernel
    • DRI 2 (Direct Rendering Infrastructure) which allows GLX applications to do direct rendering to redirected windows. This makes OpenGL and XV (X video extension) work correctly with compositing managers.
  • What is needed to get fast graphics to 'clutter/mutter' level??
    • seems to be a limitation that the graphics drivers are mostly OpenGL ES (sp?) which is a sub-set of that required by these layers
    • graphics performance is also suspected to be lower, particularly compositing off screen is slow
    • one option may be to require full OpenGL drivers and exclude OpenGL ES
      • OpenGL is a software API though; doesn't imply any minimum level of hardware support
      • concerns expressed that requiring too high a level will blow the power budget for some use cases
  • Multimedia:
    • Support for either VA-API (Video Acceleration API) or VDPAU (Video Decode and Presentation API for Unix) to allow video programs to offload portions of the video decoding process and video post-processing to the GPU video-hardware.
      • does not really matter to use gstreamer
  • 3D driver:
    • OpenGL 2.1 (or later) compliant driver, more specifically we would like to have the following extensions available:
      • GL_ARB_framebuffer_object
      • GL_ARB_vertex_program
      • GL_ARB_fragment_program
      • GL_ARB_texture_non_power_of_two
      • GL_EXT_stencil_two_side
      • GL_ARB_vertex_buffer_object
    • Support for GLSL
    • chromium has bad performance with opengles even with
    • minimum hardware requirements
      • opengl hardware with opengles 2.0 or better

Performance / Benchmarking

Goals:

  • Provide a way to easily test and benchmark their hardware and drivers
    • Custom Images with Benchmarks being auto run
    • Report results to a database
  • Provide easy way to demo graphics capabilities of devices
    • Full desktop
    • Benchmarks

Performance tests:

  • 3D tests
    • phoronix-test-suite (openGL based tests)
      • both performance and correctness tests, is already in the archive for use
      • there are not any OpenGL ES specifc tests, though there are some at Intel not yet committed to the repo
        • will be needed for this effort
      • some of this is available from Khronos group perhaps
      • [Jay] To write some simple tests to test the OpenGL ES 2.0 implementation . Tests to cover what Unity needs as a first step
      • unity relevant tests -> dx team could develop test suites

      • powervr published a testsuite for opengles included in their SDK
      • webos seems to have some simple test tool under http://www.webos-internals.org/wiki/GLES_1.1_3D_Cube_Demo

    • games: needs porting to opengles --
  • 2D tests

Discussion/Notes Session 1

Discussion notes inline above.

Primary deliverables

  • clear documentation of the expected version compatibility levels to have good performance on Ubuntu
  • [Jay Taoko] good test suites to confirm performance and expose choke points
    • allow easy running of those benchmarks with automatic result
  • maybe package opegles games for showcasing the hardware
  • Conduct a survey of the current partners graphical rendering models (immediate vs. deferred)

Discussion/Notes Session 2

  • Unity should be ported to OpenGL ES pretty easily.
  • Plan is to support OpenGL ES 2.0.
  • Mutter is to be built with ES 2.0.
    • Custom stuff in Unity and Mutter make it not compatable with ES 2.0 yet.
  • Clutter in Lucid doesn't work with OpenGL ES yet.
  • No more than a week to make Unity ES 2.0 compatable. Would need testing afterwards.
  • We need:
    • Clutter
  • Blending is a bottle neck (confirm with Yuval)
  • Step 1 get the drivers in place
  • Step 2 get the test cases run on all available SoCs

  • Step 3 decide what to change in clutter or the driver to meet the performance required
  • Some Parts in GTK require XRandR otherwise they fail Unity OpenGL ES extension required
    • Framebuffer Objects
    • Non power of two textures
    • GLSL shader support (included in OpenGL ES 2.0)
    • Rectangle textures
    ARM Graphics

GL/ES                                                |           GL
                                                     |
    GPU                                              |       GPU
      |                                              |         |
      |                                              |         V
      |                                              |     DRI/DRM             NEEDS
      |                                              |         |               TO CHG
      V                                              |         V                FROM
F    DRIVER                                          |      DRIVER        VENDOR OF SOC
R   |                                                |         |                    
O   V                                                |         V
M   OPENGL/ES                                        |     X11/XORG
V        /EGL                                        |       |
E     |                                              |       V
N     |                                              |     GLX
D     |                                              |      |
O     | X11                                          |      |
R     |                                              |      |
      V                                              |      V
  CLUTTER(ES)                                        |  CLUTTER(GL)
      |                                              |     |
      V                                              |     V
    UNITY                                            |    UNITY

Action Points

  • Jay/Neil/Alexander Sack: Will make Clutter with OpenGL ES 2.0 available in a PPA for Lucid
  • Jay: Will fix unity so it doesn't depend on Open GL only to make it compatible with OpenGL ES
  • Anmar: Discuss setting up a mailing list or something to communicate
  • David Barth: to outline the acceleration requirements. Similar to Google's hardware requirements
  • Neil: to find out what features required in XRandR. Graham said it is very simple to put in a basic XRandR


CategorySpec