Wat is er nieuw in WebGPU (Chrome 117)

François Beaufort
François Beaufort

Vertexbuffer ongedaan maken

Door null in plaats van een GPUBuffer door te geven aan setVertexBuffer() op GPURenderPassEncoder of GPURenderBundleEncoder kunt u een eerder ingestelde vertexbuffer in een bepaalde sleuf ongedaan maken. Zie issue dawn:1675 .

// Set vertex buffer in slot 0.
myRenderPassEncoder.setVertexBuffer(0, myVertexBuffer);

// Then later, unset vertex buffer in slot 0.
myRenderPassEncoder.setVertexBuffer(0, null);

Bindgroep ongedaan maken

Door null in plaats van een GPUBindGroup door te geven aan setBindGroup() op GPURenderPassEncoder of GPURenderBundleEncoder kunt u een eerder ingestelde bindgroep in een bepaalde sleuf ongedaan maken. Zie issue dawn:1675 .

// Set bing group in slot 0.
myRenderPassEncoder.setBindGroup(0, myBindGroup);

// Then later, unset bind group in slot 0.
myRenderPassEncoder.setBindGroup(0, null);

Fouten bij het maken van een asynchrone pijplijn uitschakelen wanneer het apparaat verloren gaat

De methoden createComputePipelineAsync() en createRenderPipelineAsync() van GPUDevice retourneren een promise die wordt opgelost wanneer het aanmaken van de pipeline is voltooid. Vanaf nu worden fouten bij het aanmaken van de asynchrone pipeline onderdrukt wanneer de GPUDevice lost gaat, zodat verloren apparaten zoveel mogelijk lijken te functioneren. Zie dawn issue:1874 .

Updates voor het maken van SPIR-V shadermodules

Het aanmaken van een SPIR-V shadermodule met createShaderModule() genereert nu een TypeError, tenzij u Chrome gebruikt met de vlag "Unsafe WebGPU Support", aangezien SPIR-V geen deel uitmaakt van de WebGPU-specificatie. Vóór deze wijziging genereerde het gebruik van SPIR-V in plaats daarvan een GPUInternalError . Zie wijziging chromium:4711911 .

Verbetering van de ontwikkelaarservaring

De validatiefoutmelding voor bindingen van bindgroeplay-outs in vertex shaders is verbeterd voor lees-schrijfopslagbuffers en alleen-schrijfopslagtextuurbindingen. Zie issue dawn:1883 .

Caching-pipelines met automatisch gegenereerde lay-out

Pipelines die zijn gemaakt met createRenderPipeline({ layout: "auto" }) maken nu gebruik van cachingmechanismen in Chrome. Dit betekent dat deze pipelines efficiënter worden aangemaakt en minder geheugen gebruiken. Zie issue dawn:1933 .

Dawn-updates

Het wgpu::RequestAdapterOptionsBackendType maakt nu deel uit van wgpu::RequestAdapterOptions om het voor applicaties gemakkelijker te maken om een specifieke backend aan te vragen bij het verkrijgen van een adapter. Zie het volgende voorbeeld en issue dawn:1875 .

wgpu::RequestAdapterOptions options = {
    .backendType = wgpu::BackendType::D3D12};

// Request D3D12 adapter.
myInstance.RequestAdapter(&options, myCallback, myUserData);

Er zijn verschillende aanvullende methoden geïmplementeerd voor Node.js. Zie wijziging dawn:142465 .

De webgpu.h C API heeft het type voor Booleaanse waarden gewijzigd van stdbool naar WGPUBool , wat een uint32_t is. Deze wijziging is doorgevoerd om ervoor te zorgen dat de API een equivalente ABI heeft in C en C++.

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 is behandeld.

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