Nieuw in WebGPU (Chrome 127)

François Beaufort
François Beaufort

Experimentele ondersteuning voor OpenGL ES op Android

Je hebt nu toegang tot een GPUAdapter vanuit de OpenGL ES-backend als je de experimentele WebGPU-compatibiliteitsmodus aanvraagt in Chrome voor Android. Dit is vooral handig voor Android-apparaten die geen ondersteuning bieden voor Vulkan 1.1 of hoger. Bekijk het volgende voorbeeld en probleem dawn:1545.

// Request a GPUAdapter in compatibility mode
const adapter = await navigator.gpu.requestAdapter({ compatibilityMode: true });
De rapportpagina van WebGPU toont GPUAdapter-informatie van de OpenGL ES-backend op het Android-apparaat.
OpenGL ES-adapterinfo op webgpureport.org

Omdat deze functie nog in een experimentele fase is, moet u de volgende stappen uitvoeren:

  1. Zet de volgende Chrome-flags aan: Unsafe WebGPU Support, WebGPU Developer Features en Enable command line on non-rooted devices.
  2. Zet USB-foutopsporing aan op je Android-apparaat.
  3. Verbind je Android-apparaat met je werkstation, voer adb shell 'echo "_ --use-webgpu-adapter=opengles" > /data/local/tmp/chrome-command-line' uit om de OpenGL ES-backend te verkiezen boven Vulkan en start Chrome opnieuw op.

Kenmerk info van GPUAdapter

Je kunt nu op een synchrone manier identificerende gegevens over een adapter krijgen met het GPUAdapter-kenmerk info. Eerder was het aanroepen van de asynchrone GPUAdapter-methode requestAdapterInfo() de enige manier om adapterinformatie te krijgen. requestAdapterInfo() is echter verwijderd uit de WebGPU-specificatie en wordt later dit jaar verwijderd in Chrome. Zo krijgen webontwikkelaars genoeg tijd om de nodige overstap te maken. Bekijk het volgende voorbeeld, Chrome Status en issue 335383516.

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

// During the transition period, you can use the following:
// const info = adapter.info || await adapter.requestAdapterInfo();

console.log(`Vendor: ${info.vendor}`); // "arm"
console.log(`Architecture: ${info.architecture}`); // "valhall"

Verbeteringen in WebAssembly-interoperabiliteit

Omdat WebAssembly-heaps rechtstreeks aan WebGPU worden doorgegeven, zijn de groottes van de volgende BufferSource-argumenten niet meer beperkt tot 2 GB: dynamicOffsetsData in setBindGroup(), source data in writeBuffer() en source data Pin writeTexture(). Ga naar probleem 339049388.

Verbeterde fouten in opdrachtcodering

Sommige validatiefouten die door opdrachtencoders worden gegenereerd, hebben nu betere contextuele informatie. Als je bijvoorbeeld een berekeningsdoorgang probeerde te starten terwijl een weergavedoorgang nog open was, kreeg je de volgende foutmelding.

Command cannot be recorded while [CommandEncoder (unlabeled)] is locked and [RenderPassEncoder (unlabeled)] is currently open.
    at CheckCurrentEncoder (..\..\third_party\dawn\src\dawn\native\EncodingContext.h:106)

Hierin staat de reden voor de fout, maar niet welke aanroep de validatiefout heeft veroorzaakt. De volgende fout toont de verbeterde berichten, waaronder de opdracht die de fout heeft geactiveerd. Ga naar wijziging 192245.

Command cannot be recorded while [CommandEncoder (unlabeled)] is locked and [RenderPassEncoder (unlabeled)] is currently open.
 - While encoding [CommandEncoder (unlabeled)].BeginComputePass([ComputePassDescriptor]).

Updates voor Dawn

De C API webgpu.h biedt wgpuSurfaceGetPreferredFormat() niet meer, het C-equivalent van wgpu::Surface::GetPreferredFormat() van Dawn. Gebruik in plaats daarvan wgpu::Surface::GetCapabilities() om de lijst met ondersteunde indelingen op te halen en gebruik formats[0] om de textuurindeling op te halen die de voorkeur heeft voor dit oppervlak. In de tussentijd geeft aanroepen van wgpu::Surface::GetPreferredFormat() een beëindigingswaarschuwing. Ga naar probleem 290.

De ondersteunde textuurgebruiken van een oppervlak zijn nu beschikbaar via wgpu::SurfaceCapabilities::usages als je wgpu::Surface::GetCapabilities() aanroept. Er wordt verwacht dat ze altijd wgpu::TextureUsage::RenderAttachment bevatten. Ga naar probleem 301.

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