Symbian developer community

 
wiki

Graphics/KhronosReferenceImplementation

From Symbian Developer Community

Jump to: navigation, search

The purpose of this page is to co-ordinate the efforts of the community around the Khronos Reference Implementation as it applies to the Symbian OS platform.

There has already been volunteer work that has been done on the graphics FCL to integrate the reference implementation of OpenVG and EGL from Khronos. More interest has arisen for this project. A wiki page is needed to enumerate the goals of the project. This is so different committers can see the direction being taken, and thus share a common development aim.

A note of warning to the reader. This page may appear somewhat chaotic and haphazard. Its a collective scrap book of ideas and work in progress. It will be replaced by something more organized as things settle down.

For more contextual information, see the Graphics Wiki

Contents

Project Requirements

Requirements are:

  • it is unencumbered of third party intellectual property
  • it gives useable UI performance on emulator, or simulator, or other reference platform
  • contributions are made back to Khronos

The reasons for this are:

  1. We want widespread adoption of Khronos client side APIs in the community. For that, application writers, who dominate the community by the number of them, should be able to write, test, and debug applications which use Khronos APIs. They therefore need a minimal barrier to entry. This means access to a reference implementation of the Khronos APIs ready integrated, and useable for development purposes.
  2. The reference platform will be different for different people. We are in a process of change. The WINSCW emulator will be obseleted but today it works well. The replacement will either be a proprietary simulator, which is suited for a Nokia-aligned audience, an open simulator, which is suited to device creators and open source platform creators.
  3. We are part of a wider open source community. We should give back to the community enhancements we make to the Reference Implementation; it is part of the commons.


The consequence of this is that all code must be under one of the following licenses:

  • Khronos license
  • Symbian Foundation License
  • Eclipse Public License

Project Goals

The goals of the project are declared by the committers who are actually doing the work. Our current goals are:

  1. Analyse performance of the OpenVG implementation, and document findings
  2. Contribute performance optimizations to OpenVG RI in the FCL

Architectural Forces

Choice of EGL

  1. Khronos RI EGL is common to the whole community. Adding to this helps the community.
  2. Nokia Contributed eglrefimpl will be the MCL standard. It only supports OpenWF use cases.

Lets build on whatever is working on the FCL. When mature, we can have an informed debate.

Choice of Platform

  1. The Khronos RI runs on Windows and Mac. Now also on Symbian OS (I need to validate this statement).
  2. WINSCW emulator works today. Platsim (Nokia Forum distributed nokia simulator) should work, needs testing.
  3. Real hardware (needs a port) such as Beagle Board

Committers can use their preferred platform. They must document any special setup required on this page. They must help others fix regressions on their preferred platform.

Working Practices

Source code

We'll use the graphics FCL. Anyone can commit working code so long as it is agreement with the Project Requirements (see above). This is that there is a low barrier to entry. We can then make quick early progress and gain implementation experience. More formalism will follow later where we may need a separate project tree, start running system testing, and plan for a contribution back into MCL.

Communication

The primary form of communication should be articles on this wiki project page. This saves people the bother of keeping up with lots of email. Some discussion is needed. The standard discussion forums and mailing lists should be used:

We'll setup something project-specific if the volume of traffic requires it. In the early phase, we'll want wider comments and remarks from the user interface subscribes so we don't miss important constraints or use cases.

Historical Notes

This web page has had an initial history where some high level architectural choices, a bring-up, and some debugging was done. See Khronos_RI_Project_Historical_Notes for further information.

Project Status

Code Status

The Khronos RI runs on syborg and zoom2. It has some performance enhancements in place (x4 performance). Further enhancements are planned. The research tip is represented by the bug http://developer.symbian.org/bugs/show_bug.cgi?id=2744

Sila & Faisal are working on finishing this off to port the full set of performance enhancements to OpenVG. The code came from his NGA Platsim project which improved OpenVG performance but Intel-side.

The future steps are:

  • Stabilise current patch (get rid of some panics)
  • Add JIT support
  • Add SSE2 emulated extensions on ARM

Also, Jose from Cell Telecom is working on rationalising the EGL implementations (merging eglrefimpl to the Khronos EGL in the OpenVG RI)

Management Status

Sufficient speed up in OpenVG exists for the S^3 release to run on hardware (syborg and zoom2). This is due to a caching layer sitting above, and changes in the actual OpenVG implementation. We're trying to improve this further.

Comments

Sign in to comment…