Nach jahrelanger Entwicklung hat das Chrome-Team bekannt gegeben, dass die erste Version von WebGPU jetzt standardmäßig in Chrome unter ChromeOS, macOS und Windows verfügbar ist. Weitere Informationen finden Sie unter Chrome ships WebGPU.
Außerdem haben wir begonnen, umfassende Dokumentation für WebGPU auf MDN hinzuzufügen.
Und es gibt noch mehr.
WebCodecs-VideoFrame-Quelle in importExternalTexture() verwenden
WebGPU stellt eine API zur Verfügung, mit der undurchsichtige "externe Textur"-Objekte aus HTMLVideoElement über importExternalTexture() erstellt werden können. Mit diesen Objekten können Sie die Videoframes effizient abtasten, möglicherweise ohne Kopieren direkt aus den YUV-Quelldaten.
Die ursprüngliche WebGPU-Spezifikation erlaubt jedoch nicht das Erstellen von GPUExternalTexture-Objekten aus WebCodecs-VideoFrame-Objekten. Diese Funktion ist wichtig für erweiterte Videoverarbeitungs-Apps, die bereits WebCodecs verwenden und WebGPU in die Videoverarbeitungspipeline einbinden möchten. Die Diskussion dazu findet derzeit im Issue gpuweb/gpuweb#1380 statt.
Feature aktivieren
Standardmäßig ist diese Funktion in Chrome nicht aktiviert. Sie kann jedoch in Chrome 113 getestet werden, indem die Funktion explizit aktiviert wird. Sie können sie lokal aktivieren, indem Sie das "WebGPU Developer Features" Flag unter chrome://flags/#enable-webgpu-developer-features aktivieren.
Um die Funktion für alle Besucher Ihrer App zu aktivieren, wird derzeit ein Ursprungstest durchgeführt, der in Chrome 118 (8. Dezember 2023) endet. Wenn Sie am Test teilnehmen möchten, registrieren Sie sich und fügen Sie entweder im HTML- oder HTTP-Header ein Meta-Element mit dem Ursprungstest-Token ein. Weitere Informationen finden Sie im Beitrag Erste Schritte mit Ursprungstests.
Beispielcode
// Access the GPU device.
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();
// Create VideoFrame from HTMLVideoElement.
const video = document.querySelector("video");
const videoFrame = new VideoFrame(video);
const texture = device.importExternalTexture({ source: videoFrame });
// TODO: Use texture in bind group creation.
Im experimentellen Beispiel für Video-Uploads mit WebCodecs können Sie die Funktion ausprobieren.
Neues in WebGPU
Eine Liste aller Themen, die in der Reihe „Neues in WebGPU“ behandelt wurden.
Chrome 149–150
Chrome 147–148
Chrome 146
- Unterstützung des WebGPU-Kompatibilitätsmodus unter OpenGL ES 3.1
- Temporäre Anhänge
- WGSL-Erweiterung texture_and_sampler_let
- Dawn-Updates
Chrome 145
- WGSL-Erweiterung subgroup_uniformity
- Experimentelle synchrone Pufferzuordnung in Workern
- Dawn-Updates
Chrome 144
- WGSL-Erweiterung subgroup_id
- WGSL-Erweiterung uniform_buffer_standard_layout
- WebGPU unter Linux
- Schnellere writeBuffer- und writeTexture-Funktionen
- Dawn-Updates
Chrome 143
- Swizzle für Texturkomponenten
- Entfernung der schreibgeschützten Nutzung von bgra8unorm-Speichertexturen
- Dawn-Updates
Chrome 142
Chrome 141
- Tint IR abgeschlossen
- Analyse des Ganzzahlbereichs im WGSL-Compiler
- SPIR-V 1.4-Update für das Vulkan-Backend
- Dawn-Updates
Chrome 140
- Geräteanfragen belegen Adapter
- Kurzform für die Verwendung von Texturen, wenn Texturansichten verwendet werden
- WGSL-Funktion textureSampleLevel unterstützt 1D-Texturen
- Einstellung der schreibgeschützten Nutzung von bgra8unorm-Speichertexturen
- Entfernung des GPUAdapter-Attributs „isFallbackAdapter“
- Dawn-Updates
Chrome 139
- Unterstützung von 3D-Texturen für komprimierte BC- und ASTC-Formate
- Neue Funktion „core-features-and-limits“
- Ursprungstest für den WebGPU-Kompatibilitätsmodus
- Dawn-Updates
Chrome 138
- Kurzform für die Verwendung von Puffern als Bindungsressource
- Änderungen der Größenanforderungen für Puffer, die bei der Erstellung zugeordnet werden
- Architekturbericht für aktuelle GPUs
- Einstellung des GPUAdapter-Attributs „isFallbackAdapter“
- Dawn-Updates
Chrome 137
- Texturansicht für die Bindung von externen Texturen verwenden
- Puffer ohne Angabe von Offsets und Größe kopieren
- WGSL-Funktion workgroupUniformLoad mit Zeiger auf Atom
- GPUAdapterInfo-Attribut „powerPreference“
- Entfernung des GPURequestAdapterOptions-Attributs „compatibilityMode“
- Dawn-Updates
Chrome 136
- GPUAdapterInfo-Attribut „isFallbackAdapter“
- Verbesserungen der Shader-Kompilierungszeit unter D3D12
- Canvas-Bilder speichern und kopieren
- Aufhebung der Einschränkungen des Kompatibilitätsmodus
- Dawn-Updates
Chrome 135
- Erstellung von Pipeline-Layouts mit Null-Bindungsgruppen-Layout zulassen
- Ansichtsfenster dürfen über die Grenzen der Renderziele hinausgehen
- Einfacherer Zugriff auf den experimentellen Kompatibilitätsmodus unter Android
- Entfernung des Limits für „maxInterStageShaderComponents“
- Dawn-Updates
Chrome 134
- Verbesserung von Arbeitslasten für maschinelles Lernen mit Untergruppen
- Entfernung der Unterstützung für filterbare Texturtypen mit Gleitkommazahlen als mischbar
- Dawn-Updates
Chrome 133
- Zusätzliche unorm8x4-bgra- und Vertex-Formate mit einer Komponente
- Anfrage unbekannter Limits mit undefiniertem Wert zulassen
- Änderungen der WGSL-Ausrichtungsregeln
- WGSL-Leistungssteigerungen mit „discard“
- VideoFrame-Attribut „displaySize“ für externe Texturen verwenden
- Bilder mit nicht standardmäßigen Ausrichtungen mit „copyExternalImageToTexture“ verarbeiten
- Verbesserung der Entwicklerfreundlichkeit
- Kompatibilitätsmodus mit „featureLevel“ aktivieren
- Bereinigung experimenteller Untergruppenfunktionen
- Einstellung des Limits für „maxInterStageShaderComponents“
- Dawn-Updates
Chrome 132
- Nutzung von Texturansichten
- Mischen von 32-Bit-Gleitkomma-Texturen
- GPUDevice-Attribut „adapterInfo“
- Konfiguration des Canvas-Kontexts mit ungültigem Format löst JavaScript-Fehler aus
- Einschränkungen für Sampler auf Texturen filtern
- Erweiterte Tests mit Untergruppen
- Verbesserung der Entwicklerfreundlichkeit
- Experimentelle Unterstützung für normalisierte 16-Bit-Texturformate
- Dawn-Updates
Chrome 131
- Clip-Entfernungen in WGSL
- GPUCanvasContext.getConfiguration()
- Punkt- und Linienprimitive dürfen keine Tiefenverzerrung haben
- Inklusive Scan-Funktionen für Untergruppen
- Experimentelle Unterstützung für Multi-Draw Indirect
- Option „strict math“ für die Kompilierung von Shader-Modulen
- Entfernung von GPUAdapter.requestAdapterInfo()
- Dawn-Updates
Chrome 130
- Mischen mit zwei Quellen
- Verbesserungen der Shader-Kompilierungszeit unter Metal
- Einstellung von GPUAdapter.requestAdapterInfo()
- Dawn-Updates
Chrome 129
- HDR-Unterstützung mit Canvas-Tone Mapping-Modus
- Erweiterte Unterstützung für Untergruppen
- Dawn-Updates
Chrome 128
- Tests mit Untergruppen
- Einstellung der Tiefenverzerrung für Linien und Punkte
- Ausblenden der Entwicklertools-Warnung für nicht erfasste Fehler bei „preventDefault“
- WGSL-Funktion „interpolate“ für Sampling zuerst und entweder
- Dawn-Updates
Chrome 127
- Experimentelle Unterstützung für OpenGL ES unter Android
- GPUAdapter-Attribut „info“
- Verbesserungen der WebAssembly-Interoperabilität
- Verbesserte Fehler für Befehlscodierer
- Dawn-Updates
Chrome 126
- Erhöhung des Limits für „maxTextureArrayLayers“
- Optimierung des Puffer-Uploads für das Vulkan-Backend
- Verbesserungen der Shader-Kompilierungszeit
- Übermittelte Befehlspuffer müssen eindeutig sein
- Dawn-Updates
Chrome 125
Chrome 124
- Schreibgeschützte und Lese-/Schreib-Speichertexturen
- Unterstützung für Service Worker und Shared Worker
- Neue Attribute für Adapterinformationen
- Diverse Fehlerkorrekturen
- Dawn-Updates
Chrome 123
- Unterstützung für integrierte DP4a-Funktionen in WGSL
- Uneingeschränkte Zeigerparameter in WGSL
- Syntaxzucker für die Dereferenzierung von Composites in WGSL
- Separater schreibgeschützter Status für Schablonen- und Tiefenaspekte
- Dawn-Updates
Chrome 122
- Erweiterung der Reichweite mit dem Kompatibilitätsmodus (Funktion in Entwicklung)
- Erhöhung des Limits für „maxVertexAttributes“
- Dawn-Updates
Chrome 121
- Unterstützung für WebGPU unter Android
- Verwendung von DXC anstelle von FXC für die Shader-Kompilierung unter Windows
- Zeitstempelabfragen in Compute- und Render-Passes
- Standardmäßige Einstiegspunkte für Shader-Module
- Unterstützung von „display-p3“ als GPUExternalTexture-Farbraum
- Informationen zu Speicher-Heaps
- Dawn-Updates
Chrome 120
- Unterstützung für 16-Bit-Gleitkommawerte in WGSL
- Limits erweitern
- Änderungen am Tiefen- und Schablonenzustand
- Updates für Adapterinformationen
- Quantisierung von Zeitstempelabfragen
- Bereinigung von Funktionen
Chrome 119
- Filterbare 32-Bit-Gleitkomma-Texturen
- Vertex-Format „unorm10-10-10-2“
- Texturformat „rgb10a2uint“
- Dawn-Updates
Chrome 118
- Unterstützung für HTMLImageElement und ImageData in
copyExternalImageToTexture() - Experimentelle Unterstützung für Lese-/Schreib- und schreibgeschützte Speichertexturen
- Dawn-Updates
Chrome 117
- Vertex-Puffer aufheben
- Bindungsgruppe aufheben
- Fehler bei der asynchronen Pipeline-Erstellung unterdrücken, wenn das Gerät verloren geht
- Updates für die Erstellung von SPIR-V-Shader-Modulen
- Verbesserung der Entwicklerfreundlichkeit
- Pipelines mit automatisch generiertem Layout im Cache speichern
- Dawn-Updates
Chrome 116
- WebCodecs-Integration
- Verlorenes Gerät, das von GPUAdapter zurückgegeben wird
requestDevice() - Reibungslose Videowiedergabe bei Aufruf von
importExternalTexture() - Spezifikationskonformität
- Verbesserung der Entwicklerfreundlichkeit
- Dawn-Updates
Chrome 115
- Unterstützte WGSL-Spracherweiterungen
- Experimentelle Unterstützung für Direct3D 11
- Standardmäßig diskrete GPU bei Netzstrom
- Verbesserung der Entwicklerfreundlichkeit
- Dawn-Updates
Chrome 114
- JavaScript optimieren
- getCurrentTexture() für nicht konfigurierte Canvas-Elemente löst InvalidStateError aus
- WGSL-Updates
- Dawn-Updates