Wat is er nieuw in WebGPU (Chrome 122)

François Beaufort
François Beaufort

Het aantal WebGPU-functies lijkt deze keer misschien wat beperkt, maar grote verbeteringen staan voor de deur! Volgende releases bevatten functies zoals DP4a, alleen-lezen en lees-schrijf opslagtexturen, aparte stencil- en diepteaspectcontrole, rendering naar 3D-textuurslices en verbeteringen in shadercompilatie.

Ontdek ondertussen hoe u uw Web AI-modeltesten kunt verbeteren met WebGPU- en WebGL-ondersteuning in Headless Chrome en waarom WebGPU mogelijk is uitgeschakeld of niet werkt in Chrome .

Vergroot het bereik met de compatibiliteitsmodus (functie in ontwikkeling)

WebGPU werkt goed samen met moderne grafische API's (Vulkan, Metal en D3D12), maar sommige apparaten bieden hiervoor geen ondersteuning. Dit beperkt de toegankelijkheid van WebGPU, vooral op platforms zoals Windows (31% van de Chrome-gebruikers beschikt niet over D3D11.1+), Android (23% beschikt niet over Vulkan 1.1+) en ChromeOS (de acceptatie van Vulkan neemt toe).

Het Chrome-team werkt aan een compatibiliteitsmodus in WebGPU om dit probleem aan te pakken door een enigszins beperkte versie van WebGPU aan te bieden die werkt op oudere API's zoals D3D11 en OpenGL ES. Dit zal de potentiële gebruikersbasis van WebGPU vergroten.

Belangrijk is dat applicaties die de compatibiliteitsmodus gebruiken, volledig geldige WebGPU-applicaties blijven. Apparaten zonder ondersteuning voor de compatibiliteitsmodus schakelen naadloos over naar de core WebGPU-adapter, wat zorgt voor brede inzetbaarheid.

Diagram van de WebGPU-compatibiliteitsmodus.
WebGPU-compatibiliteitsmodus uitgebreid.

Bekijk het voorstel en reageer als u vragen hebt.

Verhoog de maxVertexAttributes-limiet

Het maximale aantal kenmerken in totaal in buffers bij het aanmaken van een GPURenderPipeline is standaard 16. Het is nu mogelijk om maximaal 30 kenmerken op te vragen met behulp van de maxVertexAttributes -limiet, indien ondersteund. Zie het volgende voorbeeld en geef dawn:2223 op .

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

if (adapter.limits.maxVertexAttributes < 30) {
  // When the desired limit isn't supported, take action to either fall back to
  // a code path that does not require the higher limit or notify the user that
  // their device does not meet minimum requirements.
}

// Request highest limit of max vertex attributes.
const device = await adapter.requestDevice({
  requiredLimits: { maxVertexAttributes: 30 },
});

Dawn-updates

Er is een nieuwe instance-schakelaar toegevoegd met de naam "expose_wgsl_experimental_features", waarmee de instance alleen de experimentele WGSL-functies kan weergeven, maar niet de onveilige. Zo kunnen veilige experimentele WGSL-functies worden gebruikt zonder dat de schakelaar "allow_unsafe_apis" hoeft te worden ingeschakeld. Zie issue dawn:2260 .

Recente verbeteringen aan de Dawn-bindings voor Node.js zijn onder meer:

  • GPUSupportedFeatures::getSize() is toegevoegd.
  • GPUAdapter veroudering is geïmplementeerd.
  • GPUInternalError wordt nu correct gerapporteerd voor apparaten.
  • Attributen zijn nu opsombaar.

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

Wat is er nieuw in WebGPU

Een lijst met alles wat in de serie Wat is er nieuw in WebGPU aan bod is gekomen.

Chroom 139

Chroom 138

Chroom 137

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