Platform/GFX: Difference between revisions

 
(158 intermediate revisions by 18 users not shown)
Line 1: Line 1:
== Details on the active work ==
This is a page of useful information about and for the Firefox Graphics team. For an overview of graphics inside of Gecko look [https://wiki.mozilla.org/Gecko:Overview#Graphics here]


=== SkiaGL ===
If you're interested in contributing, check out [[Platform/GFX/Contribute|this]] page.
* Joint effort with Fennec, Taipei teams
* Taipei visiting Toronto, May 13-17, 2013
* Toronto et al. visiting Taipei May 20-24, 2013
* See [[Mobile/SkiaGL | Mobile SkiaGL page]]
* Some notes about [https://wiki.mozilla.org/Platform/GFX/Gralloc Gralloc]


=== Scrolling (async, subframe panning) ===
You can find the team in channel #gfx-firefox:mozilla.org on Matrix ([https://wiki.mozilla.org/Matrix info on how to join Matrix]).
* B2G (performance) target applications: gallery, contacts, applist, browser, e-mail


=== Azure ===
* Get the tests going
** On all platforms
** Use https://hg.mozilla.org/users/bschouten_mozilla.com/moz2d/
* Cairo


=== OMT image animation ===
== Roadmaps and Goals==
* Details coming


=== Testing, replaying, building Moz2D ===
===Roadmaps===
* Linux/Mac
** Cairo
*** Get libcairo2-dev (http://cairographics.org/download/)
*** Get qt4-sdk (http://qt-project.org/downloads) if you plan on using player2d
*** hg clone http://hg.mozilla.org/users/bschouten_mozilla.com/moz2d
*** On Mac, add the directory containing the cairo.pc file to your PKG_CONFIG_PATH (if it's not there already).
**** One location seen was /usr/X11/lib/pkgconfig
**** Another location seen was /opt/local/lib/pkgconfig
*** Compiler issues with Player2D target
**** Currently, you need to be building with clang in order for Player2D (Qt dependency) to build.
**** If you don't get qmake producing a Makefile, but instead get a xcodeproj file instead, you may need to create the Makefile yourself, using qmake options (details forthcoming) and run make manually.
*** Build/Useful targets:
**** release: make -f Makefile.standalone release MOZ2D_CAIRO=true
**** debug: make -f Makefile.standalone debug MOZ2D_CAIRO=true
**** check: make -f Makefile.standalone check MOZ2D_CAIRO=true
**** player2d: make -f Makefile.standalone player2d MOZ2D_CAIRO=true
** Skia
*** Get skia: svn checkout http://skia.googlecode.com/svn/trunk skia
*** Build skia with BUILDTYPE=Release: https://sites.google.com/site/skiadocs/user-documentation/quick-start-guides/linux
*** Get qt4-sdk (http://qt-project.org/downloads) if you plan on using player2d
*** hg clone http://hg.mozilla.org/users/bschouten_mozilla.com/moz2d
*** make -f Makefile.standalone clean release MOZ2D_SKIA=skia
**** If you didn't checkout skia under the moz2d src directory then set MOZ2D_SKIA to it's relative path
* Windows
** Dependencies:
*** VS2012
*** QtSDK if you plan on using player2d
*** A default cairo and skia build in the cairo/skia directories in the parent directory of Moz2D if you plan to use skia/cairo
** hg clone http://hg.mozilla.org/users/bschouten_mozilla.com/moz2d
** Open the gfx2d visual studio solution
** Build the solution
** For player2d, run qmake on player2d.pro and build.


=== Documentation ===
View our general [https://wiki.mozilla.org/Platform/GFX/roadmap2020 Roadmap for 2020]
* Doxygen extraction - http://people.mozilla.org/~bgirard/doxygen/


== Quarterly Planning ==
View the [https://wiki.mozilla.org/Platform/GFX/WebRender2020 WebRender-specific roadmap]


See the [[Platform/Planning | Platform Planning page]] for info on our meetings that occur 2-3 times a year to plan features.
View a [https://docs.google.com/spreadsheets/d/1ygcw2u1FuC39-b_5iwELAToYYWVYGEfyieW77ouJ9Mc/edit#gid=0 more detailed] roadmap mapped against months/releases


== Feature Planning ==
===Quarterly Goals===


* [[Platform/GFX/HardwareAcceleration|Hardware Acceleration]]
View the [https://wiki.mozilla.org/Platform/GFX/GFXQ2Goals Graphics Team Q2 Goals]
* [[Platform/GFX/LayerAPI|Layer API]]
* [[Platform/GFX/Responsiveness|Responsiveness]]
* [[Platform/GFX/PerformanceToDo|PerformanceToDo]]
* [[Platform/GFX/Firefox.next|Firefox.next]]
* [[Platform/GFX/GLLayersOnMobile|OpenGL Layers on Mobile]]
* [[Platform/GFX/OffMainThreadCompositing|Off Main Thread Compositing]]
* [[Platform/GFX/WebCL|WebCL]]
* [[Platform/GFX/WebGL|WebGL]]
* [[Platform/GFX/X11GLLayers|X11 GL Layers]]
* [[Platform/GFX/Fonts|Fonts]]
* [[Platform/GFX/MobileGPUs|MobileGPUs]]
* [[Platform/Imagelib|Imagelib]]
* [[Platform/GFX/Gralloc|Gralloc]]


== Development Planning ==
====WebRender Priorities====
* [https://wiki.mozilla.org/Platform/GFX/WebRender2020_Q1 WebRender Q1 Priorities]


* [[Platform/GFX/InternProjects|Intern Project List]]
* [https://wiki.mozilla.org/Platform/GFX/WebRender2020_Q2 WebRender Q2 Priorities]
* [[Platform/GFX/GLESLayersMeeting|OpenGL ES accelerated layers syncup meeting]]
* [[Platform/GFX/BugKill|BugKill - make our bug lists containable in one person's head]]
* [[Platform/GFX/AzureConversion|Convert code to the new 2D API - the second phase of the Azure project]]
* [[Platform/GFX/2013Thoughts|Things that are being considered for 2013]]


== Team Meetings ==
* [https://wiki.mozilla.org/Platform/GFX/WebRender2020_Q3 WebRender Q3 Priorities]


* [[Platform/GFX/2013-Jun-3|3 June 2013]]
==Meeting Notes==
* [[Platform/GFX/2013-May-13|13 May 2013]]
* [[Platform/GFX/2013-May-6|6 May 2013]]
* [[Platform/GFX/2013-April-22|22 April 2013]]
* [[Platform/GFX/2013-April-2|2 April 2013]]
* [[Platform/GFX/2013-March-18|18 March 2013]]
* [[Platform/GFX/2013-March-4|4 March 2013]]
* [[Platform/GFX/2013-February-19|19 February 2013]]
* [[Platform/GFX/2013-February-4|4 February 2013]]
* [[Platform/GFX/2013-January-7|7 January 2013]]
* [[Platform/GFX/2012-December-10|10 December 2012]]
* [[Platform/GFX/2012-November-26|26 November 2012]]
* [[Platform/GFX/2012-November-5|5 November 2012]]
* [[Platform/GFX/2012-October-22|22 October 2012]]
* [[Platform/GFX/2012-October-15|15 October 2012]]
* [[Platform/GFX/2012-October-1|1 October 2012]]
* [[Platform/GFX/2012-September-24|24 September 2012]]
* [[Platform/GFX/2012-September-10|10 September 2012]]
* [[Platform/GFX/2012-August-27|27 August 2012]]
* [[Platform/GFX/2012-August-20|20 August 2012]]
* [[Platform/GFX/2012-August-13|13 August 2012]]
* [[Platform/GFX/2012-July-30|30 July 2012]]
* [[Platform/GFX/2012-July-9|9 July 2012]]
* [[Platform/GFX/2012-June-25|25 June 2012]]
* [[Platform/GFX/2012-June-18|18 June 2012]]
* [[Platform/GFX/2012-June-11|11 June 2012]]
* [[Platform/GFX/2012-June-4|4 June 2012]]
* [[Platform/GFX/2012-May-22|22 May 2012]]
* [[Platform/GFX/2012-May-14|14 May 2012]]
* [[Platform/GFX/2012-May-7-priorities|7 May 2012 GFX Priorities]]
* [[Platform/GFX/2012-May-7|7 May 2012]]
* [[Platform/GFX/2012-April-30|30 April 2012]]
* [[Platform/GFX/2012-April-23|23 April 2012]]
* [[Platform/GFX/2012-April-16|16 April 2012]]
* [[Platform/GFX/2012-April-10|10 April 2012]]
* [[Platform/GFX/2012-April-2|2 April 2012]]
* [[Platform/GFX/2012-March-26|26 March 2012]]
* [[Platform/GFX/2012-March-19|19 March 2012]]
* [[Platform/GFX/2012-March-12|12 March 2012]]
* [[Platform/GFX/2012-March-5|5 March 2012]]
* [[Platform/GFX/2012-February-27|27 February 2012]]
* [[Platform/GFX/2012-February-21|21 February 2012]]
* [[Platform/GFX/2012-February-13|13 February 2012]]
* [[Platform/GFX/2012-February-6|6 February 2012]]
* [[Platform/GFX/2012-January-30|30 January 2012]]
* [[Platform/GFX/2012-January-23|23 January 2012]]
* [[Platform/GFX/2012-January-16|16 January 2012]]
* [[Platform/GFX/2012-January-9|9 January 2012]]
* [[Platform/GFX/2011-December-19|19 December 2011]]
* [[Platform/GFX/2011-December-12|12 December 2011]]
* [[Platform/GFX/2011-December-5|5 December 2011]]
* [[Platform/GFX/2011-November-28|28 November 2011]]
* [[Platform/GFX/2011-November-21|21 November 2011]]
* [[Platform/GFX/2011-November-7|7 November 2011]]
* [[Platform/GFX/2011-October-31|31 October 2011]]
* [[Platform/GFX/WebGL-Security-2011-10-28|28 October 2011 WebGL security review]]
* [[Platform/GFX/2011-October-24|24 October 2011]]
* [[Platform/GFX/2011-October-17|17 October 2011]]
* [[Platform/GFX/2011-October-11|11 October 2011]]
* [[Platform/GFX/2011-October-3|3 October 2011]]
* [[Platform/GFX/2011-September-26|26 September 2011]]
* [[Platform/GFX/2011-September-19|19 September 2011]]
* [[Platform/GFX/2011-September-13-with-Apple-and-Google|13 September 2011 informal meeting with Apple and Google engineers]]
* [[Platform/GFX/2011-September-6|6 September 2011]]
* [[Platform/GFX/2011-August-29|29 August 2011]]
* [[Platform/GFX/2011-August-22|22 August 2011]]
* [[Platform/GFX/2011-August-15|15 August 2011]]
* [[Platform/GFX/2011-August-8|8 August 2011]]
* [[Platform/GFX/2011-August-2|2 August 2011]]
* [[Platform/GFX/2011-July-25|25 July 2011]]
* [[Platform/GFX/2011-July-11|11 July 2011]]
* [[Platform/GFX/WebGL-Security-2011-06-29|29 June 2011 WebGL security review]]
* [[Platform/GFX/2011-June-27|27 June 2011]]
* [[Platform/GFX/2011-June-20|20 June 2011]]
* [[Platform/GFX/2011-June-13|13 June 2011]]
* [[Platform/GFX/2011-June-6|6 June 2011]]
* [[Platform/GFX/2011-May-30|30 May 2011]]
* [[Platform/GFX/2011-May-24|24 May 2011]]
* [[Platform/GFX/2011-May-16|16 May 2011]]
* [[Platform/GFX/2011-May-9|9 May 2011]]
* [[Platform/GFX/2011-May-2|2 May 2011]]
* [[Platform/GFX/2011-Apr-18|18 April 2011]]
* [[Platform/GFX/2010-Mar-28|28 March 2011]]
* [[Platform/GFX/2010-Jan-3|3 January 2011]]


{{hidden
* [https://wiki.mozilla.org/Platform/GFX/SWWRmeetingnotes Software WebRender]
|2008-2010
* [https://wiki.mozilla.org/Platform/GFX/WRperfmeetings WR Perf]
|
* [https://wiki.mozilla.org/Platform/WRfuture WR Future]
* [[Platform/GFX/2010-Aug-30|30 August 2010]]
* [https://docs.google.com/document/d/1RnHYno9j-yLwS-DXvd-xyG8RBqe9StjCDu5GbGnXdP8/edit Texture/buffer upload] brainstorming
* [[Platform/GFX/2010-Aug-23|23 August 2010]]
* [https://wiki.mozilla.org/Platform/GFX/wrmac WebRender-Mac]
* [[Platform/GFX/2010-Aug-16|16 August 2010]]
* [[Platform/GFX/2010-Aug-9|9 August 2010]]
* [[Platform/GFX/2010-Aug-2|2 August 2010]]
* [[Platform/GFX/2010-Jul-26|26 July 2010]]
* [[Platform/GFX/2010-Jul-19|19 July 2010]]
* [[Platform/GFX/2010-Jul-12|12 July 2010]]
* [[Platform/GFX/2010-Jun-28|28 June 2010]]
* [[Platform/GFX/2010-Jun-21|21 June 2010]]
* [[Platform/GFX/2010-Jun-14|14 June 2010]]
* [[Platform/GFX/2010-Jun-7|7 June 2010]]
* [[Platform/GFX/2010-May-31|31 May 2010]]
* [[Platform/GFX/2010-May-24|24 May 2010]]
* [[Platform/GFX/2010-May-17|17 May 2010]]
* [[Platform/GFX/2010-May-10|10 May 2010]]
* [[Platform/GFX/2010-May-3|3 May 2010]]
* [[Platform/GFX/2010-Apr-26|26 Apr 2010]]
* [[Platform/GFX/2010-Apr-19|19 Apr 2010]]
* [[Platform/GFX/2010-Apr-12|12 Apr 2010]]
* [[Platform/GFX/2010-Apr-5|5 Apr 2010]]
* [[Platform/GFX/2010-Mar-29|29 Mar 2010]]
* [[Platform/GFX/2010-Mar-22|22 Mar 2010]]
* [[Platform/GFX/2010-Mar-15|15 Mar 2010]]
* [[Platform/GFX/2010-Mar-8|8 Mar 2010]]
* [[Platform/GFX/2010-Mar-1|1 Mar 2010]]
* [[Platform/GFX/2010-Feb-15|15 Feb 2010]]
* [[Platform/GFX/2010-Feb-8|8 Feb 2010]]
* [[Platform/GFX/2010-Feb-1|1 Feb 2010]]
* [[Platform/GFX/2010-Jan-25|25 Jan 2010]]
* [[Platform/GFX/2010-Jan-18|18 Jan 2010]]
* [[Platform/GFX/2010-Jan-11|11 Jan 2010]]
* [[Platform/GFX/2010-Jan-04|04 Jan 2010]]
* [[Platform/GFX/2009-Dec-21|21 Dec 2009]]
* [[Platform/GFX/2009-Dec-14|14 Dec 2009]]
* [[Platform/GFX/2009-Nov-30|30 Nov 2009]]
* [[Platform/GFX/2009-Nov-23|23 Nov 2009]]
* [[Platform/GFX/2009-Nov-16|16 Nov 2009]]
* [[Platform/GFX/2009-Nov-9|9 Nov 2009]]
* [[Platform/GFX/2009-Nov-2|2 Nov 2009]]
* [[Platform/GFX/2009-Oct-26|26 Oct 2009]]
* [[Platform/GFX/2009-Oct-19|19 Oct 2009]]
* [[Platform/GFX/2009-Oct-12|12 Oct 2009]]
* [[Platform/GFX/2009-Oct-5|5 Oct 2009]]
* [[Platform/GFX/2009-Sep-28|28 Sep 2009]]
* [[Platform/GFX/2009-Sep-21|21 Sep 2009]]
* [[Platform/GFX/2009-Sep-14|14 Sep 2009]]
* [[Platform/GFX/2009-Sep-7|7 Sep 2009]]
* [[Platform/GFX/2009-Aug-31|31 Aug 2009]]
* [[Platform/GFX/2009-Aug-17|17 Aug 2009]]
* [[Platform/GFX/2009-Aug-10|10 Aug 2009]]
* [[Platform/GFX/2009-Aug-3|3 Aug 2009]]
* [[Platform/GFX/2009-Jul-27|27 July 2009]]
* [[Platform/GFX/2009-Jul-20|20 July 2009]]
* [[Platform/GFX/2009-Jul-13|13 July 2009]]
* [[Platform/GFX/2009-Jul-6|6 July 2009]]
* [[Platform/GFX/2009-Jun-29|29 Jun 2009]]
* [[Platform/GFX/2009-Jun-22|22 Jun 2009]]
* [[Platform/GFX/2009-Jun-15|15 Jun 2009]]
* [[Platform/GFX/2009-Jun-8|8 Jun 2009]]
* [[Platform/GFX/2009-Jun-1|1 Jun 2009]]
* [[Platform/GFX/2009-May-25|25 May 2009]]
* [[Platform/GFX/2009-May-18|18 May 2009]]
* [[Platform/GFX/2009-May-11|11 May 2009]]
* [[Platform/GFX/2009-May-4|4 May 2009]]
* [[Platform/GFX/2009-Apr-20|20 Apr 2009]]
* [[Platform/GFX/2009-Apr-13|13 Apr 2009]]
* [[Platform/GFX/2009-Apr-6|6 Apr 2009]]
* [[Platform/GFX/2009-Mar-30|30 Mar 2009]]
* [[Platform/GFX/2009-Mar-23|23 Mar 2009]]
* [[Platform/GFX/2009-Mar-16|16 Mar 2009]]
* [[Platform/GFX/2009-Mar-9|9 Mar 2009]]
* [[Platform/GFX/2009-Mar-2|2 Mar 2009]]
* [[Platform/GFX/2009-Feb-23|23 Feb 2009]]
* [[Platform/GFX/2009-Feb-16|16 Feb 2009]]
* [[Platform/GFX/2009-Feb-9|9 Feb 2009]]
* [[Platform/GFX/2009-Feb-2|2 Feb 2009]]
* [[Platform/GFX/2009-Jan-26|26 Jan 2009]]
* [[Platform/GFX/2009-Jan-19|19 Jan 2009]]
* [[Platform/GFX/2009-Jan-12|12 Jan 2009]]
* [[Platform/GFX/2009-Jan-5|5 Jan 2009]]
* [[Platform/GFX/2008-Dec-15|15 Dec 2008]]
* [[Platform/GFX/2008-Dec-8|8 Dec 2008]]
* [[Platform/GFX/2008-Dec-1|1 Dec 2008]]
* [[Platform/GFX/2008-Nov-17|17 Nov 2008]]
* [[Platform/GFX/2008-Nov-10|10 Nov 2008]]
* [[Platform/GFX/2008-Nov-3|3 Nov 2008]]
* [[Platform/GFX/2008-Oct-20|20 Oct 2008]]
* [[Platform/GFX/2008-Oct-13|13 Oct 2008]]
* [[Platform/GFX/2008-Oct-6|6 Oct 2008]]
* [[Platform/GFX/2008-Sep-29|29 Sep 2008]]
* [[Platform/GFX/2008-Sep-22|22 Sep 2008]]
* [[Platform/GFX/2008-Sep-15|15 Sep 2008]]
* [[Platform/GFX/2008-Sep-8|8 Sep 2008]]
* [[Platform/GFX/2008-Sep-2|2 Sep 2008]]
* [[Platform/GFX/2008-Aug-19|19 Aug 2008]]
* [[Platform/GFX/2008-Aug-12|12 Aug 2008]]
* [[Platform/GFX/2008-Aug-5|5 Aug 2008]]
* [[Platform/GFX/2008-July-22|22 July 2008]]
* [[Platform/GFX/2008-July-15|15 July 2008]]
|headerstyle=background:#dddddd
}}


== Other Information ==
== Bug Triage Information ==


* [[Platform/GFX/HardwareList|Available Hardware List]]
[https://github.com/FirefoxGraphics/triage/wiki/Triage-guide Triage Guide]
* [[Platform/GFX/Hardware limitations|Hardware Limitations]]
 
[https://firefoxgraphics.github.io/triage/ Triage Dashboard]
 
== Technical Overviews ==
* [https://firefox-source-docs.mozilla.org/gfx/index.html Design documents for the Mozilla graphics architecture]
* [https://firefox-source-docs.mozilla.org/gfx/RenderingOverview.html Rendering Overview from HTML to GPU]
* [https://github.com/servo/webrender/tree/master/webrender/doc WebRender specific implementation notes]:
** [https://github.com/servo/webrender/blob/master/webrender/doc/text-rendering.md Text Rendering]
** [https://github.com/servo/webrender/blob/master/webrender/doc/blob.md Blobs]
** [https://github.com/servo/webrender/blob/master/webrender/doc/CLIPPING_AND_POSITIONING.md Clipping & Positioning elements]
** [https://github.com/servo/webrender/blob/master/webrender/doc/swizzling.md Color swizzling optimizations]
* [https://github.com/sotaroikeda/firefox-diagrams A large collection of detailed diagrams on call- and data-flow of IPC/Bridges/Compositor/Video playback/...]
 
== Tools & Workflows ==
 
=== Getting Started ===
* [https://docs.google.com/document/d/1qs9avZSVU4LohaEMUMIHsj64iB9je28KIThy0RTunpU/ Windows-based development] tips and step-by-step set up guide;
 
=== WebRender ===
* [https://github.com/servo/webrender/wiki/Debugging-WebRender Debugging WebRender] including [https://github.com/servo/webrender/issues/3070 an example debugging workflow];
 
== Useful Information ==
 
* [[Platform/GFX/Jargon|Jargon]]
* [[QA/Platform/Graphics/Inventory|QA Graphics Inventory: which hardware do we have and where is it]]
* [https://hackmd.io/lvtOckAtSrmIpZAwgtXptw WebGL Best Practices]
* [https://github.com/servo/webrender/wiki/Driver-issues Driver Issues] in WebRender
* [https://wiki.mozilla.org/Platform/GFX/perf_triage WebRender Perf] Triage
 
== Components ==
 
* [[Platform/GFX/Quantum_Render|Quantum Render]]
** Where have we shipped WebRender? https://wiki.mozilla.org/Platform/GFX/WebRender_Where
* [[Platform/GFX/Telemetry|Telemetry]]
* [[Platform/GFX/APZ|Async Panning and Zooming]]
* [[Platform/GFX/Moz2D|Moz2D]]
* [[Platform/GFX/WebGPU|WebGPU]]
 
== Archive ==
 
We have a lot of older pages that are no longer updated. They've been moved [[Platform/GFX/Archive | here]].

Latest revision as of 17:53, 17 July 2020

This is a page of useful information about and for the Firefox Graphics team. For an overview of graphics inside of Gecko look here

If you're interested in contributing, check out this page.

You can find the team in channel #gfx-firefox:mozilla.org on Matrix (info on how to join Matrix).


Roadmaps and Goals

Roadmaps

View our general Roadmap for 2020

View the WebRender-specific roadmap

View a more detailed roadmap mapped against months/releases

Quarterly Goals

View the Graphics Team Q2 Goals

WebRender Priorities

Meeting Notes

Bug Triage Information

Triage Guide

Triage Dashboard

Technical Overviews

Tools & Workflows

Getting Started

WebRender

Useful Information

Components

Archive

We have a lot of older pages that are no longer updated. They've been moved here.