Unterstützte WGSL-Spracherweiterungen
Das Element wgslLanguageFeatures
des GPU
-Objekts listet die Namen der unterstützten WGSL-Spracherweiterungen auf. Unterstützte WGSL-Spracherweiterungen werden automatisch aktiviert, sodass du sie nicht explizit anfordern musst. Diese Liste ist derzeit leer, aber Sie können in Zukunft mit vielen davon rechnen (z. B. do-while loops
). Siehe Ausgabe: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 ihn jetzt lokal testen, indem Sie Chrome unter Windows mit den --enable-unsafe-webgpu --use-webgpu-adapter=d3d11
-Befehlszeilen-Flags ausführen. Weitere Informationen finden Sie unter Problem dawn:1705.
Diskrete GPU standardmäßig im Netzbetrieb abrufen
Wenn auf macOS-Geräten mit Dual-GPU requestAdapter()
ohne die Option powerPreference
aufgerufen wird, wird die separate GPU zurückgegeben, wenn das Gerät des Nutzers an das Stromnetz angeschlossen ist. Andernfalls wird die integrierte GPU zurückgegeben. Siehe Änderung 4499307.
Bessere User Experience für Entwickler
Warnungen zu neuen Entwicklertools
Wenn der depth
-Schlüssel in einem GPUExtend3DDict
verwendet wird, wird in der Entwicklertools-Konsole eine Warnung angezeigt, da der richtige Schlüssel depthOrArrayLayers
ist. Weitere Informationen finden Sie unter Problem „chromium:1440900“.
Eine Warnung wird auch ausgegeben, wenn eine GPUBlendComponent
eine Mischung aus expliziten und standardmäßigen Mitgliedern enthält. Siehe Problem dawn:1785.
Auch wenn Weiterleitungen und Zeichnungen in Nullgröße gültig sind, werden Entwickler durch eine Warnung dazu aufgefordert, sie nach Möglichkeit zu vermeiden. Siehe Problem dawn:1786.
Bessere Fehlermeldungen
Bei Verwendung eines GPUCommandEncoder
wird jetzt eine verbesserte Fehlermeldung ausgegeben, wenn finish()
bereits aufgerufen wurde. Weitere Informationen finden Sie unter Problem dawn:1736.
Beim Senden von Befehlspuffern mit gelöschten Objekten werden die Labels der Befehlszwischenspeicher, die in submit()
verwendet wurden, jetzt in der Fehlermeldung angezeigt. Siehe Problem dawn:1747.
Der ungültige Teil des Schablonenstatus für die Tiefe wird jetzt in der Fehlermeldung bei der Validierung von depthStencil
angegeben. Weitere Informationen finden Sie unter Problem dawn:1735.
In der Validierungsfehlermeldung minBindingSize
werden jetzt die Gruppe und die Nummer der Bindung, bei der die Validierung fehlgeschlagen ist, sowie der Zwischenspeicher angezeigt. Weitere Informationen finden Sie unter Problem dawn:1604.
Die Fehlermeldungen, die von der Methode mapAsync()
für ein GPUBuffer
-Objekt zurückgegeben werden, wurden verbessert, um Entwicklern bei der Fehlerbehebung zu helfen. Ein Beispiel unten finden Sie unter 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-Debugging-Tools
Mit der Ein/Aus-Schaltfläche für die Fehlerbehebung in 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 wird das Debuggen unter macOS verbessert, wenn Sie es für die Fehlerbehebung aktivieren. Siehe Problem dawn:1784
HLSL protokollieren, wenn Kompilierung fehlschlägt
Mit der Ein/Aus-Schaltfläche zur Fehlerbehebung von dump_shaders
können Sie WGSL-Eingabe-Shader und übersetzte Back-End-Shader protokollieren. Wenn Sie es für die Fehlerbehebung aktivieren, wird die HLSL-Datei ausgegeben, falls die Kompilierung fehlschlägt. Siehe Problem dawn:1681
Updates zum Morgengrauen
Vertex-Zwischenspeicher aufheben
Wenn Sie für wgpu::RenderPassEncoder
oder wgpu::RenderBundleEncoder
nullptr
anstelle von wgpu::Buffer
an SetVertexBuffer()
übergeben, kann ein zuvor festgelegter Zwischenspeicher für Scheitelpunkte in einem bestimmten Slot aufgehoben werden. Weitere Informationen finden Sie unter 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, damit Rendering-Übergabevorgänge im Kachelspeicher verbleiben. Dadurch wird VRAM-Traffic und möglicherweise auch die VRAM-Zuweisung für die Texturen vermieden, indem Sie die Verwendung von wgpu::TextureUsage::TransientAttachment
festlegen. Diese Funktion wird nur für Metal und Vulkan unterstützt. Weitere Informationen finden Sie unter Issue Dawn: 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 der neuen CMake-Option DAWN_FETCH_DEPENDENCIES
können Sie Dawn-Abhängigkeiten mit einem Python-Skript abrufen, das DEPS-Dateien liest. Die Installation von depot_tools
durch alle davon abhängigen Projekte ist nicht mehr erforderlich. Siehe Änderung 131750.
Neu bei WebGPU
Hier finden Sie eine Liste aller Inhalte, die in der Reihe What's New in WebGPU behandelt wurden.
Chrome 125
Chrome 124
- Schreibgeschützte und nicht schreibgeschützte Speichertexturen
- Unterstützung für Service Worker und Shared Worker
- Neue Attribute für Adapterinformationen
- Diverse Fehlerkorrekturen
- Updates zum Morgengrauen
Chrome 123
- Unterstützung von integrierten Funktionen in DP4a in WGSL
- Uneingeschränkte Zeigerparameter in WGSL
- Syntax für die Dereferenzierung von zusammengesetzten Elementen in WGSL
- Separater schreibgeschützter Status für Schablonen- und Tiefenaspekte
- Updates zum Morgengrauen
Chrome 122
- Reichweite mit Kompatibilitätsmodus erhöhen (Funktion in Entwicklung)
- Limit für „maxVertexAttributes“ erhöhen
- Updates zum Morgengrauen
Chrome 121
- Unterstützung von WebGPU unter Android
- Für die Shader-Kompilierung unter Windows DXC statt FXC verwenden
- Zeitstempelabfragen in Rechen- und Renderingdurchläufen
- Standardeinstiegspunkte für Shader-Module
- display-p3 als GPUExternalTexture-Farbraum unterstützen
- Informationen zum Arbeitsspeicher-Heaps
- Updates zum Morgengrauen
Chrome 120
- Unterstützung von 16-Bit-Gleitkommawerten in WGSL
- Gehe an die Grenzen
- Änderungen am Status der Tiefenschablone
- Aktualisierungen der Adapterinformationen
- Quantisierung von Zeitstempelabfragen
- Frühjahrsputz-Funktionen
Chrome 119
- Filterbare 32-Bit-Float-Texturen
- Vertex-Format „unorm10-10-10-2“
- rgb10a2uint Texturformat
- Updates zum Morgengrauen
Chrome 118
- Unterstützung von HTMLImageElement und ImageData in
copyExternalImageToTexture()
- Experimentelle Unterstützung für nicht schreibgeschützte und schreibgeschützte Speichertexturen
- Updates zum Morgengrauen
Chrome 117
- Nicht festgelegter Vertex-Zwischenspeicher
- Bindungsgruppe aufheben
- Fehler aufgrund asynchroner Pipelineerstellung bei Verlust des Geräts stummschalten
- Updates zur Erstellung von SPIR-V-Shader-Modulen
- Entwicklererfahrung verbessern
- Pipelines mit automatisch generiertem Layout im Cache speichern
- Updates zum Morgengrauen
Chrome 116
- WebCodecs-Integration
- Verlorenes Gerät vom GPUAdapter
requestDevice()
zurückgegeben - Für eine flüssige Videowiedergabe bei
importExternalTexture()
-Aufrufen sorgen - Spezifikationskonformität
- Entwicklererfahrung verbessern
- Updates zum Morgengrauen
Chrome 115
- Unterstützte WGSL-Spracherweiterungen
- Experimentelle Unterstützung für Direct3D 11
- Diskrete GPU standardmäßig mit Netzstrom betreiben
- Entwicklererfahrung verbessern
- Updates zum Morgengrauen
Chrome 114
- JavaScript optimieren
- getCurrentTexture() auf nicht konfiguriertem Canvas wirft InvalidStateError
- Updates zu WGSL
- Updates zum Morgengrauen