Changes

Jump to: navigation, search

Platform/GFX/OffMainThreadCompositing

1,274 bytes added, 22:53, 21 August 2012
no edit summary
=Plan=
Our highest priority platform for this project has been Android, but we want to extend this to all supported platforms: Mac, Windows (D3D9 + D3D10), Linux, B2G (Gonk) and software-only (BasicLayers; possibly, there is ongoing discussion as to whether this is the best use of resources to improve the experience for 'low-end' users).
==Current status==
* Only scrolling is asynchronous/off main thread. All other features require further work.
=== Operating systems ===
* Android: Beta qualityReleased. We continue to iron out OMTC bugs as the Android test base expands, but we are already quite high-quality.* OS X: {{bug|756601}} Alpha quality. We began development of OMTC on this platform, but we haven't worked on it much since then. It pretty much works but is disabled by default.
* Linux: {{bug|722012}} In initial implementation stages. We're still sorting out basic issues with X and GL, as we don't support OMTC with BasicLayers yet.
* B2G (Gonk): {{bug|741837}} Alpha quality. The B2G team has been working on getting it enabled and working through the implementation.
* BasicLayers (software only): {{bug|703484}} In initial implementation stages. Marco Castelluccio, a volunteer contributor, is working through implementing off-main-thread BasicLayers, which also involves making our Cairo library thread-safe.
* Windows:
** Direct3D 10: {{bug|756606}} Not started yet; has some fundamental problems with textures which require the layers refactoring.** Direct3D 9: {{bug|756608}} Not started yet; but, in theory, should be fairly straightforward (there are already shadow layers implemented, but I don't think they are used anywhere).
==Future Work==
===Off-main-thread layers implementations===
Features listed above won't work off the main thread unless we have a layers implementation that knows how to draw off the main thread.
 
==== Layers refactoring ====
 
We are currently refactoring the layers system to more easily facilitate OMTC. The biggest changes are to the compositing side, and to how textures/buffers/handles are passed between the drawing and compositing components. The aim is for most OMTC code to be backend-independent. Compositing will be done by a Compositor class (rather than the ShadowLayerManager, which will still have responsibility for managing the shadow layer tree). There will be backend-specific compositor sub-classes, but the shadow layer tree and it's manager should be backend-independent. Buffers/textures will be handled by a TextureClient/TextureHost pair which will have backend-specific subclasses and will handle all inter-thread communication. The layer classes can then be agnostic about backend and IPC mechanism.
==== Android ====
=Development=
Development is happening on mozilla-centraland the graphics branch (layers refactoring).
=Test cases=
http://people.mozilla.com/~ajuma/omtc/
13
edits

Navigation menu