Veröffentlicht am 7. Januar 2026
WGSL-Erweiterung subgroup_id
Mit der WGSL-Spracherweiterung subgroup_id können Sie die folgenden neuen integrierten Werte in Arbeitsgruppen verwenden, wenn die Erweiterung subgroups aktiviert ist:
subgroup_id: Gibt die ID der Untergruppe eines Aufrufs innerhalb der aktuellen Arbeitsgruppe an.num_subgroups: Gibt die Anzahl der Untergruppen in der Arbeitsgruppe an.
Bisher mussten Sie zum Indexieren des Arbeitsspeichers mit Untergruppen-Aufruf-IDs eine Untergruppen-ID rekonstruieren (in der Regel durch atomare Vorgänge), um überlappende Speicherzugriffe zu vermeiden. Jetzt können Sie subgroup_id verwenden, um die andere Hälfte dieser Gleichung zu füllen. Da diese Funktion im D3D-Backend noch nicht verfügbar ist, wird sie dort emuliert. Es sollte sicher sein, eine Entsprechung zu local_invocation_index als subgroup_invocation_id + subgroup_size * subgroup_id zu erstellen. Beachten Sie, dass es Fälle geben kann, in denen Untergruppen nicht vollständig sind.
Diese Spracherweiterung kann mit navigator.gpu.wgslLanguageFeatures erkannt werden. Es wird empfohlen, mit einer „requires“-Anweisung auf die potenzielle Nichtportierbarkeit hinzuweisen. Verwenden Sie dazu requires subgroup_id; oben im WGSL-Shader-Code. Siehe das folgende Beispiel und die Absicht zur Bereitstellung.
if (!navigator.gpu.wgslLanguageFeatures.has("subgroup_id")) {
throw new Error(`WGSL subgroup_id and num_subgroups built-in values are not available`);
}
const adapter = await navigator.gpu.requestAdapter();
if (!adapter.features.has("subgroups")) {
throw new Error("Subgroups support is not available");
}
const device = await adapter.requestDevice({ requiredFeatures: ["subgroups"] });
const shaderModule = device.createShaderModule({ code: `
enable subgroups;
requires subgroup_id;
@compute @workgroup_size(64, 1, 1)
fn main(@builtin(subgroup_id) subgroup_id : u32,
@builtin(num_subgroups) num_subgroups : u32) {
// TODO: Use subgroup_id and num_subgroups values.
}`,
});
WGSL-Erweiterung uniform_buffer_standard_layout
Mit der WGSL-Spracherweiterung uniform_buffer_standard_layout können einheitliche Puffer dieselben Einschränkungen für das Speicherlayout wie Speicherpuffer verwenden. So lassen sich Datenstrukturen einfacher in beiden Arten von Puffern freigeben. Das bedeutet, dass einheitliche Puffer keine 16-Byte-Ausrichtung für Array-Elemente mehr erfordern oder verschachtelte Struktur-Offsets auf ein Vielfaches von 16 Byte auffüllen müssen.
Diese Spracherweiterung kann mit navigator.gpu.wgslLanguageFeatures erkannt werden. Es wird empfohlen, mit einer „requires“-Anweisung auf die potenzielle Nichtportierbarkeit hinzuweisen. Verwenden Sie dazu requires uniform_buffer_standard_layout; oben im WGSL-Shader-Code. Siehe das folgende Beispiel und die Absicht zur Bereitstellung.
if (!navigator.gpu.wgslLanguageFeatures.has("uniform_buffer_standard_layout")) {
throw new Error(`WGSL uniform buffer standard layout is not available`);
}
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();
const shaderModule = device.createShaderModule({ code: `
requires uniform_buffer_standard_layout;
struct S {
x: f32
}
struct Uniforms {
a: S,
b: f32
// b is at offset 4. Without standard layout, alignment rules would
// force b to be at offset 16 (or a multiple of 16), and you would have
// to add extra fields or use an @align attribute.
}
@group(0) @binding(0) var<uniform> u: Uniforms;
@fragment fn fs_main() -> @location(0) vec4<f32> {
return vec4<f32>(u.a.x);
}`,
});
WebGPU unter Linux
Das Chrome-Team führt WebGPU für Linux sorgfältig ein. Zuerst werden Intel Gen12+-GPUs unterstützt. Es ist jedoch geplant, die Unterstützung auf weitere Geräte (AMD, NVIDIA) auszuweiten. Bei dieser Implementierung wird eine Architektur verwendet, bei der WebGPU Vulkan nutzt und der Rest von Chromium auf OpenGL bleibt. So werden vorhandene, bekannte und gute Codepfade genutzt. Weitere Informationen finden Sie unter Problem 442791440.
Schnellere writeBuffer- und writeTexture-Funktionen
writeBuffer() und writeTexture() wurden in Chrome optimiert. Je nach Größe der übertragenen Daten kann die Leistung um bis zu 200 % gesteigert werden. Diese Änderung betrifft auch alle Nutzer der Dawn Wire-Implementierung. Weitere Informationen finden Sie unter Problem 441900745.
Dawn-Updates
Das Android GPU-Team hat die erste Alpha-Version der Kotlin-Bindungen für WebGPU unter Android veröffentlicht, die mit Jetpack verfügbar ist. Mit dem Paket androidx.webgpu können Android-Entwickler mit Kotlin auf eine moderne GPU-API zugreifen. So werden die Legacy-Probleme von OpenGL oder die Komplexität von Vulkan umgangen. Das ist eine spannende Entwicklung für das Ökosystem.
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 unter OpenGL ES 3.1
- Temporäre 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
- Swizzle für Texturkomponenten
- 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 nutzen Adapter
- Kurzform für die Verwendung von Texturen, wenn Texturansichten verwendet werden
- WGSL textureSampleLevel unterstützt 1D-Texturen
- Entfernung 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
- Entfernung des GPUAdapter-Attributs „isFallbackAdapter“
- Dawn-Updates
Chrome 137
- Verwendung von Texturansichten für die externeTextur-Bindung
- Puffer ohne Angabe von Offsets und Größe kopieren
- WGSL workgroupUniformLoad mit Zeiger auf atomare Werte
- 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
- Einschränkungen des Kompatibilitätsmodus aufheben
- Dawn-Updates
Chrome 135
- Erstellung von Pipeline-Layouts mit Null-Bindungsgruppen-Layout zulassen
- Ansichtsfenster über die Grenzen der Renderziele hinaus erweitern
- 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 mit Gleitkommazahlen als mischbar
- Dawn-Updates
Chrome 133
- Zusätzliche unorm8x4-bgra- und 1-Komponenten-Vertex-Formate
- Anfrage unbekannter Limits mit undefiniertem Wert zulassen
- Änderungen der WGSL-Ausrichtungsregeln
- WGSL-Leistungssteigerungen mit „discard“
- Verwendung von VideoFrame 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
- Entfernung des Limits „maxInterStageShaderComponents“
- Dawn-Updates
Chrome 132
- Verwendung von Texturansichten
- Mischen von 32-Bit-Gleitkomma-Texturen
- GPUDevice-Attribut „adapterInfo“
- Konfiguration des Canvas-Kontexts mit ungültigem Format löst JavaScript-Fehler aus
- Einschränkungen für Sampler auf Texturen filtern
- Erweiterte Experimente mit Untergruppen
- Verbesserung der Entwicklerfreundlichkeit
- Experimentelle Unterstützung für normalisierte 16-Bit-Texturformate
- Dawn-Updates
Chrome 131
- Clip-Entfernungen in WGSL
- 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 für die Shader-Modul-Kompilierung „strict math“
- Entfernung von GPUAdapter requestAdapterInfo()
- Dawn-Updates
Chrome 130
- Mischen mit zwei Quellen
- Verbesserungen der Shader-Kompilierungszeit unter Metal
- Entfernung 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
- Entfernung der Einstellung der Tiefenverzerrung für Linien und Punkte
- Ausblenden der Entwicklertools-Warnung für nicht erfasste Fehler, wenn preventDefault
- WGSL-Interpolation zuerst und entweder
- Dawn-Updates
Chrome 127
- Experimentelle Unterstützung für OpenGL ES unter Android
- GPUAdapter-Attribut „info“
- Verbesserungen der WebAssembly-Interoperabilität
- Verbesserte Fehler für Befehlscodierer
- 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
- Syntax-Zucker 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 Render-Passes
- Standardmäßige Einstiegspunkte für Shader-Module
- Unterstützung von display-p3 als GPUExternalTexture-Farbraum
- Informationen zu Arbeitsspeicher-Heaps
- Dawn-Updates
Chrome 120
- Unterstützung für 16-Bit-Gleitkommawerte in WGSL
- Limits erweitern
- Änderungen am Tiefen- und Schablonenstatus
- Updates für Adapterinformationen
- Quantisierung von Zeitstempelabfragen
- Bereinigung von Funktionen
Chrome 119
- Filterbare 32-Bit-Gleitkomma-Texturen
- Vertex-Format unorm10-10-10-2
- Texturformat rgb10a2uint
- Dawn-Updates
Chrome 118
- Unterstützung von 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
requestDevice()zurückgegeben wird - 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 Netzstrom
- Verbesserung der Entwicklerfreundlichkeit
- Dawn-Updates
Chrome 114
- JavaScript optimieren
- getCurrentTexture() für nicht konfigurierte Canvas löst InvalidStateError aus
- WGSL-Updates
- Dawn-Updates