Neuigkeiten bei WebGPU (Chrome 146)

François Beaufort
François Beaufort

Veröffentlicht: 25. Februar 2026

WebGPU-Kompatibilitätsmodus auf OpenGL ES 3.1 unterstützen

WebGPU ist zwar auf moderne Grafik-APIs wie Vulkan, Metal und D3D12 ausgerichtet, viele Nutzer haben jedoch ältere Hardware, die diese Standards nicht unterstützt. Um diese Lücke zu schließen und eine breite Zugänglichkeit zu gewährleisten, führt Chrome eine neue Opt-in-Funktion namens „Kompatibilitätsmodus“ ein.

In diesem Modus können Sie WebGPU auf älteren Grafik-APIs wie OpenGL ES 3.1 ausführen. Wenn Sie auf eine leicht eingeschränkte Teilmenge der WebGPU-Spezifikation abzielen, ist Ihre Web-App für alle zugänglich, von den neuesten Gaming-PCs bis hin zu älteren Laptops und Mobilgeräten. Das Team beginnt mit Android und prüft die Unterstützung für andere Geräte wie ChromeOS mit OpenGL ES 3.1 und Windows mit Direct3D 11.

Bei vielen Web-Apps können Sie den Kompatibilitätsmodus aktivieren, indem Sie featureLevel: "compatibility" übergeben, wenn Sie requestAdapter() aufrufen. Wenn Ihr Gerät Core WebGPU unterstützt, gibt Chrome einen Core-kompatiblen Adapter zurück. Ihre Web-App weiß jedoch, dass sie die Kompatibilitätsgrenzen einhalten muss, es sei denn, sie aktiviert die Funktion "core-features-and-limits" (oder alle verfügbaren Funktionen). Bei komplexeren Anwendungen sind möglicherweise geringfügige Anpassungen erforderlich, damit sie den Einschränkungen des Modus entsprechen.

// Request a GPUAdapter in compatibility mode.
const adapter = await navigator.gpu.requestAdapter({ featureLevel: "compatibility" });
const device = await adapter.requestDevice();

Ausführliche Informationen zu den spezifischen architektonischen Einschränkungen dieses Modus finden Sie im WebGPU Fundamentals Guide. Außerdem unterstützen alle WebGPU-Beispiele jetzt den Kompatibilitätsmodus. Sie können auch die Absichtserklärung zum Versand lesen.

Vorübergehende Anhänge

Mit dem neuen TRANSIENT_ATTACHMENT-Flag „GPUTextureUsage“ können Sie speichereffiziente Anhänge erstellen. So können Renderpass-Vorgänge im Kachelspeicher verbleiben, wodurch VRAM-Traffic und VRAM-Zuweisung für die Texturen vermieden werden.

Wenn Sie eine Textur als transient (oder „memoryless“) deklarieren, weiß die GPU, dass sie den Inhalt der Textur nur vorübergehend benötigt, nämlich nur innerhalb des aktuellen Renderings. Da der Inhalt der Textur nach dem Rendervorgang verworfen wird, muss der Treiber möglicherweise überhaupt keinen VRAM dafür zuweisen.

Im folgenden Beispiel wird gezeigt, wie eine temporäre Textur erstellt wird.

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

if ('TRANSIENT_ATTACHMENT' in GPUTextureUsage) {

  const transientTexture = device.createTexture({
    size: [42, 42],
    // The TRANSIENT_ATTACHMENT flag indicates the texture content is temporary,
    // potentially keeping it in fast on-chip memory.
    usage: GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.TRANSIENT_ATTACHMENT,
    format: 'rgba8unorm',
  });
}

Weitere Informationen finden Sie im Hello Triangle MSAA-WebGPU-Beispiel und in der Absicht zur Auslieferung.

WGSL-Erweiterung „texture_and_sampler_let“

Mit der WGSL-Spracherweiterung texture_and_sampler_let können Sie Textur- oder Sampler-Variablen einer let in einem WGSL-Shader zuweisen. Diese Funktion bietet derzeit einen alternativen Benennungsmechanismus und bereitet auf die bindless-Unterstützung vor, bei der Methoden, die Texturen oder Sampler zurückgeben, direkt in lokalen Variablen gespeichert werden können.

Sehen Sie sich das folgende Beispiel und die Absicht zur Auslieferung an.

@group(0) @binding(0) var tex: texture_2d<f32>;
@group(1) @binding(0) var store : texture_storage_2d<r32float, read_write>;

@fragment fn main() {
    let a = tex;
    var res: vec4f = textureLoad(a, vec2i(1i), 0);

    textureStore(store, vec2i(0i), res);
}

Änderungen bei Dawn

Die folgenden neuen Limitstufen sind verfügbar:

  • maxStorageBuffersPerShaderStage unterstützt bis zu 16. Weitere Informationen finden Sie unter Problem 366151398.

  • maxSampledTexturesPerShaderStage unterstützt bis zu 48. Siehe Problem 475255737.

Die SPIR‑V-Validierung ist auf Android-Geräten standardmäßig aktiviert, um eine zusätzliche Sicherheitsebene zu bieten und Treiberinstabilität durch fehlerhafte Eingaben zu verhindern. Weitere Informationen finden Sie unter Problem 473526182.

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

Neu bei WebGPU

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

Chrome 155–156

Chrome 153–154

Chrome 151–152

Chrome 149–150

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