Mozilla schlägt eine Low-Level-API für das Web vor

Die Obsidian API ist die erste Reaktion auf den Aufruf der Khronos Group, Vorschläge für WebGL Next einzureichen. Damit dürfte ein Wettbewerb zu Apples jüngstem Vorschlag einer GPU für das Web entstehen.

In Pocket speichern vorlesen Druckansicht 68 Kommentare lesen
Mozilla schlägt Low-Level-API für das Web vor
Lesezeit: 3 Min.
Von
  • Rainald Menge-Sonnentag

Auf der Game Developers Conference hatte die Khronos Group WebGL 2 freigegeben. Kurz darauf hat das Industriekonsortium die Zukunftsplanung für WebGL Next begonnen und dafür auf GitHub WebGL-Next-Proposals angelegt, um einen öffentlichen Raum für Anregungen zu schaffen. Nun hat Mozilla mit der Obsidian API einen ersten Vorschlag eingereicht. Der Name des vulkanischen Gesteinglases ist ein Verweis auf die Vulkan-Schnittstelle von Khronos.

Mozilla weist in dem Beitrag zu Obsidian darauf hin, dass es sich bei der Vorstellung der API um keine fertige Spezifikation handelt. Das Ziel des Vorschlags ist die möglichst vollständige Nutzung der vorhandenen GPU-Funktionen. Obsidian setzt also deutlich tiefer an als WebGL 2.0, das OpenGL ES (Embedded Systems) als Abstraktionsschicht verwendet. Die Grundlage bildet Vulkan, da die API die "leistungsfähigste, portabelste und offenste" der Next-Gen-Desktop-APIs sei, so die Verfasser des Beitrags. Unabhängig davon soll Obsidian zusätzlich auf Metal und Direct3D 12 implementiert werden. Außerdem soll das Zusammenspiel mit WebAssembly gesichert sein. Der Ansatz zur effizienten clientseitigen Browserprogrammierung mit einem Binärformat hatte vor Kurzem die Preview-Phase abgeschlossen.

Zu den Konzepten der Obsidian API gehören vier Grundkomponenten. Zum einen ist das der "Command Buffer", der die Hardwarebefehle verwaltet und sowohl Multithreading als auch das Parallelisieren für CPU und GPU berücksichtigt. Das sogenannte "Pipeline State Object" soll Shader-Programme kapseln. Ein "Descriptor Set" gruppiert Ressourcen für die effiziente Nutzung. Vulkan und Direct3D 12 bieten das Vorgehen nativ an, während es für Metal in mehrere Befehle wie setVertexBuffers zum Binden von Ressourcen übersetzt wird. Der "Render Pass" definiert schließlich, wie der Rendervorgang abläuft, und ermöglicht wie Vulkan das Anlegen von untergeordneten Subpasses.

Als Shader-Sprache schlägt Mozilla die ebenfalls von der Khronos Group stammende SPIR-V (Standard Portable Intermediate Representation) vor, da sie ein offener Standard sei und bereits im Zusammenspiel mit Vulkan und OpenCL zum Einsatz kommt. Die Definition der Obsidian API soll in der Web IDL (Interface Description Langage) erfolgen. Mozilla hat auf GitHub ein entsprechendes Gerüst der Schnittstelle hinterlegt. Der Vorschlag enthält zudem Beispielcode.

Khronos' Aufruf und Mozillas Vorschlag stehen im Wettbewerb mit der Anfang Februar von Apples WebKit-Team gestarteten Initiative zur Gründung einer Community Group beim W3C, die sich ebenfalls um Standards für den Einsatz von 3D-Grafik mit hardwarenahen Funktionen kümmern soll und von den Initiatoren als "GPU für das Web" bezeichnet wird. Auch dabei soll die Lösung plattformübergreifend arbeiten und die jeweiligen APIs Vulkan, Direct 3D und Metal nutzen. Den Machern geht es dabei auch um die Nutzung der GPU jenseits der Grafik beispielsweise im Bereich Parallel Computing. (rme)