Apple Proposing A New, Lower-Level Graphics API For The Web

Written by Michael Larabel in Standards on 7 February 2017 at 05:46 PM EST. 85 Comments
STANDARDS
On the desktop there's now Vulkan for Linux/Android systems, Direct3D 12 for Windows, and Metal for macOS systems as the latest-generation, performance-focused graphics APIs. On the web front, WebGL is the current dominant API that's derived from OpenGL ES but Apple is pushing an initiative for a new graphics API.

Apple is pursuing with the W3C a new graphics API for the web that will be more lower-level and similar to the concepts of Vulkan/D3D12/Metal. The goals of this proposed API would be something that maps nicely to modern web platform design patterns, a lower-level API for allowing greater performance, an API to expose GPU computation functionality (compute), and does not follow a single native API.

The matter of a design goal for "A technology that does not follow a single native API, which reduces the difficulty of implementation on platforms that do not support the chosen native API," may be a bit of contention by some developers... And likely signals Apple's unwillingness to support Vulkan on macOS even though there are drivers available for it on Linux and Windows and Android while D3D12/Metal are limited to their own single platforms.

But on the other hand, not forcing a particular API by the system's hardware driver may end up working out better for some platforms, such as shoddy OpenGL ES drivers that caused early problems for WebGL on Windows and then efforts for mapping OpenGL ES / WebGL back to Direct3D for better driver support. So this new web graphics API would need to map nicely to Metal, Direct3D 12, and Vulkan for effective hardware support across platforms as well as supporting a common shading language.

The draft of their charter for this new W3C group can be found here. There is a brief posting about it via the W3.org community blog.

Apple's WebKit team has also written about the proposal at WebKit.org. It will be interesting to see what comes of this API proposal. The post does also talk about interoperability of any new graphics API with WebAssembly and WebVR. The blog post also covers some basic proposals for this new API they are just calling "WebGPU" for now.

With their WebGPU approach they are looking for it to be more object-oriented than WebGL, still interacting with HTML5's canvas element, WebGPU contexts exposing graphics commands and parallel compute commands, and for their WebGPU prototype they are using the Metal Shading Language as their default shading language. Check out the WebKit blog post for a lot more detail on their WebGPU thoughts.

There are certainly many developers that would like something lower-level than WebGL and more akin to D3D12/Vulkan, but at least from Apple's stated goals, they aren't for something like "WebVulkan." It will also be interesting to see how they end up handling GPGPU/compute in the browser and what restrictions are placed.
Related News
About The Author
Michael Larabel

Michael Larabel is the principal author of Phoronix.com 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 OpenBenchmarking.org automated benchmarking software. He can be followed via Twitter, LinkedIn, or contacted via MichaelLarabel.com.

Popular News This Week