Experimenteller Support für OpenGL ES auf Android
Sie können jetzt über das OpenGL ES-Backend auf eine GPUAdapter
zugreifen, wenn Sie in Chrome für Android den experimentellen WebGPU-Kompatibilitätsmodus anfordern. Das ist besonders nützlich für Android-Geräte, die Vulkan 1.1 oder höher nicht unterstützen. Weitere Informationen finden Sie im folgenden Beispiel und in Issue dawn:1545.
// Request a GPUAdapter in compatibility mode
const adapter = await navigator.gpu.requestAdapter({ compatibilityMode: true });
Da sich diese Funktion noch in der Testphase befindet, müssen Sie die folgenden Schritte ausführen:
- Aktivieren Sie die folgenden Chrome-Flags: „Unsafe WebGPU Support“, „WebGPU Developer Features“ und „Enable command line on non-rooted devices“.
- Aktivieren Sie das USB-Debugging auf Ihrem Android-Gerät.
- Verbinden Sie Ihr Android-Gerät mit Ihrer Workstation, führen Sie
adb shell 'echo "_ --use-webgpu-adapter=opengles" > /data/local/tmp/chrome-command-line'
aus, um das OpenGL ES-Backend anstelle von Vulkan zu verwenden, und starten Sie Chrome neu.
GPUAdapter-Attribut „info“
Identifikationsinformationen zu einem Adapter können jetzt synchron mit dem Attribut „GPUAdapter info
“ 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. Weitere Informationen finden Sie im folgenden Beispiel, im Chrome-Status und in 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 bei der WebAssembly-Interoperabilität
Da WebAssembly-Haufen 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 Fehlermeldungen beim Befehls-Encoder
Einige von Befehlscodierungsprogrammen ausgelöste Validierungsfehler werden jetzt mit verbesserten Kontextinformationen versehen. Wenn Sie beispielsweise versucht haben, einen Compute-Pass zu starten, während ein Render-Pass noch geöffnet war, führte dies zum folgenden 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 zwar der Grund für den Fehler beschrieben, aber nicht angegeben, welcher Aufruf tatsächlich den Validierungsfehler verursacht hat. Der folgende Fehler zeigt die verbesserte Fehlermeldung mit dem Befehl, 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 stellt nicht mehr wgpuSurfaceGetPreferredFormat()
bereit, das C-Äquivalent von Dawns wgpu::Surface::GetPreferredFormat()
. Verwenden Sie stattdessen wgpu::Surface::GetCapabilities()
, um eine Liste der unterstützten Formate aufzurufen, und dann formats[0]
, um das für diese Oberfläche bevorzugte Texturformat abzurufen. Bis dahin wird beim Aufrufen von wgpu::Surface::GetPreferredFormat()
eine Warnung zur Einstellung ausgegeben. Siehe Problem 290.
Die unterstützten Texturnutzungen einer Oberfläche sind jetzt über wgpu::SurfaceCapabilities::usages
verfügbar, wenn wgpu::Surface::GetCapabilities()
aufgerufen wird. Sie müssen immer wgpu::TextureUsage::RenderAttachment
enthalten. Siehe Problem 301.
Dies sind nur einige der wichtigsten Highlights. Eine vollständige Liste der Commits
Das ist neu bei WebGPU
Eine Liste aller Themen, die in der Reihe Was ist neu in WebGPU? behandelt wurden.
Chrome 131
- Clip-Abstände in WGSL
- GPUCanvasContext getConfiguration()
- Punkt- und Linienprimitive dürfen keine Tiefenverzerrung haben.
- Integrierte Funktionen zum inklusiven Scan für Untergruppen
- Experimentelle Unterstützung für indirekte Multi-Draw-Anweisungen
- Shader-Modul-Kompilierungsoption „strict math“
- GPUAdapter-Methode „requestAdapterInfo()“ entfernen
- Dawn-Updates
Chrome 130
- Zusammenführen von zwei Quellen
- Schnellere Zusammenstellung von Metal-Songs mit schnellerer Zusammenstellung
- Einstellung der GPUAdapter-Methode „requestAdapterInfo()“
- Dawn-Updates
Chrome 129
Chrome 128
- Mit Untergruppen experimentieren
- Einstellung der Tiefenverzerrung für Linien und Punkte eingestellt
- Entwicklertools-Warnung für nicht erfassten Fehler ausblenden, wenn „preventDefault“ festgelegt ist
- WGSL interpoliert zuerst die Stichprobe und
- Updates zur Morgendämmerung
Chrome 127
- Experimentelle Unterstützung von OpenGL ES unter Android
- Attribut „info“ von „GPUAdapter“
- Verbesserungen bei der WebAssembly-Interoperabilität
- Verbesserte Fehlermeldungen beim Befehls-Encoder
- Dawn-Updates
Chrome 126
- Limit für „maxTextureArrayLayers“ erhöht
- Optimierung des Pufferuploads für das Vulkan-Backend
- Verbesserte Shader-Kompilierungszeiten
- Eingereichte Befehlspuffere müssen eindeutig sein.
- Dawn-Updates
Chrome 125
Chrome 124
- Lese- und Lese-/Schreibspeichertextur
- Unterstützung für Dienst- und freigegebene Worker
- Neue Attribute für Adapterinformationen
- Diverse Fehlerkorrekturen
- Dawn-Updates
Chrome 123
- Unterstützung der integrierten DP4a-Funktionen in WGSL
- Uneingeschränkte Zeigerparameter in WGSL
- Syntax-Optimierung für die Dereferenzierung von Kompositen in WGSL
- Separater schreibgeschützter Status für Stencil- und Tiefenansichten
- Updates zur Morgendämmerung
Chrome 122
- Reichweite mit dem Kompatibilitätsmodus erhöhen (Funktion in Entwicklung)
- Limit für maxVertexAttributes erhöhen
- Dawn-Updates
Chrome 121
- Unterstützung von WebGPU auf Android-Geräten
- DXC anstelle von FXC für die Shaderkompilierung unter Windows verwenden
- Zeitstempelabfragen in Compute- und Rendering-Passes
- Standardeinstiegspunkte in Shadermodule
- Unterstützung von display-p3 als GPUExternalTexture-Farbraum
- Informationen zu Speicherheaps
- Updates zur Morgendämmerung
Chrome 120
- Unterstützung von 16-Bit-Gleitkommawerten in WGSL
- Grenzen überschreiten
- Änderungen am Status der Tiefenschablonen
- Aktualisierte Informationen zu Adaptern
- Quantisierung von Zeitstempelabfragen
- Funktionen für den Frühjahrsputz
Chrome 119
- Filterbare 32-Bit-Float-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 Speichertextur
- Dawn-Updates
Chrome 117
- Vertex-Buffer zurücksetzen
- Bindungsgruppe aufheben
- Fehler bei der Erstellung einer asynchronen Pipeline bei verlorenem Gerät ignorieren
- Aktualisierungen beim Erstellen von SPIR-V-Shadermodulen
- Entwicklererfahrung verbessern
- Pipelines mit automatisch generiertem Layout im Cache speichern
- Updates zur Morgendämmerung
Chrome 116
- WebCodecs-Integration
- Verlorenes Gerät, das von GPUAdapter
requestDevice()
zurückgegeben wurde - Videowiedergabe bei Aufruf von
importExternalTexture()
flüssig halten - Konformität mit Spezifikationen
- Entwicklererfahrung verbessern
- Dawn-Updates
Chrome 115
- Unterstützte WGSL-Spracherweiterungen
- Experimentelle Unterstützung für Direct3D 11
- Unterstützung für diskrete GPU standardmäßig bei Wechselstromversorgung
- Entwicklerfreundlichkeit verbessern
- Updates zur Morgendämmerung
Chrome 114
- JavaScript optimieren
- Bei nicht konfiguriertem Canvas wird bei getCurrentTexture() ein InvalidStateError geworfen
- Wichtige Informationen von WGSL
- Dawn-Updates