Nouveautés de WebGPU (Chrome 140)

François Beaufort
François Beaufort

Publié le 27 août 2025

Les requêtes d'appareil consomment l'adaptateur

Selon la spécification WebGPU, un adaptateur est marqué comme "consommé" lorsqu'une requête d'appareil aboutit. Par conséquent, tous les appels requestDevice() ultérieurs utilisant le même adaptateur entraîneront désormais une promesse rejetée. Auparavant, ces appels renvoyaient un appareil perdu lors de la création. Consultez le problème 415825174.

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

await adapter.requestDevice(); // Fails because adapter has been consumed.

Raccourci pour utiliser une texture lorsqu'une vue de texture est utilisée

Un GPUTexture peut désormais être utilisé directement comme GPUBindingResource pour être exposé au nuanceur à des fins de liaison. Il peut également être utilisé comme GPURenderPassColorAttachment view, GPURenderPassColorAttachment resolveTarget et GPURenderPassDepthStencilAttachment view pour une meilleure ergonomie. Cette approche est plus simple que l'utilisation d'un GPUTextureView pour obtenir une vue par défaut. Consultez le problème 425906323.

const bindGroup = myDevice.createBindGroup({
  layout: myPipeline.getBindGroupLayout(0),
  entries: [
    { binding: 0, resource: mySampler },
    { binding: 1, resource: myTexture }, // Same as myTexture.createView()
    { binding: 2, resource: myExternalTexture },
    { binding: 3, resource: myBuffer },
  ],
});

WGSL textureSampleLevel est compatible avec les textures 1D

Les textures 1D peuvent désormais être échantillonnées à l'aide de textureSampleLevel() pour assurer la cohérence avec les textures 2D. Cela vous permet d'échantillonner une texture 1D à partir d'un nuanceur de sommets, ce qui n'était auparavant possible qu'à partir d'un nuanceur de fragments avec textureSample(). Consultez le problème 382514673.

Abandon de l'utilisation de la texture de stockage en lecture seule bgra8unorm

L'utilisation du format "bgra8unorm" avec des textures de stockage en lecture seule est désormais obsolète. La spécification WebGPU l'interdit explicitement, et son autorisation précédente dans Chrome était un bug, car ce format est destiné à un accès en écriture seule et n'est pas portable. Consultez le problème 427681156.

Suppression de l'attribut GPUAdapter isFallbackAdapter

Comme annoncé précédemment, l'attribut GPUAdapter isFallbackAdapter est désormais supprimé. Il est remplacé par l'attribut GPUAdapterInfo isFallbackAdapter introduit dans Chrome 136. Consultez l'intention de suppression.

Informations Dawn

La fonction wgpuInstanceGetWGSLLanguageFeatures() permet d'obtenir la liste des fonctionnalités de langage WGSL compatibles avec l'instance. Auparavant, elle renvoyait une valeur WGPUStatus. Elle a été mise à jour pour ne pas renvoyer de valeur, car elle ne peut pas échouer. Consultez le problème 429178774.

La fonction wgpuSurfacePresent() renvoie désormais une erreur WGPUStatus si la surface ne comporte pas de texture actuelle. Consultez le problème 425930323.

La nouvelle fonctionnalité wgpu::InstanceFeatureName::MultipleDevicesPerAdapter permet aux adaptateurs de créer plusieurs appareils sans être "consommés". Consultez le problème 415825174.

Le bouton d'activation de l'appareil dump_shaders_on_failure vous permet de vider les nuanceurs uniquement en cas d'échec à des fins de débogage. Il s'applique exclusivement aux backends D3, mais il est possible qu'il soit étendu à d'autres backends à l'avenir. Consultez le problème 429187478.

Plusieurs modifications ont été apportées au backend Vulkan pour réduire la surcharge lors de l'envoi de passes de rendu, en particulier pour améliorer les performances sur les GPU mobiles. Par exemple, la mise en cache des VkFramebuffers.

Il ne s'agit que de quelques-uns des principaux points forts. Consultez la liste exhaustive des commits.

Nouveautés de WebGPU

Liste de tous les éléments abordés dans la série Nouveautés de WebGPU.

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