Unterstützte WGSL-Spracherweiterungen
Im Mitglied wgslLanguageFeatures
des Objekts GPU
sind die Namen der unterstützten WGSL-Spracherweiterungen aufgeführt. Unterstützte WGSL-Spracherweiterungen werden automatisch aktiviert. Sie müssen sie also nicht explizit anfordern. Diese Liste ist derzeit leer, aber in Zukunft sind viele davon zu erwarten (z. B. do-while loops
). Siehe issue dawn:1777.
if (navigator.gpu.wgslLanguageFeatures?.has("unknown-feature")) {
// Use unknown-feature in WGSL shader code.
}
Experimentelle Unterstützung für Direct3D 11
Das Chromium-Team arbeitet daran, WebGPU-Unterstützung für Direct3D 11 hinzuzufügen. Sie können die Funktion jetzt lokal testen, indem Sie Chrome unter Windows mit den --enable-unsafe-webgpu --use-webgpu-adapter=d3d11
-Befehlszeilenoptionen ausführen. Siehe Problem dawn:1705.
Standardmäßig die diskrete GPU bei Wechselstromversorgung nutzen
Wenn auf macOS-Geräten mit zwei GPUs requestAdapter()
ohne Option powerPreference
aufgerufen wird, wird die diskrete GPU zurückgegeben, wenn das Gerät des Nutzers an das Stromnetz angeschlossen ist. Andernfalls wird die integrierte GPU zurückgegeben. Siehe Änderung 4499307.
Entwicklerfreundlichkeit verbessern
Neue Warnungen in den DevTools
Wenn der Schlüssel depth
in einem GPUExtend3DDict
verwendet wird, wird in der DevTools-Konsole eine Warnung angezeigt, da der richtige Schlüssel depthOrArrayLayers
ist. Siehe Problem chromium:1440900.
Eine Warnung wird auch ausgegeben, wenn eine GPUBlendComponent
eine Mischung aus expliziten und standardmäßigen Mitgliedern enthält. Siehe issue dawn:1785.
Auch wenn Übermittlungen und Zeichnungen mit einer Größe von null gültig sind, werden Entwickler mit einer Warnung dazu aufgefordert, sie nach Möglichkeit zu vermeiden. Siehe Problem dawn:1786.
Bessere Fehlermeldungen
Bei der Verwendung einer GPUCommandEncoder
wird jetzt eine verbesserte Fehlermeldung angezeigt, wenn finish()
bereits aufgerufen wurde. Siehe Problem dawn:1736.
Wenn Befehlspuffere mit zerstörten Objekten gesendet werden, sind die Labels der Befehlspuffere, die in submit()
verwendet wurden, jetzt in der Fehlermeldung zu sehen. Siehe Problem dawn:1747.
Der ungültige Teil des Tiefenebenen-Status wird jetzt in der Fehlermeldung bei der Validierung von depthStencil
angegeben. Siehe Problem dawn:1735.
Die Validierungsfehlermeldung minBindingSize
enthält jetzt die Gruppe und Nummer der Bindung, bei der die Validierung fehlgeschlagen ist, sowie den Puffer. Siehe Problem dawn:1604.
Die von der Methode mapAsync()
für ein GPUBuffer
-Objekt zurückgegebenen Fehlermeldungen wurden verbessert, um Entwicklern bei der Fehlerbehebung zu helfen. Unten sehen Sie ein Beispiel. Weitere Informationen finden Sie im Issue chromium:1431622.
// Create a GPU buffer and map it.
const descriptor = { size: 0, usage: GPUBufferUsage.MAP_READ };
const buffer = device.createBuffer(descriptor);
buffer.mapAsync(GPUMapMode.READ);
// Before it has been mapped, request another mapping.
try {
await buffer.mapAsync(GPUMapMode.READ);
} catch (error) {
// New! Error message tells you mapping is already pending.
console.warn(error.message);
}
Labels in macOS-Debugging-Tools
Mit der use_user_defined_labels_in_backend
-Schaltfläche für die Debug-Funktion können Sie Objektlabels an das Backend weiterleiten, damit sie in platformspezifischen Debugging-Tools wie RenderDoc, PIX oder Instruments angezeigt werden. Ab sofort können Sie auf macOS das Debugging aktivieren, um Fehler noch einfacher zu beheben. Siehe Problem dawn:1784
HLSL protokollieren, wenn die Kompilierung fehlschlägt
Mit der dump_shaders
-Debug-Schaltfläche können Sie WGSL-Eingabeshader und übersetzte Back-End-Shader protokollieren. Wenn Sie ihn für das Debuggen aktivieren, wird die HLSL-Datei ab jetzt ausgegeben, wenn die Kompilierung fehlschlägt. Siehe issue dawn:1681
Dawn-Updates
Vertex-Puffer zurücksetzen
Wenn Sie nullptr
statt eines wgpu::Buffer
an SetVertexBuffer()
auf wgpu::RenderPassEncoder
oder wgpu::RenderBundleEncoder
übergeben, können Sie einen zuvor festgelegten Vertex-Zwischenspeicher in einem bestimmten Slot aufheben. Siehe Problem dawn:1675.
// Set vertex buffer in slot 0.
myRenderPassEncoder.SetVertexBuffer(0, myVertexBuffer);
// Then later, unset vertex buffer in slot 0.
myRenderPassEncoder.SetVertexBuffer(0, nullptr);
Vorübergehende Anhänge
Sie können Anhänge erstellen, die es Renderingpassvorgängen im Kachelspeicher ermöglichen, um VRAM-Datenverkehr zu vermeiden und möglicherweise die VRAM-Zuweisung für die Texturen zu vermeiden, indem Sie die wgpu::TextureUsage::TransientAttachment
-Nutzung festlegen. Diese Funktion wird nur für Metal und Vulkan unterstützt. Siehe Issue Morgen: 1695.
wgpu::TextureDescriptor desc;
desc.format = wgpu::TextureFormat::RGBA8Unorm;
desc.size = {1, 1, 1};
desc.usage = wgpu::TextureUsage::RenderAttachment |
wgpu::TextureUsage::TransientAttachment;
auto transientTexture = device.CreateTexture(&desc);
// You can now create views from the texture to serve as transient
// attachments, e.g. as color attachments in a render pipeline.
Gebäude ohne depot_tools
Mit einer neuen DAWN_FETCH_DEPENDENCIES
-CMake-Option können Sie Dawn-Abhängigkeiten mit einem Python-Script abrufen, das DEPS-Dateien liest, anstatt dass depot_tools
in allen Projekten installiert werden muss, die davon abhängen. Siehe Änderung 131750.
Das ist neu bei WebGPU
Eine Liste aller behandelten Themen der Reihe What's New in WebGPU.
Chrome 131
- Entfernungen in WGSL zuschneiden
- GPUCanvasContext getConfiguration()
- Punkt- und Linienprimitive dürfen keine Tiefenverzerrung haben.
- Integrierte Funktionen zum inklusiven Scan für Untergruppen
- Experimentelle Unterstützung für indirekte Multi-Draw-Anweisungen
- Shader-Modul-Kompilierungsoption „strict math“
- GPUAdapter requestAdapterInfo() entfernen
- Dawn-Updates
Chrome 130
- Dual-Source-Mischung
- Schnellere Zusammenstellung von Metal-Songs mit schnellerer Zusammenstellung
- Einstellung der GPUAdapter-Methode „requestAdapterInfo()“
- Updates zur Morgendämmerung
Chrome 129
Chrome 128
- Mit Untergruppen experimentieren
- Einstellung der Tiefenverzerrung für Linien und Punkte eingestellt
- Nicht erfasste Fehlerwarnung in den Entwicklertools bei preventDefault ausblenden
- WGSL interpoliert zuerst die Stichprobe und
- Dawn-Updates
Chrome 127
- Experimentelle Unterstützung für OpenGL ES auf Android-Geräten
- Attribut „info“ von „GPUAdapter“
- Verbesserungen der WebAssembly-Interoperabilität
- Verbesserte Fehlermeldungen beim Befehls-Encoder
- Dawn-Updates
Chrome 126
- Limit für „maxTextureArrayLayers“ erhöht
- Optimierung des Zwischenspeicheruploads für das Vulkan-Backend
- Verbesserte Shader-Kompilierungszeiten
- Eingereichte Befehlspuffere müssen eindeutig sein.
- Updates zu Dawn
Chrome 125
Chrome 124
- Lese- und Lese-/Schreibspeichertextur
- Unterstützung für Dienst- und freigegebene Worker
- Neue Attribute für Adapterinformationen
- Diverse Fehlerkorrekturen
- Updates zu Dawn
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 Schablonen- und Tiefenaspekte
- Dawn-Updates
Chrome 122
- Reichweite mit Kompatibilitätsmodus erhöhen (Funktion in Entwicklung)
- maxVertexAttributes-Limit erhöhen
- Dawn-Updates
Chrome 121
- Unterstützung von WebGPU auf Android-Geräten
- 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 Arbeitsspeicher-Heaps
- 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-Float-Texturen
- unorm10-10-10-2-Vertex-Format
- rgb10a2uint-Texturformat
- Updates zur Morgendämmerung
Chrome 118
- Unterstützung von HTMLImageElement und ImageData in
copyExternalImageToTexture()
- Experimentelle Unterstützung für Lese-/Schreib- und schreibgeschützte Speichertextur
- Updates zu Dawn
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