<ph type="x-smartling-placeholder">
MaxTextureArrayLayers-Limit erhöhen
Der maximal zulässige Wert für die Tiefe oder Ebenenanzahl einer 2D-Textur ist standardmäßig 256. Es ist jetzt möglich, mithilfe des maxTextureArrayLayers-Limits, sofern unterstützt, bis zu 2.048 Anfragen anzufordern. Sehen Sie sich das folgende Beispiel und Problem 42241514 an.
const adapter = await navigator.gpu.requestAdapter();
if (adapter.limits.maxTextureArrayLayers < 30) {
// When the desired limit isn't supported, take action to either fall back to
// a code path that does not require the higher limit or notify the user that
// their device does not meet minimum requirements.
}
// Request highest limit of max texture array layers attributes.
const device = await adapter.requestDevice({
requiredLimits: { maxTextureArrayLayers: 2048 }
});
Optimierung des Zwischenspeicheruploads für das Vulkan-Backend
Wenn Sie die Methode writeBuffer() der GPUQueue für das Vulkan-Back-End aufrufen, steht jetzt ein schneller Pfad zur Verfügung. Die Daten können jetzt direkt in den Zielpuffer geschrieben werden, wodurch die Notwendigkeit einer zusätzlichen Kopie und Synchronisierung entfällt. Diese Optimierung reduziert Arbeitsspeicher-Traffic, der für das Hochladen von Daten in die GPU erforderlich ist.
Für die Fast Path-Optimierung muss der Arbeitsspeicher des Zwischenspeichers für den Zwischenspeicher sichtbar sein und keine ausstehenden GPU-Vorgänge enthalten. Siehe Problem 42242084.
Verbesserungen bei der Kompilierungszeit von Shaders
Das Chrome-Team verbessert die Effizienz von Tint, dem Compiler der WebGPU-Shader-Sprache. Tint ändert derzeit den abstrakten Syntaxbaum (AST) des Shader-Codes mehrmals, bevor Maschinencode generiert wird. Dieser Prozess ist auf einigen Plattformen ressourcenintensiv. Um dies zu optimieren, werden eine neue Zwischendarstellung (IR) sowie neu gestaltete Back-Ends eingeführt, die diese verwenden. Mit dieser Änderung soll die Shader-Kompilierung beschleunigt werden.
<ph type="x-smartling-placeholder">![Zur Erstellung einer Rendering-Pipeline wird WGSL mit dem Tint-Compiler in SPIR-V und dann mit dem Treiber-Compiler in ISA konvertiert.](https://developer.chrome.com/static/blog/new-in-webgpu-126/image/render-pipeline-creation-diagram.jpg?authuser=6&hl=de)
Diese Verbesserungen, die bereits für Android verfügbar sind, werden nach und nach auch für ChromeOS-Geräte ausgeweitet, die WebGPU mit Vulkan-Backend unterstützen. Siehe Problem 42250751.
Eingereichte Befehlspuffer müssen eindeutig sein
Jeder GPUCommandBuffer, der mit der Methode submit()
an die GPUQueue gesendet wird, muss eindeutig sein. Andernfalls wird ein Validierungsfehler generiert. Dies war ein Fehler in den Spezifikationen. Siehe Problem 42241492.
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();
const commandEncoder = device.createCommandEncoder();
const commandBuffer = commandEncoder.finish();
device.queue.submit([commandBuffer, commandBuffer]);
// ⚠️ Validation fails because command buffers are not unique.
Updates zur Morgendämmerung
Der C++-Wrapper webgpu_cpp.h ist jetzt nur im Header verfügbar. Dies vereinfacht seine Verwendung und ermöglicht eine einfachere Integration mit alternativen C++-Wrappern. Siehe Problem 40195122.
In der C API webgpu.h ist das Konzept von Swapchain-Objekten nicht mehr verfügbar. Diese Änderung erfolgt eng mit der JavaScript API. Die interne Konfiguration erfolgt nun über die Methode Configure()
des neuen wgpu::Surface
-Objekts, das in Zukunft geändert werden kann. Ein Beispiel finden Sie in der Dokumentation App mit WebGPU erstellen. Siehe Problem 42241264.
Vollständige Liste der Commits
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 nicht 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