Unterstützte WGSL-Spracherweiterungen
Das Mitglied wgslLanguageFeatures
des Objekts GPU
enthält die Namen der unterstützten WGSL-Spracherweiterungen. Unterstützte WGSL-Spracherweiterungen werden automatisch aktiviert und müssen daher nicht extra angefordert werden. Diese Liste ist derzeit leer, aber Sie werden in Zukunft viele davon 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, eine WebGPU-Unterstützung für Direct3D 11 hinzuzufügen. Sie können jetzt lokal damit experimentieren. Führen Sie dazu Chrome unter Windows mit den Befehlszeilen-Flags --enable-unsafe-webgpu --use-webgpu-adapter=d3d11
aus. Siehe issue dawn:1705.
Getrennte GPU standardmäßig im Netzbetrieb nutzen
Wenn requestAdapter()
auf macOS-Geräten mit Dual-GPU ohne die 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. Weitere Informationen finden Sie unter 4499307 ändern.
Entwicklererfahrung verbessern
Neue Entwicklertools-Warnungen
Wenn der Schlüssel depth
in einer GPUExtend3DDict
verwendet wird, wird in der Entwicklertools-Konsole eine Warnung angezeigt, da der richtige Schlüssel depthOrArrayLayers
ist. Siehe issue chromium:1440900.
Es wird auch eine Warnung ausgegeben, wenn eine GPUBlendComponent
sowohl explizite als auch standardmäßige Mitglieder enthält. Siehe issue dawn:1785.
Auch wenn Weiterleitungen und Zeichnungen mit Nullgröße gültig sind, werden Entwickler durch eine Warnung aufgefordert, solche Aktionen nach Möglichkeit zu vermeiden. Siehe issue dawn:1786.
Bessere Fehlermeldungen
Eine verbesserte Fehlermeldung wird angezeigt, wenn ein GPUCommandEncoder
verwendet wird, wenn finish()
bereits aufgerufen wurde. Siehe issue dawn:1736.
Beim Senden von Befehlspuffern mit gelöschten Objekten werden die Labels der Befehlspuffer, die in submit()
verwendet wurden, jetzt in der Fehlermeldung angezeigt. Siehe issue dawn:1747.
Der ungültige Teil des Tiefenschablonstatus wird jetzt bei der Validierung von depthStencil
in der Fehlermeldung angegeben. Siehe issue dawn:1735.
In der minBindingSize
-Validierungsfehlermeldung werden jetzt die Gruppe und die Nummer der Bindung, die die Validierung nicht bestanden hat, sowie der Zwischenspeicher gemeldet. Siehe issue 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 und das Problem 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-Debuggingtools
Mit der Ein/Aus-Schaltfläche für die Fehlerbehebung von use_user_defined_labels_in_backend
können Sie Objektlabels an das Back-End weiterleiten, damit sie in plattformspezifischen Debugging-Tools wie RenderDoc, PIX oder Instruments sichtbar sind. Ab sofort bietet macOS eine bessere Fehlerbehebung, wenn Sie es für die Fehlerbehebung aktivieren. Siehe issue dawn:1784
![Screenshot der App „Instruments“ unter macOS mit benutzerdefinierten Labels von WebGPU.](https://developer.chrome.google.cn/static/blog/new-in-webgpu-115/image/screenshot-instruments-a-75d5272ed4ccf.png?authuser=6&hl=de)
HLSL protokollieren, wenn die Kompilierung fehlschlägt
Mit der Ein/Aus-Schaltfläche für die Fehlerbehebung von dump_shaders
können Sie WGSL-Eingabe-Shader und übersetzte Back-End-Shader protokollieren. Wenn Sie ihn für das Debuggen aktivieren, wird die HLSL ab sofort ausgegeben, wenn die Kompilierung fehlschlägt. Siehe issue dawn:1681
Updates zur Morgendämmerung
Vertex-Zwischenspeicher aufheben
Wenn Sie nullptr
anstelle 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 issue 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
erstellt
Mit der neuen CMake-Option DAWN_FETCH_DEPENDENCIES
können Sie Dawn-Abhängigkeiten mithilfe eines Python-Skripts abrufen, das DEPS-Dateien liest. Sie müssen nicht mehr depot_tools
für alle davon abhängigen Projekte installieren. Siehe Änderung 131750.
Das ist neu bei WebGPU
Eine Liste aller behandelten Themen der Reihe What's New in WebGPU.
Chrome 127
- Experimentelle Unterstützung von OpenGL ES unter Android
- GPUAdapter-Infoattribut
- Verbesserungen der WebAssembly-Interoperabilität
- Verbesserte Fehler des Befehls-Encoders
- Updates zur Morgendämmerung
Chrome 126
- Limit für maxTextureArrayLayers erhöhen
- Optimierung des Zwischenspeicheruploads für das Vulkan-Backend
- Schnellere Kompilierungszeiten
- Gesendete Befehlspuffer müssen eindeutig sein
- Updates zur Morgendämmerung
Chrome 125
Chrome 124
- Schreibgeschützte Speichertexturen
- Unterstützung für Service Worker und Shared Worker
- Neue Attribute für Adapterinformationen
- Diverse Fehlerkorrekturen
- Updates zur Morgendämmerung
Chrome 123
- Unterstützung der integrierten DP4a-Funktionen in WGSL
- Uneingeschränkte Zeigerparameter in WGSL
- „Zucker“-Syntax für die Dereferenzierung von zusammengesetzten Daten in WGSL
- Separater schreibgeschützter Status für Schablonen- und Tiefenaspekte
- Updates zur Morgendämmerung
Chrome 122
- Reichweite mit dem Kompatibilitätsmodus erhöhen (Funktion in Entwicklung)
- maxVertexAttributes-Limit erhöhen
- Updates zur Morgendämmerung
Chrome 121
- Unterstützung von WebGPU unter Android
- DXC anstelle von FXC für die Shader-Kompilierung unter Windows verwenden
- Zeitstempelabfragen in Rechen- und Renderingdurchläufen
- Standardeinstiegspunkte für Shader-Module
- Unterstützung von „display-p3“ als GPUExternalTexture-Farbraum
- Informationen zu Arbeitsspeicher-Heaps
- Updates zur Morgendämmerung
Chrome 120
- Unterstützung von 16-Bit-Gleitkommawerten in WGSL
- Gehe an deine Grenzen
- Änderungen am Status der Tiefenschablonen
- Aktualisierung der Adapterinformationen
- Zeitstempelquantisierung von Abfragen
- Frühjahrsputz
Chrome 119
- Filterbare 32-Bit-Float-Texturen
- unorm10-10-10-2 Vertexformat
- rgb10a2uint-Texturformat
- Updates zur Morgendämmerung
Chrome 118
- Unterstützung von HTMLImageElement und ImageData in
copyExternalImageToTexture()
- Experimentelle Unterstützung für schreibgeschützte und schreibgeschützte Speichertexturen
- Updates zur Morgendämmerung
Chrome 117
- Vertex-Zwischenspeicher aufheben
- Bindungsgruppe aufheben
- Fehler bei der asynchronen Pipelineerstellung stummschalten, wenn Gerät verloren geht
- Aktualisierungen beim Erstellen von SPIR-V-Shadermodulen
- Entwicklererfahrung verbessern
- Caching-Pipelines mit automatisch generiertem Layout
- Updates zur Morgendämmerung
Chrome 116
- WebCodecs-Integration
- Verlorenes Gerät, das von GPUAdapter
requestDevice()
zurückgegeben wurde - Videowiedergabe ruckelfrei, wenn
importExternalTexture()
aufgerufen wird - Konformität mit Spezifikationen
- Entwicklererfahrung verbessern
- Updates zur Morgendämmerung
Chrome 115
- Unterstützte WGSL-Spracherweiterungen
- Experimentelle Unterstützung für Direct3D 11
- Separate GPU standardmäßig im Netzbetrieb nutzen
- Entwicklererfahrung verbessern
- Updates zur Morgendämmerung
Chrome 114
- JavaScript-Code optimieren
- getCurrentTexture() bei nicht konfiguriertem Canvas löst InvalidStateError aus
- Wichtige Informationen von WGSL
- Updates zur Morgendämmerung