Veröffentlicht: 23. April 2025
GPUAdapterInfo-Attribut „isFallbackAdapter“
Das boole Attribut „GPUAdapterInfo“ isFallbackAdapter
gibt an, ob ein GPUAdapter erhebliche Leistungseinschränkungen hat, die im Austausch für eine größere Kompatibilität, ein vorhersehbareres Verhalten oder eine verbesserte Datensicherheit erzielt werden. Diese Ergänzung war erforderlich, da Bibliotheken, die von Nutzern bereitgestellte GPUDevice-Objekte verwenden, nicht über das adapterInfo
-Attribut auf GPUDevice auf diese Informationen zugreifen konnten. Weitere Informationen finden Sie im folgenden Beispiel und in Issue 403172841.
const adapter = await navigator.gpu.requestAdapter();
if (adapter?.info.isFallbackAdapter) {
// The returned adapter is a software-backed fallback adapter, which
// may have significantly lower performance and fewer features.
}
Da Chrome noch keine Unterstützung für Fallback-Adapter bietet, ist isFallbackAdapter
auf den Geräten der Nutzer derzeit immer falsch. Wir prüfen derzeit, ob das Attribut „GPUAdapter isFallbackAdapter
“ eingestellt und entfernt werden kann. Weitere Informationen finden Sie unter Versandabsicht.
Verbesserte Shader-Kompilierungszeiten unter D3D12
Das Chrome-Team verbessert Tint, den WebGPU-Shadersprachen-Compiler, kontinuierlich durch die Hinzufügung einer Zwischendarstellung (IR) für Geräte, die WebGPU mit dem D3D12-Backend unterstützen. Diese Zwischensprache, die zwischen dem abstrakten Syntaxbaum (AST) von Tint und dem HLSL-Backend-Writer positioniert ist, macht den Compiler effizienter und wartbarer. Dies kommt letztendlich sowohl Entwicklern als auch Nutzern zugute. Erste Tests zeigen, dass die neue Version von Tint bis zu zehnmal schneller ist, wenn die WGSL-Shader von Unity in HLSL übersetzt werden.

Diese Verbesserungen, die bereits auf Android-, ChromeOS- und macOS-Geräten verfügbar sind, werden nach und nach auf Windows-Geräte ausgeweitet, die WebGPU mit dem D3D12-Backend unterstützen. Siehe Problem 42251045.
Leinwandbilder speichern und kopieren
Chrome-Nutzer können jetzt mit der rechten Maustaste auf einen WebGPU-Canvas klicken und auf die Optionen Bild speichern als… oder Bild kopieren im Kontextmenü zugreifen. Siehe Problem 40902474.

Einschränkungen im Modus für die Anzeigenwirkung
Wenn die experimentelle Funktion "core-features-and-limits"
auf einem GPUDevice verfügbar ist, werden alle Einschränkungen des Kompatibilitätsmodus (Funktionen und Limits) aufgehoben, wenn das Flag chrome://flags/#enable-unsafe-webgpu
aktiviert ist. Siehe Problem 395855517.
Wenn du einen GPUAdapter mit der Option featureLevel: "compatibility"
anforderst, wird der Browser aufgefordert, den experimentellen WebGPU-Kompatibilitätsmodus auszuwählen. Bei Erfolg wird der resultierende Adapter auf „Kompatibilitätsstandard“ gesetzt. Andernfalls wird die Standardeinstellung des Kerns verwendet, was der Verwendung der Option featureLevel: "core"
entspricht. Wenn du requestDevice()
ohne requiredFeatures
und requiredLimits
aufrufst, wird ein GPUDevice mit den Standardfunktionen des GPUAdapters angefordert.
Adapter mit Kernstandard unterstützen immer die "core-features-and-limits"
-Funktion und sie wird automatisch auf GPU-Geräten aktiviert, die daraus erstellt wurden. Bei Adaptern mit Kompatibilitätsstandard wird die "core-features-and-limits"
-Funktion möglicherweise unterstützt und kann auf GPUDevices angefordert werden, die daraus erstellt wurden. Beide Adaptertypen unterstützen möglicherweise auch Funktionen wie "float32-blendable"
, die sowohl im Kern- als auch im Kompatibilitätsmodus optional ist.
Das folgende Beispiel bezieht sich auf eine Anwendung, für die "float32-blendable"
erforderlich ist und die die Verwendung der Hauptfunktionen unterstützt, sofern verfügbar. Wenn die Hauptfunktionen nicht verfügbar sind, werden nur die Kompatibilitätsfunktionen verwendet.
const adapter = await navigator.gpu.requestAdapter({ featureLevel: "compatibility" });
if (!adapter || !adapter.features.has("float32-blendable")) {
throw new Error("32-bit float textures blending support is not available");
}
const requiredFeatures = [];
if (adapter.features.has("core-features-and-limits")) {
requiredFeatures.push("core-features-and-limits");
}
const device = await adapter.requestDevice({ requiredFeatures });
if (!device.features.has("core-features-and-limits")) {
// Compatibility mode restrictions validation rules will apply.
}
Die experimentellen GPUAdapter-Attribute featureLevel
und isCompatibilityMode
wurden zugunsten der Funktion "core-features-and-limits"
entfernt. Siehe Problem 395855516.
Dawn-Updates
Das InstanceDropped
-Enum für den Status des Rückrufs wurde in CallbackCancelled
umbenannt, um zu verdeutlichen, dass der Rückruf abgebrochen wurde, die mit dem Ereignis verbundene Hintergrundverarbeitung wie die Pipelinekompilierung aber möglicherweise noch läuft. Der neue Name ist allgemeiner anwendbar, falls später ein weiterer Kündigungsmechanismus hinzugefügt wird. Siehe Problem 520.
Das wgpu::PopErrorScopeStatus::EmptyStack
-Enum, das angibt, dass der Fehlerbereichsstapel nicht entfernt werden konnte, wurde in wgpu::PopErrorScopeStatus::Error
umbenannt, was auch allgemeiner anwendbar ist. Der Callback enthält jetzt auch eine entsprechende Fehlererläuterung, die bei der Fehlerbehebung hilft. Siehe Problem 369.
Dies sind nur einige der wichtigsten Highlights. Eine vollständige Liste der Commits finden Sie hier.
Das ist neu bei WebGPU
Eine Liste aller Themen, die in der Reihe Was ist neu in WebGPU behandelt wurden.
Chrome 136
- Attribut „isFallbackAdapter“ von „GPUAdapterInfo“
- Verbesserungen bei der Shader-Kompilierungszeit unter D3D12
- Leinwandbilder speichern und kopieren
- Einschränkungen im Kompatibilitätsmodus für die Analyse der Anzeigenwirkung
- Dawn-Updates
Chrome 135
- Erstellen eines Pipeline-Layouts mit Null-Bindegruppenlayout zulassen
- Viewports dürfen über die Grenzen der Rendering-Ziele hinausragen
- Einfacherer Zugriff auf den experimentellen Kompatibilitätsmodus unter Android
- Das Limit „maxInterStageShaderComponents“ wurde entfernt
- Dawn-Updates
Chrome 134
- Arbeitslasten für maschinelles Lernen mit Untergruppen verbessern
- Unterstützung für mit dem „Flüssigfilter“ filterbare Texturtypen als mischbar entfernen
- Dawn-Updates
Chrome 133
- Zusätzliche Vertexformate vom Typ unorm8x4-bgra und 1-Komponente
- Unbekannte Limits mit einem nicht definierten Wert anfordern
- Änderungen an den Regeln für die Ausrichtung von WGSL
- Leistungssteigerungen bei WGSL mit Discard
- VideoFrame-Anzeigegröße für externe Texturen verwenden
- Mit copyExternalImageToTexture Bilder mit nicht standardmäßigen Ausrichtungen verarbeiten
- Entwicklerfreundlichkeit verbessern
- Kompatibilitätsmodus mit „featureLevel“ aktivieren
- Bereinigung experimenteller Funktionen für Untergruppen
- Das Limit „maxInterStageShaderComponents“ wird eingestellt
- Dawn-Updates
Chrome 132
- Nutzung der Texturansicht
- 32-Bit-Gleitkommatextur-Mischverfahren
- Attribut „adapterInfo“ von „GPUDevice“
- Bei der Konfiguration des Canvas-Kontexts mit einem ungültigen Format wird ein JavaScript-Fehler geworfen
- Einschränkungen für Filter-Sampler bei Texturen
- Erweiterte Tests mit Untergruppen
- Entwicklerfreundlichkeit verbessern
- Experimentelle Unterstützung für 16-Bit-normalisierte Texturformate
- Dawn-Updates
Chrome 131
- Entfernungen in WGSL zuschneiden
- GPUCanvasContext getConfiguration()
- Punkt- und Linienprimitive dürfen keine Tiefenverzerrung haben.
- Integrierte Funktionen für inklusiven Scan für Untergruppen
- Experimentelle Unterstützung für indirekte Multi-Draw-Anweisungen
- Shader-Modul-Kompilierungsoption „strict math“
- GPUAdapter-Methode „requestAdapterInfo()“ entfernen
- Dawn-Updates
Chrome 130
- Zusammenführen von zwei Quellen
- Verbesserungen bei der Shader-Kompilierungszeit unter Metal
- Einstellung der GPUAdapter-Methode „requestAdapterInfo()“
- Dawn-Updates
Chrome 129
Chrome 128
- Mit Untergruppen experimentieren
- Einstellung der Tiefenverzerrung für Linien und Punkte wird eingestellt
- Nicht erfasste Fehlerwarnung in den Entwicklertools bei preventDefault ausblenden
- WGSL interpoliert zuerst die Stichprobe und
- Dawn-Updates
Chrome 127
- Experimenteller Support für OpenGL ES auf Android-Geräten
- Attribut „info“ von „GPUAdapter“
- Verbesserungen bei der WebAssembly-Interoperabilität
- Verbesserte Fehlermeldungen beim Befehls-Encoder
- Dawn-Updates
Chrome 126
- Limit für „maxTextureArrayLayers“ erhöht
- Optimierung des Pufferuploads für das Vulkan-Backend
- Verbesserte Shader-Kompilierungszeiten
- Eingereichte Befehlspuffere müssen eindeutig sein.
- Dawn-Updates
Chrome 125
Chrome 124
- Lese- und Lese-/Schreibspeichertextur
- Unterstützung für Dienst- und freigegebene 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-Optimierung für die Dereferenzierung von Kompositen in WGSL
- Separater schreibgeschützter Status für Stencil- und Tiefenansichten
- Dawn-Updates
Chrome 122
- Reichweite mit Kompatibilitätsmodus erhöhen (Funktion in Entwicklung)
- Limit für maxVertexAttributes erhöhen
- Dawn-Updates
Chrome 121
- Unterstützung von WebGPU auf Android
- DXC anstelle von FXC für die Shaderkompilierung unter Windows verwenden
- Zeitstempelabfragen in Compute- und Rendering-Passes
- Standardeinstiegspunkte in Shadermodule
- Unterstützung von display-p3 als GPUExternalTexture-Farbraum
- Informationen zu Speicherheaps
- Dawn-Updates
Chrome 120
- Unterstützung von 16‑Bit-Gleitkommawerten in WGSL
- Grenzen überschreiten
- Änderungen am Tiefen-/Schatten-Status
- Aktualisierte Informationen zu Adaptern
- Quantisierung von Zeitstempelabfragen
- Funktionen für den Frühjahrsputz
Chrome 119
- Filterbare 32-Bit-Gleitkommatextur
- unorm10-10-10-2-Vertex-Format
- rgb10a2uint-Texturformat
- Dawn-Updates
Chrome 118
- Unterstützung von HTMLImageElement und ImageData in
copyExternalImageToTexture()
- Experimentelle Unterstützung für Lese-/Schreib- und schreibgeschützte Speichertextur
- Dawn-Updates
Chrome 117
- Vertex-Buffer zurücksetzen
- Bindungsgruppe aufheben
- Fehler bei der Erstellung einer asynchronen Pipeline bei verlorenem Gerät ignorieren
- Aktualisierungen beim Erstellen von SPIR-V-Shadermodulen
- Entwicklerfreundlichkeit verbessern
- Pipelines mit automatisch generiertem Layout im Cache speichern
- Dawn-Updates
Chrome 116
- WebCodecs-Integration
- Verlorenes Gerät, das von GPUAdapter
requestDevice()
zurückgegeben wurde - Videowiedergabe bei Aufruf von
importExternalTexture()
flüssig halten - Einhaltung der Spezifikationen
- Entwicklerfreundlichkeit verbessern
- Dawn-Updates
Chrome 115
- Unterstützte WGSL-Spracherweiterungen
- Experimentelle Unterstützung für Direct3D 11
- Unterstützung für diskrete GPU standardmäßig bei Wechselstromversorgung
- Entwicklerfreundlichkeit verbessern
- Dawn-Updates
Chrome 114
- JavaScript optimieren
- Bei nicht konfiguriertem Canvas wird bei getCurrentTexture() ein InvalidStateError geworfen
- WGSL-Updates
- Dawn-Updates