Nouveautés du GPU Web (Chrome 117)

François Beaufort
François Beaufort

Désactiver le tampon des sommets

La transmission de null au lieu d'un GPUBuffer à setVertexBuffer() sur GPURenderPassEncoder ou GPURenderBundleEncoder vous permet d'annuler la définition d'un tampon de sommets 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);

Annuler la définition du groupe de liaisons

La transmission de null au lieu d'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 lors de la création asynchrone d'un pipeline en cas de perte d'un 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 asynchrone du pipeline seront mises sous silence lorsque GPUDevice est défini sur lost pour que les appareils perdus semblent fonctionner autant que possible. Consultez dawn issue:1874.

Mises à jour apportées à 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 TypeError, sauf si vous exécutez Chrome avec l'indicateur "Unsafe WebGPU Support", car 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. Consultez la section Modifier chromium:4711911.

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

Amélioration du message d'erreur de validation pour les liaisons de mise en page de groupe de liaisons dans le nuanceur de sommets pour le 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" }) tirent désormais parti des 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.

Mises à jour 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 méthodes supplémentaires ont été implémentées pour Node.js. Voir change dawn:142465.

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

Nous n'aborderons ici que certains des points clés. Consultez la liste exhaustive des commits.

Nouveautés de WebGPU

Liste des points abordés dans la série Nouveautés de WebGPU.

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