Veröffentlicht: 27. August 2025
Geräteanfragen verbrauchen Adapter
Gemäß der WebGPU-Spezifikation wird ein Adapter bei einer erfolgreichen Geräteanfrage als "verbraucht" markiert. Folglich führen alle nachfolgenden requestDevice()-Aufrufe mit demselben Adapter zu einem abgelehnten Promise. Bisher haben diese Aufrufe ein Gerät zurückgegeben, das bei der Erstellung verloren gegangen ist. Siehe Problem 415825174.
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();
await adapter.requestDevice(); // Fails because adapter has been consumed.
Kurzform für die Verwendung von Texturen, wenn eine Texturansicht verwendet wird
Eine GPUTexture kann jetzt direkt als GPUBindingResource verwendet werden, um sie für die Bindung an den Shader zu übergeben. Sie kann auch als GPURenderPassColorAttachment view, GPURenderPassColorAttachment resolveTarget und GPURenderPassDepthStencilAttachment view verwendet werden, um die Ergonomie zu verbessern. Dies ist ein einfacherer Ansatz als die Verwendung von GPUTextureView, um eine Standardansicht zu erhalten. Siehe Problem 425906323.
const bindGroup = myDevice.createBindGroup({
layout: myPipeline.getBindGroupLayout(0),
entries: [
{ binding: 0, resource: mySampler },
{ binding: 1, resource: myTexture }, // Same as myTexture.createView()
{ binding: 2, resource: myExternalTexture },
{ binding: 3, resource: myBuffer },
],
});
WGSL textureSampleLevel unterstützt 1D-Texturen
1D-Texturen können jetzt mit textureSampleLevel() gesampelt werden, um die Konsistenz mit 2D-Texturen zu gewährleisten. So können Sie eine 1D-Textur aus einem Vertex-Shader sampeln, was bisher nur mit textureSample() aus einem Fragment-Shader möglich war. Siehe Problem 382514673.
Verwendung von schreibgeschützten Speichertexturen im Format „bgra8unorm“ wird eingestellt
Die Verwendung des Formats "bgra8unorm" mit schreibgeschützten Speichertexturen wird jetzt eingestellt. Die WebGPU-Spezifikation verbietet dies ausdrücklich und die bisherige Zulassung in Chrome war ein Fehler, da dieses Format für den schreibgeschützten Zugriff vorgesehen und nicht portierbar ist. Siehe Problem 427681156.
GPUAdapter-Attribut „isFallbackAdapter“ entfernen
Wie bereits angekündigt, wurde das GPUAdapter isFallbackAdapter Attribut jetzt entfernt. Es wurde durch das GPUAdapterInfo-Attribut isFallbackAdapter ersetzt, das in Chrome 136 eingeführt wurde. Siehe Absicht zur Entfernung.
Dawn-Updates
Die Funktion wgpuInstanceGetWGSLLanguageFeatures() wird verwendet, um eine Liste der von der Instanz unterstützten WGSL-Sprachfunktionen abzurufen. Bisher wurde ein WGPUStatus-Wert zurückgegeben. Sie wurde aktualisiert, um keinen Wert zurückzugeben, da sie nicht fehlschlagen kann. Siehe Problem 429178774.
Die Funktion wgpuSurfacePresent() gibt jetzt einen WGPUStatus-Fehler zurück, wenn die Oberfläche keine aktuelle Textur hat. Siehe Problem 425930323.
Mit der neuen Funktion wgpu::InstanceFeatureName::MultipleDevicesPerAdapter können Adapter mehrere Geräte erstellen, ohne „verbraucht“ zu werden. Siehe Problem 415825174.
Mit der Geräteoption dump_shaders_on_failure können Sie Shader nur bei einem Fehler zu Debugging-Zwecken ausgeben. Sie gilt ausschließlich für D3-Back-Ends, eine zukünftige Erweiterung auf andere Back-Ends ist jedoch möglich. Siehe Problem 429187478.
Am Vulkan-Back-End wurden mehrere Änderungen vorgenommen, um den Overhead beim Senden von Render-Passes zu reduzieren und so die Leistung auf mobilen GPUs zu verbessern. Beispiel: Caching von VkFramebuffers.
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
- Swizzle für Texturkomponenten
- Verwendung von schreibgeschützten Speichertexturen im Format „bgra8unorm“ entfernen
- Dawn-Updates
Chrome 142
Chrome 141
- Tint IR abgeschlossen
- Analyse des Ganzzahlbereichs im WGSL-Compiler
- SPIR-V 1.4-Update für das Vulkan-Back-End
- Dawn-Updates
Chrome 140
- Geräteanfragen verbrauchen Adapter
- Kurzform für die Verwendung von Texturen, wenn eine Texturansicht verwendet wird
- WGSL textureSampleLevel unterstützt 1D-Texturen
- Verwendung von schreibgeschützten Speichertexturen im Format „bgra8unorm“ wird eingestellt
- GPUAdapter-Attribut „isFallbackAdapter“ entfernen
- 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 der Größenanforderungen für Puffer, die bei der Erstellung zugeordnet werden
- Architekturbericht für aktuelle GPUs
- GPUAdapter-Attribut „isFallbackAdapter“ wird eingestellt
- Dawn-Updates
Chrome 137
- Texturansicht für die Bindung von externen Texturen verwenden
- Puffer ohne Angabe von Offsets und Größe kopieren
- WGSL workgroupUniformLoad mit Zeiger auf Atom
- GPUAdapterInfo-Attribut „powerPreference“
- GPURequestAdapterOptions-Attribut „compatibilityMode“ entfernen
- Dawn-Updates
Chrome 136
- GPUAdapterInfo-Attribut „isFallbackAdapter“
- Verbesserungen 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
- Viewports können über die Grenzen der Renderziele hinausgehen
- Einfacherer Zugriff auf den experimentellen Kompatibilitätsmodus unter Android
- Limit „maxInterStageShaderComponents“ entfernen
- Dawn-Updates
Chrome 134
- Arbeitslasten für maschinelles Lernen mit Untergruppen verbessern
- Unterstützung für filterbare Texturtypen mit Gleitkommazahlen als mischbar entfernen
- Dawn-Updates
Chrome 133
- Zusätzliche unorm8x4-bgra- und 1-Komponenten-Vertex-Formate
- Anforderung unbekannter Limits mit undefiniertem Wert zulassen
- Änderungen der WGSL-Ausrichtungsregeln
- WGSL-Leistungssteigerungen mit „discard“
- VideoFrame-Anzeigegröße für externe Texturen verwenden
- Bilder mit nicht standardmäßigen Ausrichtungen mit copyExternalImageToTexture verarbeiten
- Entwicklerfreundlichkeit verbessern
- Kompatibilitätsmodus mit „featureLevel“ aktivieren
- Bereinigung experimenteller Untergruppenfunktionen
- Limit „maxInterStageShaderComponents“ wird eingestellt
- 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
- Entwicklerfreundlichkeit verbessern
- 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
- GPUAdapter.requestAdapterInfo() entfernen
- Dawn-Updates
Chrome 130
- Mischen mit zwei Quellen
- Verbesserungen der Shader-Kompilierungszeit unter Metal
- GPUAdapter.requestAdapterInfo() wird eingestellt
- 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 Tiefenverzerrung für Linien und Punkte
- Warnung in den Entwicklertools für nicht erfasste Fehler ausblenden, wenn preventDefault
- WGSL-Interpolation zuerst und entweder Sampling
- 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
- Limit „maxTextureArrayLayers“ erhöhen
- Optimierung des Puffer-Uploads für das Vulkan-Back-End
- 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
- Syntax-Zucker für die Dereferenzierung von Composites in WGSL
- Separater schreibgeschützter Status für Schablonen- und Tiefenaspekte
- Dawn-Updates
Chrome 122
- Reichweite mit Kompatibilitätsmodus erhöhen (Funktion in Entwicklung)
- Limit „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 Speicher-Heaps
- Dawn-Updates
Chrome 120
- Unterstützung für 16-Bit-Gleitkommawerte in WGSL
- Limits erweitern
- Ä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 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 ausblenden, wenn das Gerät verloren geht
- Updates für die Erstellung von SPIR-V-Shader-Modulen
- Entwicklerfreundlichkeit verbessern
- 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, wenn
importExternalTexture()aufgerufen wird - Spezifikationskonformität
- Entwicklerfreundlichkeit verbessern
- Dawn-Updates
Chrome 115
- Unterstützte WGSL-Spracherweiterungen
- Experimentelle Unterstützung für Direct3D 11
- Standardmäßig diskrete GPU bei Netzstrom verwenden
- Entwicklerfreundlichkeit verbessern
- Dawn-Updates
Chrome 114
- JavaScript optimieren
- getCurrentTexture() auf nicht konfiguriertem Canvas löst InvalidStateError aus
- WGSL-Updates
- Dawn-Updates