Nieuw in WebGPU (Chrome 126)

François Beaufort
François Beaufort

De limiet voor maxTextureArrayLayers verhogen

De maximaal toegestane waarde voor de diepte of het aantal lagen van een 2D-textuur is standaard 256. Je kunt nu maximaal 2048 aanvragen door de limiet maxTextureArrayLayers te gebruiken als deze wordt ondersteund. Neem het volgende voorbeeld en probleem 42241514 door.

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 }
});

Optimalisatie van bufferuploads voor Vulkan-backend

Er is nu een snel pad beschikbaar als je de methode writeBuffer() van de GPUQueue aanroept voor de Vulkan-backend. De gegevens kunnen nu rechtstreeks naar de bestemmingsbuffer worden geschreven, waardoor een extra kopie en synchronisatie niet meer nodig zijn. Door deze optimalisatie is er minder geheugenverkeer nodig om gegevens naar de GPU te uploaden.

Voor optimalisatie van het snelle pad moet het geheugen van de buffer zichtbaar zijn voor de host en mogen er geen GPU-bewerkingen in behandeling zijn. Ga naar probleem 42242084.

Verbeteringen in de compilatietijd van shaders

Het Chrome-team verbetert de efficiëntie van Tint, de compiler van de WebGPU-shader-taal. Tint wijzigt de abstracte syntaxisboom (AST) van de shadercode meerdere keren voordat de machinecode wordt gegenereerd. Dit proces is op sommige platforms resource-intensief. Hiervoor wordt een nieuwe tussenliggende representatie (IR) geïntroduceerd, samen met opnieuw ontworpen backends die deze gebruiken. Met deze wijziging willen we de compilatie van shaders versnellen.

Als je een weergavepijplijn maakt, wordt WGSL met de Tint-compiler omgezet in SPIR-V en daarna met de Driver-compiler in ISA.
Maak een weergavepijplijn in ChromeOS.

Deze verbeteringen, die al toegankelijk zijn op Android, worden geleidelijk uitgebreid naar ChromeOS-apparaten die WebGPU met de Vulkan-backend ondersteunen. Ga naar probleem 42250751.

Ingediende opdrachtbuffers moeten uniek zijn

Elk GPUCommandBuffer dat met de methode submit() bij de GPUQueue wordt ingediend, moet uniek zijn. Anders wordt er een validatiefout gegenereerd. Dit was een specificatiefout. Ga naar 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.

Updates voor Dawn

De C++-wrapper webgpu_cpp.h is nu alleen-header, waardoor deze makkelijker te gebruiken is en makkelijker kan worden geïntegreerd met alternatieve C++-wrappers. Ga naar probleem 40195122.

De C API webgpu.h maakt het concept van Swapchain-objecten niet meer beschikbaar. Deze wijziging is bedoeld om nauw aan te sluiten bij de JavaScript API. De interne configuratie wordt nu uitgevoerd via de Configure()-methode van het nieuwe wgpu::Surface-object, dat in de toekomst kan worden gewijzigd. Neem een voorbeeld door in de documentatie Een app bouwen met WebGPU. Ga naar probleem 42241264.

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