Die Anzahl der WebGPU-Funktionen mag dieses Mal etwas gering erscheinen, aber große Fortschritte stehen vor der Tür. Die nächsten Versionen enthalten Funktionen wie DP4a, schreibgeschützte und Lese-/Schreib-Speichertexturen, separate Steuerung von Schablonen- und Tiefenaspekten, Rendering auf 3D-Texturslices und Verbesserungen bei der Shader-Kompilierung.
In der Zwischenzeit erfahren Sie, wie Sie das Testen von Web-KI-Modellen mit WebGPU- und WebGL-Unterstützung in der monitorlosen Chrome-Version optimieren können und warum WebGPU in Chrome möglicherweise deaktiviert ist oder nicht funktioniert.
Mit dem Kompatibilitätsmodus die Reichweite erhöhen (Funktion in der Entwicklung)
WebGPU ist gut auf moderne Grafik-APIs (Vulkan, Metal und D3D12) abgestimmt, aber einige Geräte unterstützen diese nicht. Dadurch wird die Zugänglichkeit von WebGPU eingeschränkt, insbesondere auf Plattformen wie Windows (31% der Chrome-Nutzer haben kein D3D11.1+), Android (23% haben kein Vulkan 1.1+) und ChromeOS (Vulkan-Nutzung nimmt zu).
Das Chrome-Team arbeitet an einem Kompatibilitätsmodus in WebGPU, um dieses Problem zu beheben. Dabei wird eine leicht eingeschränkte Version von WebGPU angeboten, die auf älteren APIs wie D3D11 und OpenGL ES funktioniert. Dadurch wird die potenzielle Nutzerbasis von WebGPU erweitert.
Wichtig: Anwendungen, die den Kompatibilitätsmodus verwenden, bleiben vollständig gültige WebGPU-Anwendungen. Bei Geräten ohne Unterstützung für den Kompatibilitätsmodus wird nahtlos auf den WebGPU-Kernadapter umgestellt, wodurch eine breite Nutzbarkeit gewährleistet wird.
Sehen Sie sich den Vorschlag an und kommentieren Sie ihn, wenn Sie Fragen haben.
Limit für maxVertexAttributes erhöhen
Die maximale Anzahl von Attributen in allen Puffern beim Erstellen einer GPURenderPipeline beträgt standardmäßig 16. Wenn unterstützt, können jetzt bis zu 30 angefordert werden, indem das Limit für maxVertexAttributes verwendet wird. Siehe das folgende Beispiel und das Problem dawn:2223.
const adapter = await navigator.gpu.requestAdapter();
if (adapter.limits.maxVertexAttributes < 30) {
// When the desired limit isn't supported, take action to either fall back to
// a code path that does not require the higher limit or notify the user that
// their device does not meet minimum requirements.
}
// Request highest limit of max vertex attributes.
const device = await adapter.requestDevice({
requiredLimits: { maxVertexAttributes: 30 },
});
Dawn-Updates
Ein neuer Instanz-Toggle mit dem Namen „expose_wgsl_experimental_features“ wurde hinzugefügt, damit die Instanz nur die experimentellen WGSL-Funktionen und nicht die unsicheren Funktionen verfügbar macht. So können sichere experimentelle WGSL-Funktionen verwendet werden, ohne den Toggle „allow_unsafe_apis“ aktivieren zu müssen. Siehe Problem dawn:2260.
Zu den letzten Verbesserungen an den Dawn-Bindungen für Node.js gehören:
GPUSupportedFeatures::getSize()wurde hinzugefügt.- Die Veraltung von
GPUAdapterwurde implementiert. GPUInternalErrorwird jetzt ordnungsgemäß für Geräte gemeldet.- Attribute können jetzt aufgezählt werden.
Dies sind nur einige der wichtigsten Highlights. Eine vollständige Liste der Commits finden Sie hier.
Neues in WebGPU
Eine Liste aller Themen, die in der Reihe „Neues in WebGPU“ behandelt wurden.
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
- Schnelleres writeBuffer und writeTexture
- Dawn-Updates
Chrome 143
- Texturkomponenten-Swizzle
- Verwendung von schreibgeschützten bgra8unorm-Speichertexturen entfernen
- Dawn-Updates
Chrome 142
Chrome 141
- Tint IR abgeschlossen
- Analyse des Ganzzahlbereichs im WGSL-Compiler
- SPIR-V 1.4-Update für Vulkan-Backend
- Dawn-Updates
Chrome 140
- Geräteanfragen verbrauchen Adapter
- Kurzform für die Verwendung von Texturen, wenn Texturansichten verwendet werden
- WGSL textureSampleLevel unterstützt 1D-Texturen
- Verwendung von schreibgeschützten bgra8unorm-Speichertexturen eingestellt
- GPUAdapter-Attribut „isFallbackAdapter“ entfernt
- Dawn-Updates
Chrome 139
- Unterstützung für 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 an den Größenanforderungen für Puffer, die bei der Erstellung zugeordnet werden
- Architekturbericht für aktuelle GPUs
- GPUAdapter-Attribut „isFallbackAdapter“ eingestellt
- Dawn-Updates
Chrome 137
- Texturansicht für die externeTextur-Bindung verwenden
- Puffer ohne Angabe von Offsets und Größe kopieren
- WGSL workgroupUniformLoad mit Zeiger auf atomar
- GPUAdapterInfo-Attribut „powerPreference“
- GPURequestAdapterOptions-Attribut „compatibilityMode“ entfernt
- Dawn-Updates
Chrome 136
- GPUAdapterInfo-Attribut „isFallbackAdapter“
- Verbesserungen bei der Shader-Kompilierungszeit unter D3D12
- Canvas-Bilder speichern und kopieren
- Einschränkungen des Kompatibilitätsmodus aufheben
- Dawn-Updates
Chrome 135
- Erstellen von Pipeline-Layouts mit Null-Bindungsgruppen-Layout zulassen
- Zulassen, dass Viewports über die Grenzen der Renderziele hinausgehen
- Einfacherer Zugriff auf den experimentellen Kompatibilitätsmodus unter Android
- Limit für maxInterStageShaderComponents entfernen
- Dawn-Updates
Chrome 134
- Arbeitslasten für maschinelles Lernen mit Untergruppen verbessern
- Unterstützung für filterbare Texturtypen vom Typ „float“ als mischbar entfernen
- Dawn-Updates
Chrome 133
- Zusätzliche unorm8x4-bgra- und 1-Komponenten-Vertex-Formate
- Anfordern unbekannter Limits mit undefiniertem Wert zulassen
- Änderungen an den WGSL-Ausrichtungsregeln
- WGSL-Leistungssteigerungen mit „discard“
- VideoFrame displaySize für externe Texturen verwenden
- Bilder mit nicht standardmäßigen Ausrichtungen mit copyExternalImageToTexture verarbeiten
- Verbesserung der Entwicklererfahrung
- Kompatibilitätsmodus mit featureLevel aktivieren
- Bereinigung experimenteller Untergruppenfunktionen
- Limit für maxInterStageShaderComponents eingestellt
- Dawn-Updates
Chrome 132
- Verwendung von Texturansichten
- Mischen von 32-Bit-Gleitkomma-Texturen
- GPUDevice-Attribut „adapterInfo“
- Konfigurieren des Canvas-Kontexts mit ungültigem Format löst JavaScript-Fehler aus
- Einschränkungen für Sampler auf Texturen filtern
- Erweiterte Untergruppentests
- Verbesserung der Entwicklererfahrung
- 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 für die Shader-Modul-Kompilierung „strict math“
- GPUAdapter requestAdapterInfo() entfernen
- Dawn-Updates
Chrome 130
- Mischen mit zwei Quellen
- Verbesserungen bei 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
- Nicht erfasste Fehler-Entwicklertools-Warnung ausblenden, wenn preventDefault
- WGSL-Interpolation zuerst und entweder
- Dawn-Updates
Chrome 127
- Experimentelle Unterstützung für OpenGL ES unter Android
- GPUAdapter-Attribut „info“
- Verbesserungen bei der WebAssembly-Interoperabilität
- Verbesserte Fehler bei der Befehlscodierung
- Dawn-Updates
Chrome 126
- Limit für maxTextureArrayLayers erhöhen
- Optimierung des Pufferuploads für das Vulkan-Backend
- Verbesserungen bei 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
- Mit dem Kompatibilitätsmodus die Reichweite erhöhen (Funktion in der Entwicklung)
- Limit für maxVertexAttributes erhöhen
- Dawn-Updates
Chrome 121
- WebGPU unter Android unterstützen
- DXC anstelle von FXC für die Shader-Kompilierung unter Windows verwenden
- Zeitstempelabfragen in Compute- und Render-Passes
- Standardmäßige Einstiegspunkte für Shader-Module
- Unterstützung von display-p3 als GPUExternalTexture-Farbraum
- Informationen zu Arbeitsspeicher-Heaps
- Dawn-Updates
Chrome 120
- Unterstützung für 16-Bit-Gleitkommawerte in WGSL
- Limits überschreiten
- Änderungen am Tiefen- und Schablonenstatus
- Updates zu 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 Entwicklererfahrung
- Pipelines mit automatisch generiertem Layout im Cache speichern
- Dawn-Updates
Chrome 116
- WebCodecs-Integration
- Verlorenes Gerät, das von GPUAdapter
requestDevice()zurückgegeben wird - Reibungslose Videowiedergabe, wenn
importExternalTexture()aufgerufen wird - Spezifikationskonformität
- Verbesserung der Entwicklererfahrung
- Dawn-Updates
Chrome 115
- Unterstützte WGSL-Spracherweiterungen
- Experimentelle Unterstützung für Direct3D 11
- Standardmäßig diskrete GPU bei Netzstrom
- Verbesserung der Entwicklererfahrung
- Dawn-Updates
Chrome 114
- JavaScript optimieren
- getCurrentTexture() auf nicht konfiguriertem Canvas löst InvalidStateError aus
- WGSL-Updates
- Dawn-Updates