summaryrefslogtreecommitdiffstats
path: root/gfx/docs/LayersHistory.rst
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 00:47:55 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 00:47:55 +0000
commit26a029d407be480d791972afb5975cf62c9360a6 (patch)
treef435a8308119effd964b339f76abb83a57c29483 /gfx/docs/LayersHistory.rst
parentInitial commit. (diff)
downloadfirefox-upstream/124.0.1.tar.xz
firefox-upstream/124.0.1.zip
Adding upstream version 124.0.1.upstream/124.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r--gfx/docs/LayersHistory.rst63
1 files changed, 63 insertions, 0 deletions
diff --git a/gfx/docs/LayersHistory.rst b/gfx/docs/LayersHistory.rst
new file mode 100644
index 0000000000..5ab2e2a821
--- /dev/null
+++ b/gfx/docs/LayersHistory.rst
@@ -0,0 +1,63 @@
+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.