Platform/Games/StatusUpdate

From MozillaWiki
Jump to: navigation, search

Games Platform High-Level Status

This page is intended to communicate an evolving status update on what we’ve been working on and what you’ll be seeing shipping in browsers in the near future.

WebAssembly

WebAssembly is an emerging standard whose goal is to define a safe, portable, size- and load-time efficient binary compiler target which offers near-native performance — a virtual CPU for the Web. WebAssembly is being developed in a W3C Community Group [1] (CG) whose members [2] include Mozilla, Microsoft, Google, and Apple.

Ship Status: The initial version of WebAssembly released in Firefox in March 2017. Future versions will focus on threading and performance improvements.

Improving WebGL Success Rates

We have been able to identify and address issues that impacted the availability of WebGL on Firefox. In particular, Firefox telemetry shows that we have reduced WebGL availability failures from over 20% in Firefox 47 to less than 8% in Firefox 50. This is consistent with the level of improvement we have seen with other browsers.

In addition, we are excited to say that we appear to be near a significant tipping point, with WebGL availability matching that of Flash. Thanks to game launch success rate data provided by Nordeus [3] for their Top Eleven [4] game on Facebook, we can see that nearly 77% (and increasing) of desktop users can successfully play a WebGL title. Firefox telemetry shows that ~77% of Firefox users have the Flash plug-in available for use. As latest versions of browsers spread across the user base, we expect the WebGL success rate to continue to rise.

Ship Status: Currently shipping in all major browsers.

Standardizing and Shipping WebGL/WebGL 2

WebGL 2 is based on the OpenGL ES 3.0 specification, and offers new features, including 3D textures and 2D texture arrays, ESSL 3.0 (an advanced shading language), integer texture formats and vertex attributes, transform feedback, and uniform blocks for more efficient uploads. It also adds primitive restart, framebuffer blitting and invalidation, separable sampler objects, occlusion queries and pixel buffer objects. Some optional WebGL 1 extensions are now part of the guaranteed core of WebGL 2, including multiple render targets, instanced drawing, depth and floating-point textures, and sRGB support. Also notable is support for the new ETC2 texture format which provides alpha support on a compressed texture, is supported on both desktop and mobile devices, and allows developers to use a single texture format across devices.

Ship Status: WebGL 2 shipped in Firefox 51 in January 2017. We are now focusing on ongoing performance improvements.

Addressing 32-Bit Out of Memory Issues (OOMs)

A consistent pain point for web developers using compiled code bases and asm.js is hitting out of memory conditions on 32-Bit browsers. To address this 32-Bit OOM challenge, we have proposed a new Large-Allocation header [5]. This header tells the browser to make a best-effort attempt to load the document in an unfragmented content process, which should greatly decrease the OOM failure rate for top-level browsing contexts. We aim to ensure that if the conditions for a cross-process navigation are met, web apps are able to reliably allocate a gigabyte of contiguous address space.

Ship Status: Firefox intends to ship the Large-Allocation header solution in Firefox 53 in April 2017.

Migration to 64-Bit Browsers

An additional opportunity is to encourage users toward using a 64-Bit browser, which allows applications to use huge amounts of physical memory. This means that address space exhaustion (or OOMs) are basically impossible.

Today:

  • 72% of our users are running 32-bit Firefox on 64-bit Windows. These users could switch to a 64-bit Firefox.
  • 25% are running 32-bit Firefox on 32-bit Windows. These users cannot switch to a 64-bit Firefox.
  • 3% are running 64-bit Firefox already.

As nearly three-quarters of Firefox users are running 32-bit Firefox on 64-bit Windows, there is a huge opportunity to improve the ability of those users to run large web apps by accelerating the shift to 64-bit.

Ship Status: Per our plan of record[6], we are targeting August 2017 (Firefox 55) to change the Firefox installer to default to 64-bit for new installs or reinstalls for eligible users. Upgrading existing 32-bit browser users on 64-bit OSes to a 64-bit browser is not part of this roll-out phase. Our current thinking is to upgrade 32-bit users in October 2017 (Firefox 56).

Standardizing and Shipping SharedArrayBuffer

SharedArrayBuffer has been highly anticipated by web developers for years, as it is a key step toward enabling JavaScript to take full advantage of modern multi-core hardware [7]. In addition, SharedArrayBuffer is an important prerequisite for standardizing and shipping first-class multi-threading to WebAssembly in the coming months after WebAssembly’s initial release.

Ship Status: SharedArrayBuffer is enabled by default in Firefox Developer Edition, [8] and is now ready for release, pending final security approval.