4 ms·
> The most popular of the next-gen GPU APIs are Vulkan by the Khronos Group, Metal by Apple and DirectX 12 by Microsoft. ... (WebGPU) introduces its own abstrac
by ReactiveJelly 3y ago
> The most popular of the next-gen GPU APIs are Vulkan by the Khronos Group, Metal by Apple and DirectX 12 by Microsoft. ... (WebGPU) introduces its own abstractions and doesn’t directly mirror any of these native APIs.
Huh. I was wondering about that.
Until now I just figured every "Web*" thing was browsers exposing (to JS alone) something that they already compiled in:
- WebRTC is ffmpeg
- Canvas is Skia
- WebGL is ANGLE
- WebCodecs is also ffmpeg
- WebTransport is QUIC
- WebSockets are TCP
I might be wrong on some of those.
- nl 3y agoI think all of these are wrong. > WebRTC is ffmpeg No. WebRTC is a transport protocol for media communications. > Canvas is Skia Skia is a graphics engine you can build a Canvas implementation on top of > WebGL is ANGLE I don't know what ANGLE is, but WebGL is based on OpenGL. As this article says "WebGL’s API is really just OpenGL ES 2.0" > WebCodecs is also ffmpeg Both allow conceptually similar things (low level access to specific parts of a media stream). But the APIs are dramatically different. > WebTransport is QUIC No it is an API to expose lower level parts of HTTP/3 to developers. HTTP/3 uses QUIC as a transport protocol, but it is very wrong to say it "is" QUIC. > WebSockets are TCP Well WebSockets is built on top of TCP. As is HTTP/1 and HTTP/2. (HTTP/3 uses UDP via QUIC)
- dagenix 3y ago> I don't know what ANGLE is, but WebGL is based on OpenGL. As this article says "WebGL’s API is really just OpenGL ES 2.0" I believe that ANGLE is a library that is widely used to implement WebGL by translating OpenGL ES calls into Direct 3D calls: https://en.wikipedia.org/wiki/ANGLE_(software) https://en.wikipedia.org/wiki/ANGLE_(software)
- nl 3y agoThe OP seems to be confusing the concept of API and library layering with the idea that something is something else. To be clear: in software almost everything is built on top of other things using libraries. This doesn't mean the new thing that is built is that thing at all, and indeed that new thing may be able to switch out the lower level library for a different implementation.
- still_grokking 3y ago> > WebTransport is QUIC > No it is an API to expose lower level parts of HTTP/3 to developers. HTTP/3 uses QUIC as a transport protocol, but it is very wrong to say it "is" QUIC. Well, that's the only thing the parent got almost right. (The rest was obvious nonsense, though. I agree.) WebTransport is of course not QUIC. But it allows to use QUIC streams almost directly. There are no "lower parts" of HTTP/3 other than QUIC. HTTP/3 is a quite thin layer directly atop of QUIC. With WebTransport you send a CONNECT request with some special flags / headers to the web server and given a correct response you can start using raw QUIC streams over your HTTP/3 QUIC connection. The overhead to get at your raw QUIC streams is quite low and a one time thing. From there you can directly use all the capabilities QUIC gives you (client or server initiated reliable unidirectional and bidirectional data streams or unreliable datagrams transporting arbitrary binary messages over a kind of "virtual" connection).
- CMCDragonkai 3y agoI was looking into this but are you sure web transport will expose bidirectional binary quic streams and datagrams to the browser? If so please link so I can start hacking!
- still_grokking 3y agoYes, I'm quite sure this works this way. I was looking into a few implementations and the specs: https://datatracker.ietf.org/doc/html/draft-ietf-webtrans-overview-05 https://datatracker.ietf.org/doc/html/draft-ietf-webtrans-ov... https://www.w3.org/TR/webtransport/ https://www.w3.org/TR/webtransport/ https://github.com/w3c/webtransport https://github.com/w3c/webtransport https://github.com/w3c/webtransport/blob/main/explainer.md https://github.com/w3c/webtransport/blob/main/explainer.md https://github.com/aiortc/aioquic/blob/main/examples/http3_server.py#L227 https://github.com/aiortc/aioquic/blob/main/examples/http3_s... WebTransport just landed in Firefox release versions and is available since some time in Chromium so it's indeed ready for hacking! :-D
- flohofwoe 3y ago> I don't know what ANGLE is, but WebGL is based on OpenGL ANGLE is a GLES implementation on top of D3D9, D3D11, GL, Vulkan or Metal.
- deleted 3y ago[deleted]
- deleted 3y ago[deleted]
- kalleboo 3y ago> Canvas is Skia Canvas is Apple Quartz. They implemented it in WebKit for their dashboard widgets (which were implemented what we called "HTML5" back then) which leaked into Safari, and it turned out to be so useful that it got adopted in other browsers as a WHATWG standard.