Veröffentlicht: 28. Januar 2026
WGSL-Erweiterung subgroup_uniformity
Die WGSL-Spracherweiterung subgroup_uniformity ändert den Umfang der Einheitlichkeitsanalyse für integrierte Untergruppen- und Quad-Funktionen, sodass sie auf Untergruppenebene (anstelle der Arbeitsgruppe) erfolgt. Mit dieser Funktion kann die Untergruppenfunktionalität in mehr Fällen als einheitlich betrachtet werden, was die Lebensqualität für Entwickler verbessert und die Wahrscheinlichkeit verringert, dass Einheitlichkeitsprüfungen ganz deaktiviert werden. Eine praktische Folge ist, dass mehr Werte als untergruppeneinheitlich angesehen werden, z. B. der kürzlich hinzugefügte integrierte Wert subgroup_id.
Diese Spracherweiterung kann mit navigator.gpu.wgslLanguageFeatures erkannt werden. Weitere Informationen finden Sie im folgenden Beispiel und in der Versandabsicht.
if (!navigator.gpu.wgslLanguageFeatures.has("subgroup_uniformity")) {
throw new Error(`WGSL subgroup uniformity is 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;
@group(0) @binding(0) var<storage, read_write> non_uniform: i32;
fn main() {
if (non_uniform == 42) {
_ = subgroupElect();
}
}`,
}); // WGSL error: subgroupElect must only be called from subgroup uniform control flow.
Experimentelle synchrone Pufferzuordnung in Workern
Um potenzielle Möglichkeiten zu untersuchen, die Reibung zwischen WebGPU und Anwendungscode zu verringern, untersucht das Chrome-Team die synchrone Pufferzuordnung in Workern. Im Rahmen dieser Bemühungen wurde eine neue experimentelle mapSync()-Methode für GPUBuffer entwickelt. Diese Methode ist auf Worker beschränkt und funktioniert ähnlich wie mapAsync().
Diese Funktion ist experimentell. Ihr Feedback ist wichtig, um zu entscheiden, ob sie für die Standardisierung vorgeschlagen wird. Wenn Sie sie ausprobieren möchten, starten Sie Chrome mit dem Switch --enable-features=WebGPUMapSyncOnWorkers und geben Sie Feedback zu ihrer Nützlichkeit und ihren Auswirkungen. Beginnen Sie mit dem folgenden Snippet.
// Create a GPU buffer.
const buffer = device.createBuffer({
size: 42,
usage: GPUBufferUsage.COPY_DST | GPUBufferUsage.MAP_READ,
});
// Map buffer synchronously when possible.
if ("mapSync" in GPUBuffer.prototype) {
buffer.mapSync(GPUMapMode.READ);
} else {
// Awaiting allows other code to run, which can cause application logic issues.
await buffer.mapAsync(GPUMapMode.READ);
}
Dawn-Updates
Die Funktion wgpu::FeatureName::R8UnormStorage ist nicht mehr verfügbar. Sie wurde durch wgpu::FeatureName::TextureFormatTier1 ersetzt, die sie jetzt ablöst. Siehe Problem 472926167.
Die Funktion wgpu::FeatureName::Snorm16TextureFormats wurde entfernt. Ihre Funktionen, mit Ausnahme von „Auflösen“, werden jetzt weitgehend von wgpu::FeatureName::TextureFormatsTier1 abgedeckt. Siehe Problem 465347942.
Nächtliche Releases von Binärdateien (zusätzlich zu Emdawnwebgpu) werden jetzt auf GitHub erstellt und sind in den Releases von google/dawn verfügbar. Sie werden als Best-Effort-Dienst bereitgestellt und sind nicht von Google oder dem Dawn-Team signiert oder garantiert.
Emdawnwebgpu wurde Unterstützung für wgpu::ExternalTexture hinzugefügt. Sie kann nur aus JavaScript-Code importiert werden (z. B. EM_ASM), da die Erstellung in C/C++ aufgrund der Anforderung eines JavaScript-Objekts wie HTMLVideoElement oder VideoFrame nicht möglich ist. Siehe Problem 462477379 und SpotTests.cpp für Beispielcode.
Dies sind nur einige der wichtigsten Highlights. Eine umfassende 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 Speichertexturverwendung bgra8unorm
- 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 textureSampleLevel unterstützt 1D-Texturen
- Einstellung der schreibgeschützten Speichertexturverwendung bgra8unorm
- Entfernung des GPUAdapter-Attributs isFallbackAdapter
- Dawn-Updates
Chrome 139
- Unterstützung für 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
- Texturansicht für die Bindung von externen Texturen verwenden
- Puffer ohne Angabe von Offsets und Größe kopieren
- WGSL workgroupUniformLoad mit Zeiger auf Atomic
- 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
- Zulassen, dass Viewports ü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 mit Gleitkommazahlen als mischbar
- Dawn-Updates
Chrome 133
- Zusätzliche unorm8x4-bgra- und Vertex-Formate mit einer Komponente
- Anforderung unbekannter Limits mit undefiniertem Wert zulassen
- Änderungen der WGSL-Ausrichtungsregeln
- WGSL-Leistungssteigerungen mit „discard“
- VideoFrame displaySize für externe Texturen verwenden
- Bilder mit nicht standardmäßigen Ausrichtungen mit copyExternalImageToTexture verarbeiten
- Verbesserung der Entwicklererfahrung
- Kompatibilitätsmodus mit featureLevel aktivieren
- Bereinigung experimenteller Untergruppenfunktionen
- Einstellung des Limits maxInterStageShaderComponents
- Dawn-Updates
Chrome 132
- Verwendung von Texturansichten
- Mischen von 32-Bit-Gleitkommatexturen
- 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 Untergruppenexperimente
- Verbesserung der Entwicklererfahrung
- Experimentelle Unterstützung für normalisierte 16-Bit-Texturformate
- Dawn-Updates
Chrome 131
- Abstandsbegrenzung in WGSL
- GPUCanvasContext getConfiguration()
- Punkt- und Linienprimitive dürfen keine Tiefenverzerrung aufweisen
- Inklusive Scan-Funktionen für Untergruppen
- Experimentelle Unterstützung für Multi-Draw Indirect
- Option für die Shader-Modulkompilierung „strict math“
- 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 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 bei der Befehlscodierung
- Dawn-Updates
Chrome 126
- Erhöhung des Limits maxTextureArrayLayers
- Optimierung des Pufferuploads 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-/Schreibspeichertexturen
- 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 für 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-Gleitkommatexturen
- 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 Pipelineerstellung unterdrücken, wenn das Gerät verloren geht
- Updates für die Erstellung von SPIR-V-Shader-Modulen
- Verbesserung der Entwicklererfahrung
- 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 Entwicklererfahrung
- Dawn-Updates
Chrome 115
- Unterstützte WGSL-Spracherweiterungen
- Experimentelle Unterstützung für Direct3D 11
- Standardmäßig diskrete GPU bei Netzstrom
- Verbesserung der Entwicklererfahrung
- Dawn-Updates
Chrome 114
- JavaScript optimieren
- getCurrentTexture() für nicht konfigurierte Canvas löst InvalidStateError aus
- WGSL-Updates
- Dawn-Updates