diff options
Diffstat (limited to 'gfx/doc/LayersHistory.md')
-rw-r--r-- | gfx/doc/LayersHistory.md | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/gfx/doc/LayersHistory.md b/gfx/doc/LayersHistory.md new file mode 100644 index 000000000..2833aa3c5 --- /dev/null +++ b/gfx/doc/LayersHistory.md @@ -0,0 +1,60 @@ +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. + |