tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

LayersHistory.rst (2666B)


      1 Layers History
      2 ==============
      3 
      4 This is an overview of the major events in the history of our Layers
      5 infrastructure.
      6 
      7 -  iPhone released in July 2007 (Built on a toolkit called LayerKit)
      8 
      9 -  Core Animation (October 2007) LayerKit was publicly renamed to OS X
     10   10.5
     11 
     12 -  Webkit CSS 3d transforms (July 2009)
     13 
     14 -  Original layers API (March 2010) Introduced the idea of a layer
     15   manager that would composite. One of the first use cases for this was
     16   hardware accelerated YUV conversion for video.
     17 
     18 -  Retained layers (July 7 2010 - Bug 564991) This was an important
     19   concept that introduced the idea of persisting the layer content
     20   across paints in gecko controlled buffers instead of just by the OS.
     21   This introduced the concept of buffer rotation to deal with scrolling
     22   instead of using the native scrolling APIs like ScrollWindowEx
     23 
     24 -  Layers IPC (July 2010 - Bug 570294) This introduced shadow layers and
     25   edit lists and was originally done for e10s v1
     26 
     27 -  3D transforms (September 2011 - Bug 505115)
     28 
     29 -  OMTC (December 2011 - Bug 711168) This was prototyped on OS X but
     30   shipped first for Fennec
     31 
     32 -  Tiling v1 (April 2012 - Bug 739679) Originally done for Fennec. This
     33   was done to avoid situations where we had to do a bunch of work for
     34   scrolling a small amount. i.e. buffer rotation. It allowed us to have
     35   a variety of interesting features like progressive painting and lower
     36   resolution painting.
     37 
     38 -  C++ Async pan zoom controller (July 2012 - Bug 750974) The existing
     39   APZ code was in Java for Fennec so this was reimplemented.
     40 
     41 -  Streaming WebGL Buffers (February 2013 - Bug 716859) Infrastructure
     42   to allow OMTC WebGL and avoid the need to glFinish() every frame.
     43 
     44 -  Compositor API (April 2013 - Bug 825928) The planning for this
     45   started around November 2012. Layers refactoring created a compositor
     46   API that abstracted away the differences between the D3D vs OpenGL.
     47   The main piece of API is DrawQuad.
     48 
     49 -  Tiling v2 (Mar 7 2014 - Bug 963073) Tiling for B2G. This work is
     50   mainly porting tiled layers to new textures, implementing
     51   double-buffered tiles and implementing a texture client pool, to be
     52   used by tiled content clients.
     53 
     54   A large motivation for the pool was the very slow performance of
     55   allocating tiles because of the sync messages to the compositor.
     56 
     57   The slow performance of allocating was directly addressed by bug 959089
     58   which allowed us to allocate gralloc buffers without sync messages to
     59   the compositor thread.
     60 
     61 -  B2G WebGL performance (May 2014 - Bug 1006957, 1001417, 1024144) This
     62   work improved the synchronization mechanism between the compositor
     63   and the producer.