Experimentelle Unterstützung von OpenGL ES unter Android
Du kannst jetzt über das OpenGL ES-Backend auf ein GPUAdapter
zugreifen, wenn du den experimentellen WebGPU-Kompatibilitätsmodus in Chrome für Android anforderst. Das ist besonders nützlich für Android-Geräte, die Vulkan 1.1 oder höher nicht unterstützen. Sehen Sie sich das folgende Beispiel und issue dawn:1545 an.
// Request a GPUAdapter in compatibility mode
const adapter = await navigator.gpu.requestAdapter({ compatibilityMode: true });
<ph type="x-smartling-placeholder">
Da sich diese Funktion noch in der Testphase befindet, sind folgende Schritte erforderlich:
- Aktiviere die folgenden Chrome-Flags: „Unsafe WebGPU Support“, „WebGPU Developer Features“ und „Enable Command line on non-rooted devices“.
- USB-Debugging auf Ihrem Android-Gerät aktivieren
- Verbinde dein Android-Gerät mit deiner Workstation, führe
adb shell 'echo "_ --use-webgpu-adapter=opengles" > /data/local/tmp/chrome-command-line'
aus, um das OpenGL ES-Back-End gegenüber Vulkan vorzuziehen, und starte Chrome neu.
GPUAdapter-Informationsattribut
Mit dem GPUAdapter-Attribut info
können jetzt synchron Informationen zu einem Adapter abgerufen werden. Bisher war das Aufrufen der asynchronen GPUAdapter-Methode requestAdapterInfo()
die einzige Möglichkeit, Adapterinformationen abzurufen. requestAdapterInfo()
wurde jedoch aus der WebGPU-Spezifikation entfernt und wird im Laufe des Jahres in Chrome entfernt, damit Webentwicklern genügend Zeit für die erforderliche Umstellung bleibt. Beispiele: Chrome-Status und Problem 335383516.
const adapter = await navigator.gpu.requestAdapter();
const info = adapter.info;
// During the transition period, you can use the following:
// const info = adapter.info || await adapter.requestAdapterInfo();
console.log(`Vendor: ${info.vendor}`); // "arm"
console.log(`Architecture: ${info.architecture}`); // "valhall"
Verbesserungen der WebAssembly-Interoperabilität
Damit WebAssembly-Heaps direkt an WebGPU übergeben werden, sind die Größen der folgenden BufferSource-Argumente nicht mehr auf 2 GB beschränkt: dynamicOffsetsData
in setBindGroup()
, Quelle data
in writeBuffer()
und Quelle data
Pin writeTexture()
. Siehe Nummer 339049388.
Verbesserte Fehler im Befehls-Encoder
Einige von Befehls-Encodern ausgelöste Validierungsfehler enthalten jetzt verbesserte Kontextinformationen. Der Versuch, einen Compute-Pass zu starten, während eine Rendering-Karte noch geöffnet war, führte beispielsweise zu folgendem Fehler.
Command cannot be recorded while [CommandEncoder (unlabeled)] is locked and [RenderPassEncoder (unlabeled)] is currently open.
at CheckCurrentEncoder (..\..\third_party\dawn\src\dawn\native\EncodingContext.h:106)
Hier wird der Grund für den Fehler beschrieben, aber nicht angegeben, welcher Aufruf tatsächlich den Validierungsfehler verursacht hat. Der folgende Fehler zeigt die verbesserte Meldung, die den Befehl enthält, der den Fehler ausgelöst hat. Siehe Änderung 192245.
Command cannot be recorded while [CommandEncoder (unlabeled)] is locked and [RenderPassEncoder (unlabeled)] is currently open.
- While encoding [CommandEncoder (unlabeled)].BeginComputePass([ComputePassDescriptor]).
Updates zur Morgendämmerung
Die C API webgpu.h macht wgpuSurfaceGetPreferredFormat()
nicht mehr verfügbar, das C-Äquivalent zu wgpu::Surface::GetPreferredFormat()
von Dawn. Verwende stattdessen wgpu::Surface::GetCapabilities()
, um die Liste der unterstützten Formate abzurufen, und formats[0]
, um das bevorzugte Texturformat für diese Oberfläche zu erhalten. In der Zwischenzeit wird beim Aufrufen von wgpu::Surface::GetPreferredFormat()
eine Einstellungswarnung ausgegeben. Siehe Problem 290.
Die unterstützten Texturverwendungen für eine Oberfläche sind jetzt über wgpu::SurfaceCapabilities::usages
verfügbar, wenn wgpu::Surface::GetCapabilities()
aufgerufen wird. Sie enthalten immer wgpu::TextureUsage::RenderAttachment
. Siehe Problem 301.
Hier werden nur einige der wichtigsten Vorteile behandelt. Vollständige Liste der Commits
Das ist neu bei WebGPU
Eine Liste aller behandelten Themen der Reihe What's New in WebGPU.
Chrome 128
- Tests mit Untergruppen
- Einstellung der Tiefenverzerrung für Linien und Punkte verwerfen
- Entwicklertools-Warnung für nicht erfassten Fehler ausblenden, wenn „preventDefault“ festgelegt ist
- WGSL-interpolierte Stichprobenerhebung
- Updates zur Morgendämmerung
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