Confirmed users
94
edits
Line 94: | Line 94: | ||
[Feedback from Games Work Week: https://games.etherpad.mozilla.org/8] | [Feedback from Games Work Week: https://games.etherpad.mozilla.org/8] | ||
WebGL is a quite thin layer on top of GL or GLES, with an extensive conformance suite and solid lines of communication between implementers. | |||
We currently have hardware acceleration support everywhere, though there is also latent support for using OSMesa as a software renderer. | |||
There is also [https://bugzilla.mozilla.org/show_bug.cgi?id=731836 a bug to add support for the Mesa llvmpipe software renderer]. | |||
Chrome is integrating the proprietary SwiftShader software renderer. | |||
==Compositing== | |||
Though we have similar GL support everywhere, one bottleneck is compositing between our accelerated WebGL contexts and our layer managers. | |||
Sharing GLTextures between WebGL and Layers is possible with OGL Layers, available on Mac and Linux. (though heavily blacklisted on Linux) | |||
Sharing EGLSurfaces provides the same functionality between ANGLE EGL+GLES and D3D10 Layers. | |||
A more complete description of the backend combinations is at [[Platform/Gfx/WebGLBackends]]. | |||
Currently, we lack composition acceleration on WinXP, most Linux, and Mobile. | |||
Mobile is being investigated as part of OMTC. | |||
Linux just needs better OGL driver support to allow unblacklisting. | |||
WinXP can't run D3D10 to take advantage of ANGLE's EGLSurface sharing. | |||
On Windows, we prefer ANGLE's implementation of EGL+GLES instead of using native WGL+GL. | |||
Part of the reason for this is blocklisting, but also because we don't yet have a way to interop between native GL and D3D Layers. | |||
There is [https://bugzilla.mozilla.org/show_bug.cgi?id=618898 a bug for implementing WGL_NV_DX_interop], which provides this interop. | |||
In the future, it might be preferable to default to using WGL+GL+interop, falling back to ANGLE based on blacklisting. | |||
==Extensions== | |||
There are a number of pieces of developer-desired functionality that are not currently available in WebGL. | |||
One of the biggest missing features in WebGL is compressed textures, however there's already a [https://bugzilla.mozilla.org/show_bug.cgi?id=728017 bug for that]. | |||
Others include: | |||
* Anisotropic filtering ([https://bugzilla.mozilla.org/show_bug.cgi?id=728354 bug]) | |||
* Async uploads | |||
* Multiple FBO attachments | |||
* Instancing | |||
* Occlusion queries | |||
* Depth textures | |||
* sRGB | |||
A number of these are basically just uplifting existing GL/GLES extensions to WebGL, which is generally easy to do, and for which we have a [https://bugzilla.mozilla.org/show_bug.cgi?id=728319 tracking bug]. | |||
However, this also means we can only support these extensions on devices with the respective GL/GLES extensions. | |||
We should gather telemetry for extension support to improve our knowledge of extensions' penetration. | |||
There should also be a way to expose fast-paths, especially to eliminate costly pixel format swizzling. (For example between BGRA and RGBA) | |||
==Tools== | |||
There is demand for better tools for understanding what WebGL is doing, so that it's easier to debug for developers. | |||
= High-level 2D Graphics = | = High-level 2D Graphics = |