Die Anzahl der WebGPU-Funktionen mag dieses Mal etwas gering erscheinen, aber große Fortschritte stehen vor der Tür. Die nächsten Releases enthalten Funktionen wie DP4a, schreibgeschützte und beschreibbare 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 Ihres Web-KI-Modells 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. Auf 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 hinterlassen Sie einen Kommentar, wenn Sie Fragen haben.
Limit für maxVertexAttributes erhöhen
Die maximale Anzahl von Attributen in allen Puffern beim Erstellen einer GPURenderPipeline ist standardmäßig 16. Jetzt können Sie bei Unterstützung bis zu 30 anfordern, indem Sie das Limit für maxVertexAttributes verwenden. Weitere Informationen finden Sie im folgenden Beispiel und im 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
Es wurde ein neuer Instanz-Toggle namens „expose_wgsl_experimental_features“ hinzugefügt, mit dem die Instanz nur die experimentellen WGSL-Funktionen, aber 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. Weitere Informationen finden Sie im 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 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
- Texturkomponentenswizzle
- Entfernung der Verwendung von schreibgeschützten bgra8unorm-Speichertexturen
- Dawn-Updates
Chrome 142
Chrome 141
- Tint IR abgeschlossen
- Analyse von Ganzzahlbereichen 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 textureSampleLevel unterstützt 1D-Texturen
- Einstellung der Verwendung von schreibgeschützten 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 an den 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
- Verwendung von Texturansichten für die externeTextur-Bindung
- Kopieren von Puffern ohne Angabe von Offsets und Größe
- WGSL workgroupUniformLoad mit Zeiger auf Atomic
- GPUAdapterInfo-Attribut „powerPreference“
- Entfernung des GPURequestAdapterOptions-Attributs „compatibilityMode“
- 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
- Erstellung 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
- 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 1-Komponenten-Vertex-Formate
- Anforderung unbekannter Limits mit undefiniertem Wert zulassen
- Änderungen an den WGSL-Ausrichtungsregeln
- WGSL-Leistungssteigerungen mit „discard“
- Verwendung von VideoFrame displaySize für externe Texturen
- Verarbeitung von Bildern mit nicht standardmäßigen Ausrichtungen mit „copyExternalImageToTexture“
- Verbesserung der Entwicklererfahrung
- Aktivierung des Kompatibilitätsmodus mit „featureLevel“
- Bereinigung experimenteller Untergruppenfunktionen
- Einstellung des Limits für maxInterStageShaderComponents
- Dawn-Updates
Chrome 132
- Verwendung von Texturansichten
- Mischen von 32-Bit-Gleitkomma-Texturen
- GPUDevice-Attribut „adapterInfo“
- Konfiguration des Canvas-Kontexts mit ungültigem Format führt zu JavaScript-Fehler
- Einschränkungen für Sampler-Filterung auf Texturen
- Erweiterte Experimente mit Untergruppen
- 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 „strict math“ für die Kompilierung von Shader-Modulen
- Entfernung von GPUAdapter requestAdapterInfo()
- Dawn-Updates
Chrome 130
- Dual-Source-Blending
- 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
- Experimente mit Untergruppen
- Einstellung der Festlegung von Tiefenverzerrungen für Linien und Punkte
- Ausblenden der Entwicklertools-Warnung für nicht erfasste Fehler bei „preventDefault“
- WGSL-Interpolation zuerst und entweder Sampling
- 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
- Erhöhung des Limits für maxTextureArrayLayers
- 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 beschreibbare 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
- Syntax-Zucker 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
- Unterstützung von 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 Arbeitsspeicher-Heaps
- Dawn-Updates
Chrome 120
- Unterstützung für 16-Bit-Gleitkommawerte in WGSL
- Limits erhöhen
- Änderungen am Tiefen- und Schablonenstatus
- 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 von HTMLImageElement und ImageData in
copyExternalImageToTexture() - Experimentelle Unterstützung für beschreibbare 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()“ für nicht konfigurierte Canvas-Elemente löst „InvalidStateError“ aus
- WGSL-Updates
- Dawn-Updates