зеркало из https://github.com/mozilla/gecko-dev.git
64 строки
2.6 KiB
ReStructuredText
64 строки
2.6 KiB
ReStructuredText
Layers History
|
||
==============
|
||
|
||
This is an overview of the major events in the history of our Layers
|
||
infrastructure.
|
||
|
||
- iPhone released in July 2007 (Built on a toolkit called LayerKit)
|
||
|
||
- Core Animation (October 2007) LayerKit was publicly renamed to OS X
|
||
10.5
|
||
|
||
- Webkit CSS 3d transforms (July 2009)
|
||
|
||
- Original layers API (March 2010) Introduced the idea of a layer
|
||
manager that would composite. One of the first use cases for this was
|
||
hardware accelerated YUV conversion for video.
|
||
|
||
- Retained layers (July 7 2010 - Bug 564991) This was an important
|
||
concept that introduced the idea of persisting the layer content
|
||
across paints in gecko controlled buffers instead of just by the OS.
|
||
This introduced the concept of buffer rotation to deal with scrolling
|
||
instead of using the native scrolling APIs like ScrollWindowEx
|
||
|
||
- Layers IPC (July 2010 - Bug 570294) This introduced shadow layers and
|
||
edit lists and was originally done for e10s v1
|
||
|
||
- 3D transforms (September 2011 - Bug 505115)
|
||
|
||
- OMTC (December 2011 - Bug 711168) This was prototyped on OS X but
|
||
shipped first for Fennec
|
||
|
||
- Tiling v1 (April 2012 - Bug 739679) Originally done for Fennec. This
|
||
was done to avoid situations where we had to do a bunch of work for
|
||
scrolling a small amount. i.e. buffer rotation. It allowed us to have
|
||
a variety of interesting features like progressive painting and lower
|
||
resolution painting.
|
||
|
||
- C++ Async pan zoom controller (July 2012 - Bug 750974) The existing
|
||
APZ code was in Java for Fennec so this was reimplemented.
|
||
|
||
- Streaming WebGL Buffers (February 2013 - Bug 716859) Infrastructure
|
||
to allow OMTC WebGL and avoid the need to glFinish() every frame.
|
||
|
||
- Compositor API (April 2013 - Bug 825928) The planning for this
|
||
started around November 2012. Layers refactoring created a compositor
|
||
API that abstracted away the differences between the D3D vs OpenGL.
|
||
The main piece of API is DrawQuad.
|
||
|
||
- Tiling v2 (Mar 7 2014 - Bug 963073) Tiling for B2G. This work is
|
||
mainly porting tiled layers to new textures, implementing
|
||
double-buffered tiles and implementing a texture client pool, to be
|
||
used by tiled content clients.
|
||
|
||
A large motivation for the pool was the very slow performance of
|
||
allocating tiles because of the sync messages to the compositor.
|
||
|
||
The slow performance of allocating was directly addressed by bug 959089
|
||
which allowed us to allocate gralloc buffers without sync messages to
|
||
the compositor thread.
|
||
|
||
- B2G WebGL performance (May 2014 - Bug 1006957, 1001417, 1024144) This
|
||
work improved the synchronization mechanism between the compositor
|
||
and the producer.
|