Wat is er nieuw in WebGPU (Chrome 126)

François Beaufort
François Beaufort

Verhoog de maxTextureArrayLayers-limiet

De maximaal toegestane waarde voor de diepte of het aantal lagen van een 2D-textuur is standaard 256. Het is nu mogelijk om tot 2048 aan te vragen door de limiet maxTextureArrayLayers te gebruiken, indien ondersteund. Zie het volgende voorbeeld en issue 42241514 .

const adapter = await navigator.gpu.requestAdapter();
if (adapter.limits.maxTextureArrayLayers < 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 texture array layers attributes.
const device = await adapter.requestDevice({
  requiredLimits: { maxTextureArrayLayers: 2048 }
});

Buffer-uploadoptimalisatie voor Vulkan-backend

Er is nu een snellere manier beschikbaar om de writeBuffer()- methode van de GPUQueue voor de Vulkan-backend aan te roepen. De gegevens kunnen nu direct naar de bestemmingsbuffer worden geschreven, waardoor een extra kopieer- en synchronisatiestap overbodig is. Deze optimalisatie vermindert het geheugenverkeer dat nodig is om gegevens naar de GPU te uploaden.

Voor de snelle padoptimalisatie is het vereist dat het geheugen van de buffer zichtbaar is voor de host en dat er geen GPU-bewerkingen op in behandeling zijn. Zie probleem 42242084 .

Verbeteringen in de compilatietijd van shaders

Het Chrome-team werkt aan het verbeteren van de efficiëntie van Tint , de compiler voor de WebGPU-shadertaal. Tint wijzigt momenteel de abstracte syntaxisboom (AST) van de shadercode meerdere keren voordat de machinecode wordt gegenereerd. Dit proces is op sommige platforms resource-intensief. Om dit te optimaliseren, wordt een nieuwe tussenliggende representatie (IR) geïntroduceerd, samen met herontworpen backends die deze gebruiken. Deze wijziging is bedoeld om de shadercompilatie te versnellen.

Het creëren van een renderpipeline omvat het converteren van WGSL naar SPIR-V met de Tint-compiler en vervolgens naar ISA met de Driver-compiler.
Het aanmaken van een renderpipeline in ChromeOS.

Deze verbeteringen, die al beschikbaar zijn op Android, worden geleidelijk uitgebreid naar ChromeOS-apparaten die WebGPU met de Vulkan-backend ondersteunen. Zie issue 42250751 .

De ingediende commandobuffers moeten uniek zijn.

Elke GPUCommandBuffer die met de submit() methode aan de GPUQueue wordt aangeboden, moet uniek zijn; anders wordt er een validatiefout gegenereerd. Dit was een specificatiefout . Zie probleem 42241492 .

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

const commandEncoder = device.createCommandEncoder();
const commandBuffer = commandEncoder.finish();

device.queue.submit([commandBuffer, commandBuffer]);
// ⚠️ Validation fails because command buffers are not unique.

Dawn-updates

De C++-wrapper webgpu_cpp.h is nu een headerbestand, wat het gebruik ervan vereenvoudigt en een gemakkelijkere integratie met alternatieve C++-wrappers mogelijk maakt. Zie issue 40195122 .

De C API van webgpu.h biedt niet langer de mogelijkheid om Swapchain-objecten te gebruiken. Deze wijziging is doorgevoerd om beter aan te sluiten bij de JavaScript API. De interne configuratie gebeurt nu via de Configure() `-methode van het nieuwe wgpu::Surface object, dat in de toekomst mogelijk nog wordt aangepast. Bekijk een voorbeeld in de documentatie over het bouwen van een app met WebGPU . Zie issue 42241264 .

Bekijk de volledige lijst met commits .

Wat is er nieuw in WebGPU?

Een lijst van alles wat in de serie ' Wat is nieuw in WebGPU' aan bod is gekomen.

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