Nouveautés du GPU Web (Chrome 117)

François Beaufort
François Beaufort

Annuler la définition du tampon de sommets

Transmettre null plutôt qu'un GPUBuffer à setVertexBuffer() sur GPURenderPassEncoder ou GPURenderBundleEncoder vous permet de désactiver un tampon de sommet précédemment défini dans un emplacement donné. Voir 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);

Désactiver le groupe de liaisons

Transmettre null plutôt qu'un GPUBindGroup à setBindGroup() sur GPURenderPassEncoder ou GPURenderBundleEncoder vous permet de désactiver un groupe de liaisons précédemment défini dans un emplacement donné. Voir 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);

Couper le son des erreurs liées à la création d'un 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. À partir de maintenant, les erreurs liées à la création d'un pipeline asynchrone seront mises sous silence lorsque GPUDevice sera défini sur lost pour donner l'impression que les appareils perdus fonctionnent autant que possible. Consultez le problème Dawn:1874.

Mises à jour de la création du module de nuanceur 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" l'indicateur SPIR-V ne fait pas partie de la spécification WebGPU. Avant cette modification, l'utilisation de SPIR-V entraînait la génération d'une erreur GPUInternalError. Voir modifier chromium:4711911.

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

Le message d'erreur de validation pour les liaisons de mise en page de groupe de liaisons dans le nuanceur de sommets a été amélioré pour les liaisons de tampon de stockage en lecture/écriture et les liaisons de texture 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 utiliseront moins de mémoire. Voir issue 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 le problème dawn:1875.

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

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

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

L'API C webgpu.h a changé son type pour les valeurs booléennes, passant de stdbool à WGPUBool, qui est uint32_t. Cette modification a été effectuée pour garantir que l'API dispose d'une ABI équivalente en C et C++.

Cette présentation ne porte que sur certains 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 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