Veröffentlicht am 25. Februar 2026
Unterstützung des WebGPU-Kompatibilitätsmodus für OpenGL ES 3.1
WebGPU ist zwar auf moderne Grafik-APIs wie Vulkan, Metal und D3D12 ausgerichtet, aber viele Nutzer haben ä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 optionale Funktion ein: den Kompatibilitätsmodus.
In diesem Modus können Sie WebGPU auf älteren Grafik-APIs wie OpenGL ES 3.1 ausführen. Wenn Sie auf eine etwas 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, prüft aber auch 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" beim Aufruf von requestAdapter() übergeben. Wenn Ihr Gerät Core WebGPU unterstützt, gibt Chrome einen Core-fähigen Adapter zurück. Ihre Web-App bleibt jedoch innerhalb der Kompatibilitätslimits, es sei denn, sie aktiviert die "core-features-and-limits" Funktion (oder aktiviert alle verfügbaren Funktionen). Bei komplexeren Anwendungen sind möglicherweise kleinere Anpassungen erforderlich, um die Einschränkungen des Modus zu erfüllen.
// 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 Leitfaden zu den Grundlagen von WebGPU. Außerdem unterstützen jetzt alle WebGPU-Beispiele den Kompatibilitätsmodus. Sie können auch die Absicht zur Auslieferung lesen.
Vorübergehende Anhänge
Mit dem neuen Flag TRANSIENT_ATTACHMENT von GPUTextureUsage können Sie speichereffiziente Anhänge erstellen. So können Renderpass-Vorgänge im Kachelspeicher bleiben, wodurch VRAM-Traffic vermieden und die VRAM-Zuweisung für die Texturen umgangen werden kann.
Wenn Sie eine Textur als vorübergehend (oder „speicherlos“) deklarieren, weiß die GPU, dass sie den Inhalt der Textur nur vorübergehend benötigt – genauer gesagt nur innerhalb des aktuellen Renderpasses. Da der Inhalt der Textur nach dem Renderpass verworfen wird, muss der Treiber möglicherweise überhaupt keinen VRAM dafür zuweisen.
Im folgenden Beispiel wird gezeigt, wie Sie eine vorübergehende Textur erstellen.
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 WebGPU-Beispiel „Hello Triangle MSAA“ 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 einem let in einem WGSL-Shader zuweisen. Diese Funktion bietet derzeit einen alternativen Benennungsmechanismus und bereitet 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);
}
Dawn-Updates
Die folgenden neuen Limitstufen sind verfügbar:
maxStorageBuffersPerShaderStageunterstützt bis zu 16. Siehe Problem 366151398.maxSampledTexturesPerShaderStageunterstü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. Siehe Problem 473526182.
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
- Unterstützung des WebGPU-Kompatibilitätsmodus für OpenGL ES 3.1
- Vorübergehende Anhänge
- WGSL-Erweiterung „texture_and_sampler_let“
- Dawn-Updates
Chrome 145
- WGSL-Erweiterung „subgroup_uniformity“
- Experimentelle synchrone Pufferzuordnung in Workern
- Dawn-Updates
Chrome 144
- WGSL-Erweiterung „subgroup_id“
- WGSL-Erweiterung „uniform_buffer_standard_layout“
- WebGPU unter Linux
- Schnellere writeBuffer- und writeTexture-Funktionen
- Dawn-Updates
Chrome 143
- Texturkomponenten-Swizzle
- Entfernung der schreibgeschützten Nutzung von bgra8unorm-Speichertexturen
- Dawn-Updates
Chrome 142
Chrome 141
- Tint IR abgeschlossen
- Analyse des Ganzzahlbereichs im WGSL-Compiler
- SPIR-V 1.4-Update für das Vulkan-Backend
- Dawn-Updates
Chrome 140
- Geräteanfragen verbrauchen Adapter
- Kurzform für die Verwendung von Texturen, wenn Texturansichten verwendet werden
- WGSL-Funktion „textureSampleLevel“ unterstützt 1D-Texturen
- Einstellung der schreibgeschützten Nutzung von bgra8unorm-Speichertexturen
- Entfernung des GPUAdapter-Attributs „isFallbackAdapter“
- Dawn-Updates
Chrome 139
- Unterstützung von 3D-Texturen für komprimierte BC- und ASTC-Formate
- Neue Funktion „core-features-and-limits“
- Ursprungstest für den WebGPU-Kompatibilitätsmodus
- Dawn-Updates
Chrome 138
- Kurzform für die Verwendung von Puffern als Bindungsressource
- Änderungen der Größenanforderungen für Puffer, die bei der Erstellung zugeordnet werden
- Architekturbericht für aktuelle GPUs
- Einstellung des GPUAdapter-Attributs „isFallbackAdapter“
- Dawn-Updates
Chrome 137
- Verwendung von Texturansichten für die Bindung von externen Texturen
- Kopieren von Puffern ohne Angabe von Offsets und Größe
- WGSL-Funktion „workgroupUniformLoad“ mit Zeiger auf Atom
- GPUAdapterInfo-Attribut „powerPreference“
- Entfernung des GPURequestAdapterOptions-Attributs „compatibilityMode“
- Dawn-Updates
Chrome 136
- GPUAdapterInfo-Attribut „isFallbackAdapter“
- Verbesserungen der Shader-Kompilierungszeit unter D3D12
- Canvas-Bilder speichern und kopieren
- Aufhebung der Einschränkungen des Kompatibilitätsmodus
- Dawn-Updates
Chrome 135
- Erstellung von Pipeline-Layouts mit Null-Bindungsgruppen-Layout zulassen
- Ansichtsfenster dürfen über die Grenzen der Renderziele hinausgehen
- Einfacherer Zugriff auf den experimentellen Kompatibilitätsmodus unter Android
- Entfernung des Limits „maxInterStageShaderComponents“
- Dawn-Updates
Chrome 134
- Verbesserung von Arbeitslasten für maschinelles Lernen mit Untergruppen
- Entfernung der Unterstützung für filterbare Texturtypen vom Typ „float“ als mischbar
- Dawn-Updates
Chrome 133
- Zusätzliche unorm8x4-bgra- und 1-Komponenten-Vertex-Formate
- Anforderung unbekannter Limits mit undefiniertem Wert zulassen
- Änderungen der WGSL-Ausrichtungsregeln
- WGSL-Leistungssteigerungen mit „discard“
- Verwendung von VideoFrame-Attribut „displaySize“ für externe Texturen
- Verarbeitung von Bildern mit nicht standardmäßigen Ausrichtungen mit „copyExternalImageToTexture“
- Verbesserung der Entwicklerfreundlichkeit
- Aktivierung des Kompatibilitätsmodus mit „featureLevel“
- Bereinigung experimenteller Untergruppenfunktionen
- Einstellung des Limits „maxInterStageShaderComponents“
- Dawn-Updates
Chrome 132
- Verwendung von Texturansichten
- Mischen von 32-Bit-Float-Texturen
- GPUDevice-Attribut „adapterInfo“
- Konfiguration des Canvas-Kontexts mit ungültigem Format löst JavaScript-Fehler aus
- Filterung von Sampler-Einschränkungen für Texturen
- Erweiterte Experimente mit Untergruppen
- Verbesserung der Entwicklerfreundlichkeit
- Experimentelle Unterstützung für normalisierte 16-Bit-Texturformate
- Dawn-Updates
Chrome 131
- Entfernungen in WGSL beschneiden
- GPUCanvasContext.getConfiguration()
- Punkt- und Linienprimitive dürfen keine Tiefenverzerrung haben
- Inklusive Scan-Funktionen für Untergruppen
- Experimentelle Unterstützung für Multi-Draw Indirect
- Option „strict math“ für die Kompilierung von Shader-Modulen
- Entfernung von GPUAdapter.requestAdapterInfo()
- Dawn-Updates
Chrome 130
- Mischen mit zwei Quellen
- Verbesserungen der Shader-Kompilierungszeit unter Metal
- Einstellung von GPUAdapter.requestAdapterInfo()
- Dawn-Updates
Chrome 129
- HDR-Unterstützung mit Canvas-Tone Mapping-Modus
- Erweiterte Unterstützung für Untergruppen
- Dawn-Updates
Chrome 128
- Experimente mit Untergruppen
- Einstellung der Tiefenverzerrung für Linien und Punkte
- Ausblenden der Warnung in den Entwicklertools für nicht erfasste Fehler, wenn „preventDefault“ verwendet wird
- WGSL-Interpolation zuerst und dann Sampling
- Dawn-Updates
Chrome 127
- Experimentelle Unterstützung für OpenGL ES unter Android
- GPUAdapter-Attribut „info“
- Verbesserungen der WebAssembly-Interoperabilität
- Verbesserte Fehler bei der Befehlscodierung
- Dawn-Updates
Chrome 126
- Erhöhung des Limits „maxTextureArrayLayers“
- Optimierung des Puffer-Uploads für das Vulkan-Backend
- Verbesserungen der Shader-Kompilierungszeit
- Übermittelte Befehlspuffer müssen eindeutig sein
- Dawn-Updates
Chrome 125
Chrome 124
- Schreibgeschützte und Lese-/Schreib-Speichertexturen
- Unterstützung für Service Worker und Shared Worker
- Neue Attribute für Adapterinformationen
- Diverse Fehlerkorrekturen
- Dawn-Updates
Chrome 123
- Unterstützung für integrierte DP4a-Funktionen in WGSL
- Uneingeschränkte Zeigerparameter in WGSL
- Syntaxzucker für die Dereferenzierung von Composites in WGSL
- Separater schreibgeschützter Status für Schablonen- und Tiefenaspekte
- Dawn-Updates
Chrome 122
- Reichweite mit Kompatibilitätsmodus erweitern (Funktion in Entwicklung)
- Erhöhung des Limits „maxVertexAttributes“
- Dawn-Updates
Chrome 121
- Unterstützung von WebGPU unter Android
- Verwendung von DXC anstelle von FXC für die Shader-Kompilierung unter Windows
- Zeitstempelabfragen in Compute- und Renderpasses
- Standardmäßige Einstiegspunkte für Shader-Module
- Unterstützung von „display-p3“ als GPUExternalTexture-Farbraum
- Informationen zu Speicher-Heaps
- Dawn-Updates
Chrome 120
- Unterstützung für 16-Bit-Gleitkommawerte in WGSL
- Limits erweitern
- Änderungen am Tiefen- und Schablonenstatus
- Updates zu Adapterinformationen
- Quantisierung von Zeitstempelabfragen
- Bereinigung von Funktionen
Chrome 119
- Filterbare 32-Bit-Float-Texturen
- Vertex-Format „unorm10-10-10-2“
- Texturformat „rgb10a2uint“
- Dawn-Updates
Chrome 118
- Unterstützung für HTMLImageElement und ImageData in
copyExternalImageToTexture() - Experimentelle Unterstützung für Lese-/Schreib- und schreibgeschützte Speichertexturen
- Dawn-Updates
Chrome 117
- Vertex-Puffer aufheben
- Bindungsgruppe aufheben
- Fehler bei der asynchronen Pipeline-Erstellung unterdrücken, wenn das Gerät verloren geht
- Updates für die Erstellung von SPIR-V-Shader-Modulen
- Verbesserung der Entwicklerfreundlichkeit
- Pipelines mit automatisch generiertem Layout im Cache speichern
- Dawn-Updates
Chrome 116
- WebCodecs-Integration
- Verlorenes Gerät, das von GPUAdapter zurückgegeben wird
requestDevice() - Reibungslose Videowiedergabe, wenn
importExternalTexture()aufgerufen wird - Spezifikationskonformität
- Verbesserung der Entwicklerfreundlichkeit
- Dawn-Updates
Chrome 115
- Unterstützte WGSL-Spracherweiterungen
- Experimentelle Unterstützung für Direct3D 11
- Standardmäßig diskrete GPU bei Netzbetrieb
- Verbesserung der Entwicklerfreundlichkeit
- Dawn-Updates
Chrome 114
- JavaScript optimieren
- getCurrentTexture() für nicht konfigurierte Canvas-Elemente löst InvalidStateError aus
- WGSL-Updates
- Dawn-Updates