Nieuw in WebGPU (Chrome 136)

François Beaufort
François Beaufort

Gepubliceerd: 23 april 2025

Kenmerk isFallbackAdapter van GPUAdapterInfo

Het booleaanse kenmerk GPUAdapterInfo isFallbackAdapter 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 geleverde GPUDevice-objecten gebruiken, geen toegang hadden tot deze informatie via het kenmerk adapterInfo op GPUDevice. Raadpleeg het volgende voorbeeld en probleem 403172841.

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 voor fallback-adapters heeft geleverd, is isFallbackAdapter op dit moment altijd onwaar op de apparaten van gebruikers. We onderzoeken of het kenmerk GPUAdapter isFallbackAdapter kan worden beëindigd en verwijderd. Ga naar Intentie om te verzenden.

Verbeteringen in de compilatietijd van shaders op D3D12

Het Chrome-team verbetert Tint, de compiler voor de WebGPU-shader-taal, door een tussenliggende representatie (IR) toe te voegen voor apparaten die WebGPU ondersteunen met de D3D12-backend. Deze IR, die tussen de abstracte syntaxisboom (AST) van Tint en de HLSL-backend-schrijver is geplaatst, maakt de compiler efficiënter en beter onderhoudbaar, wat uiteindelijk zowel ontwikkelaars als gebruikers ten goede komt. Uit eerste tests blijkt dat de nieuwe versie van Tint tot 10 keer sneller is bij de vertaling van WGSL-shaders van Unity naar HLSL.

Een stroomdiagram toont het proces om WGSL-shadercode om te zetten in instructies op laag niveau voor de GPU.
Maak een weergave-pipeline 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. Ga naar probleem 42251045.

Canvasafbeeldingen opslaan en kopiëren

Chrome-gebruikers kunnen nu met de rechtermuisknop op een WebGPU-canvas klikken en de contextmenu-opties Afbeelding opslaan als… of Afbeelding kopiëren openen. Ga naar probleem 40902474.

Op de pagina
De gebruiker heeft het contextmenu Afbeelding opslaan als… geselecteerd.

Beperkingen voor de compatibiliteitsmodus voor impactmeting

De experimentele "core-features-and-limits"-functie heft, als deze beschikbaar is op een GPUDevice, alle beperkingen voor de compatibiliteitsmodus (functies en limieten) op als de vlag chrome://flags/#enable-unsafe-webgpu aanstaat. Ga naar probleem 395855517.

Als je een GPUAdapter aanvraagt met de optie featureLevel: "compatibility", geeft dit 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 de optie featureLevel: "core" gebruiken. Als je requestDevice() aanroept zonder requiredFeatures en requiredLimits, wordt er een GPUDevice aangevraagd met de standaardmogelijkheden van de GPUAdapter.

Adapters met kernstandaardwaarden ondersteunen altijd de functie "core-features-and-limits" en deze staat automatisch aan op GPUDevices die ermee zijn gemaakt. Voor adapters die standaard compatibel zijn, wordt de functie "core-features-and-limits" misschien ondersteund en kan deze worden aangevraagd voor GPUDevices die ermee zijn gemaakt. Beide typen adapters kunnen ook functies zoals "float32-blendable" ondersteunen. Deze functie is optioneel in zowel de kernmodus als de compatibiliteitsmodus.

Het volgende voorbeeld is voor een app die "float32-blendable" vereist en het gebruik van kernfuncties ondersteunt als deze beschikbaar zijn, 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 GPUAdapter-kenmerken featureLevel en isCompatibilityMode zijn verwijderd ten gunste van de functie "core-features-and-limits". Ga naar probleem 395855516.

Updates voor Dawn

De enum callback status 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 de pijplijncompilatie, misschien nog steeds wordt uitgevoerd. De nieuwe naam is algemener van toepassing, voor het geval er later een ander annuleringsmechanisme wordt toegevoegd. Ga naar probleem 520.

De wgpu::PopErrorScopeStatus::EmptyStack enum die aangeeft dat de foutbereikstack niet kon worden verwijderd, is hernoemd naar wgpu::PopErrorScopeStatus::Error (wat ook algemener van toepassing is). De callback bevat nu ook een bijbehorende foutuitleg om fouten op te sporen. Ga naar probleem 369.

Dit zijn maar enkele van de belangrijkste punten. Neem de uitgebreide lijst met doorvoeringen door.

Wat is er nieuw in WebGPU?

Een lijst met alles wat is behandeld in de serie Nieuw in WebGPU.

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