Nouveautés de WebGPU (Chrome 140)

François Beaufort
François Beaufort

Date de publication : 27 août 2025

Les demandes d'appareil consomment l'adaptateur

Selon la spécification WebGPU, un adaptateur est marqué comme "consommé" lorsqu'une requête d'appareil est traitée avec succès. Par conséquent, tout appel requestDevice() ultérieur utilisant le même adaptateur entraînera désormais une promesse refusé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 là où une vue de texture est utilisée

Une GPUTexture peut désormais être utilisée directement en tant que GPUBindingResource pour être exposée au nuanceur pour la 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'une 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 vertex, ce qui n'était auparavant possible qu'à partir d'un nuanceur de fragment avec textureSample(). Voir le problème 382514673.

Obsolète l'utilisation de textures 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. Son autorisation antérieure 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 isFallbackAdapter de GPUAdapter

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

Mises à jour de l'Aube

La fonction wgpuInstanceGetWGSLLanguageFeatures() permet d'obtenir la liste des fonctionnalités du 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 possède pas de texture actuelle. Voir 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 bascule de l'appareil dump_shaders_on_failure vous permet de vider les nuanceurs uniquement en cas d'échec, à des fins de débogage. Elle s'applique exclusivement aux backends D3, mais il est possible qu'elle soit étendue à 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 : Mise en cache des VkFramebuffers.

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

Nouveautés de WebGPU

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

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