Nouveautés du GPU Web (Chrome 117)

François Beaufort
François Beaufort

Définir le tampon de sommets

Transmettre null plutôt qu'un GPUBuffer à setVertexBuffer() sur GPURenderPassEncoder ou GPURenderBundleEncoder vous permet de désactiver un tampon de sommets précédemment défini dans un emplacement donné. Voir le problème dawn:1675.

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

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

Désactiver le groupe de liaisons

Transmettre null plutôt qu'un GPUBindGroup à setBindGroup() sur GPURenderPassEncoder ou GPURenderBundleEncoder vous permet de rétablir un groupe de liaison précédemment défini dans un emplacement donné. Voir le problème dawn:1675.

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

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

Silencieux des erreurs de création de pipeline asynchrone en cas de perte de l'appareil

Les méthodes createComputePipelineAsync() et createRenderPipelineAsync() de GPUDevice renvoient une promesse qui se résout une fois la création du pipeline terminée. Désormais, les erreurs de création de pipeline asynchrone seront masquées lorsque GPUDevice est lost afin que les appareils perdus semblent fonctionner autant que possible. Consultez le problème Dawn:1874.

Mises à jour de la création de modules de nuanceurs SPIR-V

La création d'un module de nuanceur SPIR-V avec createShaderModule() génère désormais une erreur de type, sauf si vous exécutez Chrome avec l'option "Unsafe WebGPU Support" (Prise en charge de WebGPU non sécurisée), car SPIR-V ne fait pas partie de la spécification WebGPU. Avant ce changement, l'utilisation de SPIR-V générait un GPUInternalError à la place. Consultez la modification chromium:4711911.

Améliorer l'expérience des développeurs

Le message d'erreur de validation des liaisons de mise en page de groupe de liaisons dans le nuanceur de vertex a été amélioré pour les liaisons de tampons de stockage en lecture-écriture et de textures de stockage en écriture seule. Voir issue dawn:1883.

Mettre en cache des pipelines avec une mise en page générée automatiquement

Les pipelines créés avec createRenderPipeline({ layout: "auto" }) exploitent désormais les mécanismes de mise en cache dans Chrome. Cela signifie que ces pipelines seront créés plus efficacement et qu'ils utiliseront moins de mémoire. Voir problème dawn:1933.

Actualités de l'aube

wgpu::RequestAdapterOptionsBackendType fait désormais partie de wgpu::RequestAdapterOptions pour permettre aux applications de demander plus facilement un backend particulier lors de l'obtention d'un adaptateur. Consultez l'exemple suivant et issue dawn:1875.

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

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

Plusieurs méthodes supplémentaires ont été implémentées pour Node.js. Voir Modifier dawn:142465.

Le type de l'API C webgpu.h pour les valeurs booléennes est passé de stdbool à WGPUBool, qui est un uint32_t. Cette modification a été apportée pour s'assurer que l'API dispose d'un ABI équivalent en C et C++.

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

Nouveautés de WebGPU

Liste de tout ce qui a été abordé dans la série Nouveautés de WebGPU.

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