13
edits
No edit summary |
|||
Line 20: | Line 20: | ||
=Plan= | =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). | 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== | ==Current status== | ||
Line 26: | Line 26: | ||
* Only scrolling is asynchronous/off main thread. All other features require further work. | * Only scrolling is asynchronous/off main thread. All other features require further work. | ||
=== Operating systems === | === Operating systems === | ||
* Android: | * Android: Released. 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. | * 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. | * 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. | * 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. | * 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: | * Windows: | ||
** Direct3D 10: {{bug|756606}} Not started yet. | ** 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. | ** 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== | ==Future Work== | ||
Line 77: | Line 77: | ||
===Off-main-thread layers implementations=== | ===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. | 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 ==== | ==== Android ==== | ||
Line 116: | Line 120: | ||
=Development= | =Development= | ||
Development is happening on mozilla-central. | Development is happening on mozilla-central and the graphics branch (layers refactoring). | ||
=Test cases= | =Test cases= | ||
http://people.mozilla.com/~ajuma/omtc/ | http://people.mozilla.com/~ajuma/omtc/ |
edits