Neuerungen bei WebGPU (Chrome 122)

François Beaufort
François Beaufort

Die Anzahl der WebGPU-Funktionen mag diesmal etwas gering erscheinen, aber es stehen große Fortschritte bevor. Die nächsten Releases enthalten Funktionen wie DP4a, Lese- und Schreibspeichertexturen, separate Steuerung von Stencil und Tiefenbereich, Rendering in 3D-Texturschichten und Verbesserungen bei der Shader-Kompilierung.

In der Zwischenzeit können Sie sich darüber informieren, wie Sie Ihre Web-KI-Modelltests mit WebGPU- und WebGL-Unterstützung in der headless Chrome-Version optimieren, und warum WebGPU möglicherweise deaktiviert ist oder in Chrome nicht funktioniert.

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

WebGPU passt gut zu modernen Grafik-APIs (Vulkan, Metal und D3D12), aber einige Geräte unterstützen diese nicht. Dies schränkt die Verfügbarkeit von WebGPU ein, insbesondere auf Plattformen wie Windows (31% der Chrome-Nutzer haben keine D3D11.1 oder höher), Android (23% haben keine Vulkan 1.1 oder höher) und ChromeOS (die Vulkan-Akzeptanz steigt).

Das Chrome-Team arbeitet an einem Kompatibilitätsmodus in WebGPU, um dieses Problem zu beheben. Dazu wird eine etwas eingeschränkte Version von WebGPU angeboten, 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, bleiben vollwertige WebGPU-Anwendungen. Auf Geräten ohne Unterstützung des Kompatibilitätsmodus wird standardmäßig der WebGPU-Kernadapter verwendet, was eine breite Nutzerfreundlichkeit ermöglicht.

Diagramm des WebGPU-Kompatibilitätsmodus.
Der WebGPU-Kompatibilitätsmodus wurde erweitert.

Weitere Informationen finden Sie im Vorschlag und im Kommentar.

Limit für maxVertexAttributes erhöhen

Die maximale Anzahl von Attributen insgesamt in Buffers beim Erstellen einer GPURenderPipeline beträgt standardmäßig 16. Mit dem Grenzwert maxVertexAttributes können jetzt bis zu 30 angefordert werden, sofern unterstützt. Weitere Informationen finden Sie im folgenden Beispiel und in Issue dawn:2223.

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 eine neue Instanz-Ein/Aus-Schaltfläche namens „expose_wgsl_experimental_features“ hinzugefügt, mit der die Instanz nur die experimentellen WGSL-Funktionen, aber nicht die unsicheren, freigibt. So können sichere experimentelle WGSL-Funktionen verwendet werden, ohne dass die Ein/Aus-Schaltfläche „allow_unsafe_apis“ aktiviert werden muss. Siehe Problem dawn:2260.

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

  • GPUSupportedFeatures::getSize() wurde hinzugefügt.
  • GPUAdapter Die Funktion „Alte Daten“ wurde implementiert.
  • GPUInternalError wird jetzt korrekt für Geräte erfasst.
  • Attribute können jetzt aufgezählt werden.

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

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