Wat is er nieuw in WebGPU (Chrome 136)

François Beaufort
François Beaufort

Gepubliceerd: 23 april 2025

GPUAdapterInfo is het FallbackAdapter-kenmerk

Het GPUAdapterInfo isFallbackAdapter booleaanse kenmerk geeft aan of een GPUAdapter aanzienlijke prestatiebeperkingen heeft in ruil voor bredere compatibiliteit, voorspelbaarder gedrag of verbeterde privacy. Deze toevoeging was nodig omdat bibliotheken die door de gebruiker verstrekte GPUDevice-objecten gebruiken, geen toegang hadden tot deze informatie via het adapterInfo -kenmerk op GPUDevice. Zie het volgende voorbeeld en geef nummer 403172841 uit .

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

if (adapter?.info.isFallbackAdapter) {
  // The returned adapter is a software-backed fallback adapter, which
  // may have significantly lower performance and fewer features.
}

Omdat Chrome nog geen ondersteuning biedt voor fallback-adapters, is isFallbackAdapter momenteel altijd false op de apparaten van gebruikers. We onderzoeken of het kenmerk GPUAdapter isFallbackAdapter kan worden verouderd en verwijderd. Zie voornemen tot verzending .

Verbeteringen in de compilatietijd van Shader op D3D12

Het Chrome-team blijft Tint, de WebGPU-shader-taalcompiler, verbeteren door een tussenliggende representatie (IR) toe te voegen voor apparaten die WebGPU ondersteunen met de D3D12-backend. Deze IR, gepositioneerd tussen de abstracte syntaxisboom (AST) van Tint en de HLSL-backend-schrijver, zal de compiler efficiënter en onderhoudbaarder maken, wat uiteindelijk zowel ontwikkelaars als gebruikers ten goede zal komen. Uit eerste tests blijkt dat de nieuwe versie van Tint tot 10 keer sneller is bij het vertalen van Unity's WGSL-shaders naar HLSL.

Een stroomdiagram toont het proces van het converteren van WGSL-shadercode naar GPU-instructies op laag niveau.
Render pijplijncreatie in Windows.

Deze verbeteringen, die al toegankelijk zijn op Android, ChromeOS en macOS, worden geleidelijk uitgebreid naar Windows-apparaten die WebGPU ondersteunen met de D3D12-backend. Zie uitgave 42251045 .

Bewaar en kopieer canvasafbeeldingen

Chrome-gebruikers kunnen nu met de rechtermuisknop op een WebGPU-canvas klikken en toegang krijgen tot de contextmenu-opties Afbeelding opslaan als… of Afbeelding kopiëren . Zie uitgave 40902474 .

De
De gebruiker heeft het contextmenu "Afbeelding opslaan als..." geselecteerd.

Hef de beperkingen in de compatibiliteitsmodus op

De experimentele functie "core-features-and-limits" indien beschikbaar op een GPUDevice, heft alle beperkingen van de compatibiliteitsmodus (functies en limieten) op wanneer de vlag chrome://flags/#enable-unsafe-webgpu is ingeschakeld. Zie uitgave 395855517 .

Als u een GPUAdapter aanvraagt ​​met de optie featureLevel: "compatibility" geeft de browser een hint om de experimentele WebGPU-compatibiliteitsmodus te selecteren. Als dit lukt, is de resulterende adapter "compatibiliteitsstandaard". Anders is het "core-defaulting", wat hetzelfde is als het gebruik van de optie featureLevel: "core" . Bovendien vraagt ​​het aanroepen van requestDevice() zonder requiredFeatures en requiredLimits om een ​​GPUDevice met de standaardmogelijkheden van de GPUAdapter.

Adapters met standaardstandaard ondersteunen altijd de functie "core-features-and-limits" en deze wordt automatisch ingeschakeld op GPUDevices die daarvan zijn gemaakt. Voor adapters met standaardcompatibiliteit wordt mogelijk de functie "core-features-and-limits" ondersteund en kan deze worden aangevraagd op GPUDevices die daarvan zijn gemaakt. Beide typen adapters ondersteunen mogelijk ook functies zoals "float32-blendable" , wat optioneel is in zowel de kern- als de compatibiliteitsmodus.

Het volgende voorbeeld is voor een applicatie die "float32-blendable" vereist en het gebruik van kernfuncties ondersteunt indien beschikbaar, maar alleen compatibiliteitsfuncties gebruikt als kernfuncties niet beschikbaar zijn.

const adapter = await navigator.gpu.requestAdapter({ featureLevel: "compatibility" });

if (!adapter || !adapter.features.has("float32-blendable")) {
  throw new Error("32-bit float textures blending support is not available");
}

const requiredFeatures = [];
if (adapter.features.has("core-features-and-limits")) {
  requiredFeatures.push("core-features-and-limits");
}

const device = await adapter.requestDevice({ requiredFeatures });

if (!device.features.has("core-features-and-limits")) {
  // Compatibility mode restrictions validation rules will apply.
}

De experimentele kenmerken GPUAdapter featureLevel en isCompatibilityMode zijn verwijderd ten gunste van de functie "core-features-and-limits" . Zie uitgave 395855516 .

Dawn-updates

De callback-status enum InstanceDropped is hernoemd naar CallbackCancelled om duidelijk te maken dat de callback is geannuleerd, maar dat de achtergrondverwerking die aan de gebeurtenis is gekoppeld, zoals pijplijncompilatie, mogelijk nog steeds wordt uitgevoerd. De nieuwe naam is algemener van toepassing, voor het geval er later een ander annuleringsmechanisme wordt toegevoegd. Zie nummer 520 .

De wgpu::PopErrorScopeStatus::EmptyStack enum die aangeeft dat de foutscope-stack niet kon worden geopend, is hernoemd naar wgpu::PopErrorScopeStatus::Error (wat ook algemener van toepassing is). De callback bevat nu ook een bijbehorend foutverklaringsbericht om te helpen bij het opsporen van fouten. Zie nummer 369 .

Dit behandelt slechts enkele van de belangrijkste hoogtepunten. Bekijk de uitgebreide lijst met commits .

Wat is er nieuw in WebGPU

Een lijst met alles wat aan bod komt in de What's New in WebGPU -serie.

Chroom 136

Chroom 135

Chroom 134

Chroom 133

Chroom 132

Chroom 131

Chroom 130

Chroom 129

Chroom 128

Chroom 127

Chroom 126

Chroom 125

Chroom 124

Chroom 123

Chroom 122

Chroom 121

Chroom 120

Chroom 119

Chroom 118

Chroom 117

Chroom 116

Chroom 115

Chroom 114

Chroom 113