Neuerungen bei WebGPU (Chrome 122)

François Beaufort
François Beaufort

Die Anzahl der WebGPU-Funktionen mag dieses Mal etwas gering erscheinen, aber wichtige Fortschritte stehen vor der Tür. Die nächsten Releases werden Funktionen wie DP4a, schreibgeschützte und Lese-/Schreibspeicher-Texturen, separate Schablonen- und Tiefensteuerung, Rendern auf 3D-Textur-Slices und Verbesserungen bei der Shader-Kompilierung enthalten.

In der Zwischenzeit können Sie sich ansehen, wie Sie das Testen von Web-KI-Modellen mit WebGPU- und WebGL-Unterstützung in der monitorlosen Chrome-Version optimieren und warum WebGPU in Chrome möglicherweise deaktiviert ist oder nicht funktioniert.

Reichweite mit dem Kompatibilitätsmodus erhöhen (Funktion in der Entwicklung)

WebGPU ist gut auf moderne Grafik-APIs (Vulkan, Metal und D3D12) abgestimmt, aber einige Geräte unterstützen diese nicht. Dies schränkt die Zugänglichkeit von WebGPU ein, insbesondere auf Plattformen wie Windows (31% der Chrome-Nutzer haben kein D3D11.1+), Android (23% haben kein Vulkan 1.1+) und ChromeOS (Vulkan wird immer häufiger verwendet).

Das Chrome-Team arbeitet an einem Kompatibilitätsmodus in WebGPU, um dieses Problem zu beheben. Dieser Modus bietet eine leicht eingeschränkte Version von WebGPU, die mit älteren APIs wie D3D11 und OpenGL ES funktioniert. Dadurch wird die potenzielle Nutzerbasis von WebGPU erweitert.

Wichtig: Anwendungen, die den Kompatibilitätsmodus verwenden, sind weiterhin gültige WebGPU-Anwendungen. Geräte ohne Unterstützung für den Kompatibilitätsmodus werden nahtlos auf den WebGPU-Kernadapter zurückgesetzt, was eine breite Nutzbarkeit gewährleistet.

Diagramm des WebGPU-Kompatibilitätsmodus.
Erweiterte Reichweite des WebGPU-Kompatibilitätsmodus
:

Weitere Informationen finden Sie im Vorschlag und im Kommentar.

Limit für maxVertexAttributes erhöhen

Die maximale Anzahl von Attributen insgesamt über alle Puffer hinweg beträgt beim Erstellen einer GPURenderPipeline standardmäßig 16. Wenn die Funktion unterstützt wird, können Sie jetzt mit dem Limit maxVertexAttributes bis zu 30 Attribute anfordern. Sehen Sie sich das folgende Beispiel und Problem dawn:2223 an.

const adapter = await navigator.gpu.requestAdapter();

if (adapter.limits.maxVertexAttributes < 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 vertex attributes.
const device = await adapter.requestDevice({
  requiredLimits: { maxVertexAttributes: 30 },
});

Dawn-Updates

Es wurde ein neuer Instanz-Schalter namens „expose_wgsl_experimental_features“ hinzugefügt, damit die Instanz nur die experimentellen WGSL-Funktionen, aber nicht die unsicheren Funktionen bereitstellt. So können sichere experimentelle WGSL-Funktionen verwendet werden, ohne dass der Schalter „allow_unsafe_apis“ aktiviert werden muss. Siehe Problem dawn:2260.

Zu den jüngsten Verbesserungen der Dawn-Bindungen für Node.js gehören die folgenden:

  • GPUSupportedFeatures::getSize() wurde hinzugefügt.
  • Die Aktualität von GPUAdapter wurde implementiert.
  • GPUInternalError wird jetzt korrekt für Geräte gemeldet.
  • Attribute können jetzt aufgezählt werden.

Dies sind nur einige der wichtigsten Neuerungen. Vollständige Liste der Commits

Neues zu WebGPU

Eine Liste mit allen Themen, die in der Reihe Neu in WebGPU behandelt wurden.

Chrome 140

Chrome 139

Chrome 138

Chrome 137

Chrome 136

Chrome 135

Chrome 134

Chrome 133

Chrome 132

Chrome 131

Chrome 130

Chrome 129

Chrome 128

Chrome 127

Chrome 126

Chrome 125

Chrome 124

Chrome 123

Chrome 122

Chrome 121

Chrome 120

Chrome 119

Chrome 118

Chrome 117

Chrome 116

Chrome 115

Chrome 114

Chrome 113