Platform/GFX/WebRender2020

From MozillaWiki
< Platform‎ | GFX
Jump to: navigation, search

WebRender 2020 Roadmap

The purpose of this document is to outline the high-level goals and priorities for WebRender in 2020. The intention is to:

  • Provide high-level guidance to the Graphics team to inform priorities
    • We will break these down into more clear goals/work per quarter
  • Inform our stakeholders and any other interested parties about our plans

These are our high-level goals and objectives and we will be breaking them down to more specific deliverables per quarter.

  • Q1 Priorities
  • Q2 Priorities
  • Q3 Priorities
  • Q4 Priorities

H1 Priorities

This is an outline of the core priorities we will be focusing on during the first half of 2020. This is roughly in order of priority.

Ship on Intel

By H1 2020 we will have completed the bulk of the core performance infrastructure work that will unblock our ability to ship on Intel laptops, and to hardware with higher resolution screens. As such, a major priority for H1 will be to ship on more Intel with each release, while continuing to carefully monitor performance and correctness issues.

Kick-off Software Fallback

In Q3 and Q4 of 2019 we began early investigation into our plan for a software fallback for WebRender. Building a software fallback is absolutely critical to our ability to achieve ‘WebRender’ everywhere. Starting in H1 2020, we plan to assemble a small team within Graphics to focus on building out the software fallback.

Android

At the end of 2019, we successfully shipped WebRender on Android (specifically Fenix Nightly) for the Pixel 2 and 2XL. We want to ship WebRender for Fenix 'release' (aka Firefox Preview) in 72, which will ship in early January. Once that milestone has been achieved, we will identify further targets for shipping (likely by grouping devices with similar hardware together) as well as focus on performance enhancing work. We would also like to set up some experiments so we can compare WebRender vs. Non-WebRender on Android.

General Perf Improvements

Depending on how many additional correctness or driver issues we have to tackle once we start shipping on more Intel, we’d also like to continue prioritizing general performance improvements that will have cross-platform benefits. We are currently tracking this work in a wr-perf metabug and are working on organizing discrete projects and tasks out of that list, grouped by common themes/causes. This is work that would carry through H2 as well.

H2 Priorities

Just Keep Shipping

Of course, we will need to keep shipping WebRender to more platforms in H2. Our primary goal will always be to ship WebRender to more platforms and fix any correctness or performance issues that block that. The list of more platforms we will consider in H2 are:

  • Finishing off core Intel rollout
  • Shipping to the rest of AMD and Nvidia
  • Mac and Linux
  • Windows 7
  • Continued Android rollout

The exact priority and target per platform is TBD and will be determined as we progress through H1.

More Software Fallback

It is unlikely we can finish all of the software fallback work in H1, so H2 would see that continued with a goal of wrapping up this half.

Low level interaction with GPU (gfx-rs)

Gfx-rs is a low-level graphics abstraction layer that has been developed by key members of the graphics team in conjunction with contributors and is something we want to integrate into WebRender, ideally in H2. The advantages to Gfx-rs is that it lets us access lower overhead graphics APIs, which reduces CPU usage during rendering. This can result in performance improvements, such as further improving battery life for laptops.

Gfx-rs is also powering our emerging WebGPU stack, and having WebRender share it would make it a more unified codebase with less friction between parts.