Neuerungen bei WebGPU (Chrome 122)

François Beaufort
François Beaufort

Die Anzahl der WebGPU-Funktionen mag dieses Mal etwas gering erscheinen, aber große Fortschritte stehen vor der Tür. Die nächsten Versionen enthalten Funktionen wie DP4a, schreibgeschützte und Lese-/Schreib-Speichertexturen, separate Steuerung von Schablonen- und Tiefenaspekten, Rendering auf 3D-Texturslices und Verbesserungen bei der Shader-Kompilierung.

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

Mit dem Kompatibilitätsmodus die Reichweite 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. Dadurch wird die Zugänglichkeit von WebGPU eingeschränkt, insbesondere auf Plattformen wie Windows (31% der Chrome-Nutzer haben kein D3D11.1+), Android (23% haben kein Vulkan 1.1+) und ChromeOS (Vulkan-Nutzung nimmt zu).

Das Chrome-Team arbeitet an einem Kompatibilitätsmodus in WebGPU, um dieses Problem zu beheben. Dabei wird eine leicht eingeschränkte Version von WebGPU angeboten, 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 vollständig gültige WebGPU-Anwendungen. Bei Geräten ohne Unterstützung für den Kompatibilitätsmodus wird nahtlos auf den WebGPU-Kernadapter umgestellt, wodurch eine breite Nutzbarkeit gewährleistet wird.

Diagramm des WebGPU-Kompatibilitätsmodus.
WebGPU-Kompatibilitätsmodus – erweiterte Reichweite.

Sehen Sie sich den Vorschlag an und kommentieren Sie ihn, wenn Sie Fragen haben.

Limit für maxVertexAttributes erhöhen

Die maximale Anzahl von Attributen in allen Puffern beim Erstellen einer GPURenderPipeline beträgt standardmäßig 16. Wenn unterstützt, können jetzt bis zu 30 angefordert werden, indem das Limit für maxVertexAttributes verwendet wird. Siehe das folgende Beispiel und das Problem 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

Ein neuer Instanz-Toggle mit dem Namen „expose_wgsl_experimental_features“ wurde hinzugefügt, damit die Instanz nur die experimentellen WGSL-Funktionen und nicht die unsicheren Funktionen verfügbar macht. So können sichere experimentelle WGSL-Funktionen verwendet werden, ohne den Toggle „allow_unsafe_apis“ aktivieren zu müssen. Siehe Problem dawn:2260.

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

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

Dies sind nur einige der wichtigsten Highlights. Eine vollständige Liste der Commits finden Sie hier.

Neues in WebGPU

Eine Liste aller Themen, die in der Reihe „Neues in WebGPU“ behandelt wurden.

Chrome 147–148

Chrome 146

Chrome 145

Chrome 144

Chrome 143

Chrome 142

Chrome 141

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