Limit für maxTextureArrayLayers erhöhen
Der maximal zulässige Wert für die Tiefe oder Anzahl der Ebenen einer 2D-Textur beträgt standardmäßig 256. Wenn unterstützt, können jetzt bis zu 2048 angefordert werden, indem das Limit für maxTextureArrayLayers verwendet wird. Weitere Informationen finden Sie im folgenden Beispiel und in Problem 42241514.
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 Puffer-Uploads für das Vulkan-Backend
Beim Aufrufen der Methode „writeBuffer()“ der GPUQueue für das Vulkan-Backend ist jetzt ein schneller Pfad verfügbar. Die Daten können jetzt direkt in den Zielpuffer geschrieben werden, sodass keine zusätzliche Kopie und Synchronisierung erforderlich ist. Durch diese Optimierung wird der Arbeitsspeicher-Traffic reduziert, der zum Hochladen von Daten auf die GPU erforderlich ist.
Für die Optimierung des schnellen Pfads muss der Arbeitsspeicher des Puffers für den Host sichtbar sein und es dürfen keine ausstehenden GPU-Vorgänge darauf ausgeführt werden. Weitere Informationen finden Sie in Problem 42242084.
Verbesserungen bei der Shader-Kompilierungszeit
Das Chrome-Team verbessert die Effizienz von Tint, dem Compiler der WebGPU-Shader-Sprache. Tint ändert derzeit den abstrakten Syntaxbaum (Abstract Syntax Tree, AST) des Shader-Codes mehrmals, bevor Maschinencode generiert wird. Dieser Prozess ist auf einigen Plattformen ressourcenintensiv. Um dies zu optimieren, wird eine neue Zwischenrepräsentation (Intermediate Representation, IR) eingeführt, zusammen mit neu gestalteten Backends, die sie verwenden. Diese Änderung soll die Shader-Kompilierung beschleunigen.
Diese Verbesserungen, die bereits auf Android verfügbar sind, werden schrittweise auf ChromeOS-Geräte ausgeweitet, die WebGPU mit dem Vulkan-Backend unterstützen. Weitere Informationen finden Sie in Problem 42250751.
Übermittelte Befehlspuffer müssen eindeutig sein
Jeder GPUCommandBuffer, der mit der submit() Methode an die GPUQueue gesendet wird, muss eindeutig sein. Andernfalls wird ein Validierungsfehler generiert. Dies war ein Spezifikationsfehler. Weitere Informationen finden Sie in 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.
Dawn-Updates
Der C++-Wrapper webgpu_cpp.h ist jetzt nur noch ein Header, was die Verwendung vereinfacht und die Integration mit alternativen C++-Wrappern erleichtert. Weitere Informationen finden Sie in Problem 40195122.
Die webgpu.h C API macht das Konzept von Swapchain-Objekten nicht mehr verfügbar. Diese Änderung soll die Übereinstimmung mit der JavaScript API verbessern. Die interne Konfiguration erfolgt jetzt ü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. Weitere Informationen finden Sie in Problem 42241264.
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 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 Methoden „writeBuffer“ und „writeTexture“
- Dawn-Updates
Chrome 143
- Texturkomponenten-Swizzle
- Entfernung der Verwendung von schreibgeschützten bgra8unorm-Speichertexturen
- Dawn-Updates
Chrome 142
Chrome 141
- Tint IR abgeschlossen
- Analyse des Ganzzahlbereichs im WGSL-Compiler
- SPIR-V 1.4-Update für das Vulkan-Backend
- Dawn-Updates
Chrome 140
- Geräteanfragen belegen Adapter
- Kurzform für die Verwendung von Texturen, wenn Texturansichten verwendet werden
- WGSL textureSampleLevel unterstützt 1D-Texturen
- Verwendung von schreibgeschützten bgra8unorm-Speichertexturen eingestellt
- Entfernung des GPUAdapter-Attributs „isFallbackAdapter“
- Dawn-Updates
Chrome 139
- Unterstützung von 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 bei den Größenanforderungen für Puffer, die bei der Erstellung zugeordnet werden
- Architekturbericht für aktuelle GPUs
- Entfernung des GPUAdapter-Attributs „isFallbackAdapter“
- Dawn-Updates
Chrome 137
- Texturansicht für die externeTextur-Bindung verwenden
- Puffer ohne Angabe von Offsets und Größe kopieren
- WGSL workgroupUniformLoad mit Zeiger auf Atomic
- GPUAdapterInfo-Attribut „powerPreference“
- Entfernung des GPURequestAdapterOptions-Attributs „compatibilityMode“
- Dawn-Updates
Chrome 136
- GPUAdapterInfo-Attribut „isFallbackAdapter“
- Verbesserungen bei 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 Rendering-Ziele hinausgehen
- Einfacherer Zugriff auf den experimentellen Kompatibilitätsmodus unter Android
- Entfernung des Limits für maxInterStageShaderComponents
- Dawn-Updates
Chrome 134
- Verbesserung von Machine Learning-Arbeitslasten mit Untergruppen
- Entfernung der Unterstützung von filterbaren Texturtypen mit Gleitkommazahlen als mischbar
- Dawn-Updates
Chrome 133
- Zusätzliche unorm8x4-bgra- und 1-Komponenten-Vertex-Formate
- Anforderung unbekannter Limits mit undefiniertem Wert zulassen
- Änderungen bei den WGSL-Ausrichtungsregeln
- WGSL-Leistungssteigerungen mit „discard“
- VideoFrame displaySize für externe Texturen verwenden
- Bilder mit nicht standardmäßigen Ausrichtungen mit „copyExternalImageToTexture“ verarbeiten
- Verbesserung der Entwicklerfreundlichkeit
- Kompatibilitätsmodus mit „featureLevel“ aktivieren
- Bereinigung experimenteller Untergruppenfunktionen
- Limit für maxInterStageShaderComponents 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 löst JavaScript-Fehler aus
- Einschränkungen für Sampler-Filterung auf Texturen
- Erweiterte Experimente mit Untergruppen
- Verbesserung der Entwicklerfreundlichkeit
- 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 für die Shader-Modul-Kompilierung „strict math“
- Entfernung von GPUAdapter requestAdapterInfo()
- Dawn-Updates
Chrome 130
- Mischen mit zwei Quellen
- Verbesserungen bei der Shader-Kompilierungszeit unter Metal
- Einstellung von GPUAdapter requestAdapterInfo()
- 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
- Ausblenden der Entwicklertools-Warnung für nicht erfasste Fehler, wenn preventDefault
- WGSL-Interpolation zuerst und entweder
- Dawn-Updates
Chrome 127
- Experimentelle Unterstützung für OpenGL ES unter Android
- GPUAdapter-Attribut „info“
- Verbesserungen bei der WebAssembly-Interoperabilität
- Verbesserte Fehler bei der Befehlscodierung
- Dawn-Updates
Chrome 126
- Limit für maxTextureArrayLayers erhöhen
- Optimierung des Puffer-Uploads für das Vulkan-Backend
- Verbesserungen bei 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 dem Kompatibilitätsmodus erhöhen (Funktion in Entwicklung)
- Limit für 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 Rendering-Durchläufen
- Standardmäßige Einstiegspunkte für Shader-Module
- Unterstützung von display-p3 als GPUExternalTexture-Farbraum
- Informationen zu Arbeitsspeicher-Heaps
- Dawn-Updates
Chrome 120
- Unterstützung für 16-Bit-Gleitkommawerte in WGSL
- Limits überschreiten
- Änderungen am Tiefen- und Schablonenstatus
- Updates für Adapterinformationen
- Quantisierung von Zeitstempelabfragen
- Bereinigung von Funktionen
Chrome 119
- Filterbare 32-Bit-Gleitkomma-Texturen
- unorm10-10-10-2-Vertex-Format
- rgb10a2uint-Texturformat
- Dawn-Updates
Chrome 118
- Unterstützung von 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 unterdrücken, wenn das Gerät verloren geht
- Updates für die Erstellung von SPIR-V-Shader-Modulen
- Verbesserung der Entwicklerfreundlichkeit
- Pipelines mit automatisch generiertem Layout im Cache speichern
- Dawn-Updates
Chrome 116
- WebCodecs-Integration
- Verlorenes Gerät, das von GPUAdapter
requestDevice()zurückgegeben wird - Reibungslose Videowiedergabe beibehalten, wenn
importExternalTexture()aufgerufen wird - Spezifikationskonformität
- Verbesserung der Entwicklerfreundlichkeit
- Dawn-Updates
Chrome 115
- Unterstützte WGSL-Spracherweiterungen
- Experimentelle Unterstützung für Direct3D 11
- Standardmäßig diskrete GPU bei Netzbetrieb verwenden
- Verbesserung der Entwicklerfreundlichkeit
- Dawn-Updates
Chrome 114
- JavaScript optimieren
- „getCurrentTexture()“ für nicht konfigurierte Canvas löst InvalidStateError aus
- WGSL-Updates
- Dawn-Updates