Mozilla Proposes "Obsidian" Low-Level Graphics API For The Web, Based On Vulkan

Written by Michael Larabel in Mozilla on 21 March 2017 at 12:12 PM EDT. 25 Comments
Mozilla has laid out a proposal for a new low-level graphics API for the web dubbed Obsidian.

Obsidian has been published as a possible proposal for WebGL-Next. As we reported a few days ago, The Khronos Group now has a staging area for WebGL-Next proposals and just a few minutes ago was the first proposal submitted.

Mozilla developers have been working on Obsidian and is explained by their documentation as:
This is Mozilla's draft proposal for the GPU API for the Web, called Obsidian. It is a low-level API that provides maximum feature set of the GPU to the web applications. The API is designed for WebAssembly, modern GPUs, and multi-threaded environment in mind.

Obsidian is a temporary code name, signifying the Vulkan roots of the API: Obsidian is a naturally occurring volcanic glass formed as an extrusive igneous rock.

This proposal is not a specification. It includes reasoning for the design decisions, draft WebIDL and a bit of example code. We don't aim to provide a complete specification, instead we want this proposal to represent our vision of the future API in the working group discussions, a vision of rich graphics on the Web powered by a low-level explicit API.
The need for a more efficient graphics API for the Web is clear. What is not clear is the look and design of such API. Previous mailing lists discussions were split into two groups: one that considered Metal as a good baseline for the new API, due to it simpler and higher level abstraction, which is easier to provide safely on the Web. Another group saw Vulkan as an ultimately portable API that just needs to be re-defined on the Web with some feature cuts.

We built a prototype into Servo, providing a Metal-like API in WebIDL (for JavaScript), backed by Vulkan. It exposed the problems of communicating with the graphics backend via the process barrier, transcoding the commands between different APIs, and briefly touched the security aspect. We found this way to be reachable, but we also realized that this is an unique opportunity for the Web to get so much more.

Those wanting to read this proposal along with some possible JavaScript sample code can find the Obsidian pull request here. Keep in mind this is just a proposal at this point and going forward we're likely to see other new web graphics API proposals before the WebGL working group begins settling on any future API decisions.
Related News
About The Author
Michael Larabel

Michael Larabel is the principal author of and founded the site in 2004 with a focus on enriching the Linux hardware experience. Michael has written more than 20,000 articles covering the state of Linux hardware support, Linux performance, graphics drivers, and other topics. Michael is also the lead developer of the Phoronix Test Suite, Phoromatic, and automated benchmarking software. He can be followed via Twitter, LinkedIn, or contacted via

Popular News This Week