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 in Chrome möglicherweise deaktiviert ist oder 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 bietet es eine etwas eingeschränkte Version von WebGPU an, die auf älteren APIs wie D3D11 und OpenGL ES funktioniert. Dadurch wird die potenzielle Nutzerbasis von WebGPU erweitert.

Wichtig: Anwendungen, die den Kompatibilitätsmodus verwenden, bleiben voll funktionsfähige 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.
Mehr Reichweite durch den WebGPU-Kompatibilitätsmodus

Sehen Sie sich das Angebot an und kommentieren Sie, wenn Sie Fragen haben.

Limit für maxVertexAttributes erhöhen

Die maximale Anzahl von Attributen insgesamt in Buffers beim Erstellen einer GPURenderPipeline beträgt standardmäßig 16. Es ist jetzt möglich, über das Limit maxVertexAttributes, sofern unterstützt, bis zu 30 Anfragen anzufordern. 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.

Hier werden nur einige der wichtigsten Vorteile behandelt. Eine vollständige Liste der Commits

Das ist neu bei WebGPU

Eine Liste aller behandelten Themen der Reihe What's New in WebGPU.

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