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 supprimer un tampon de vertex précédemment défini dans un emplacement donné. Consultez 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);

Supprimer le groupe de liaisons

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

Erreurs de désactivation lors de la création de pipelines asynchrones lorsque l'appareil est perdu

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

Modifications apportées à 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 TypeError, sauf si vous exécutez Chrome avec l'indicateur "Unsafe WebGPU Support" (Prise en charge WebGPU non sécurisée), 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 GPUInternalError. Consultez change 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 liaison dans le nuanceur de vertex a été amélioré pour les liaisons de tampon de stockage en lecture/écriture et de texture de stockage en écriture seule. Consultez le problème dawn:1883.

Pipelines de mise en cache avec mise en page générée automatiquement

Les pipelines créés avec createRenderPipeline({ layout: "auto" }) bénéficient désormais des mécanismes de mise en cache de Chrome. Cela signifie que ces pipelines seront créés plus efficacement et utiliseront moins de mémoire. Consultez le problème 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 spécifique 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. Consultez change dawn:142465.

L'API C webgpu.h a modifié le type des valeurs booléennes, qui est passé de stdbool à WGPUBool, soit un uint32_t. Cette modification a été apportée pour s'assurer que l'API dispose d'une ABI équivalente en C et C++.

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