Étapes suivantes pour WebGPU

François Beaufort
François Beaufort
Corentin Wallez
Corentin Wallez

Publié le 21 novembre 2024

La spécification WebGPU est en constante évolution. De grandes entreprises comme Google, Mozilla, Apple, Intel et Microsoft se réunissent chaque semaine pour discuter de son développement. La réunion du groupe de travail Web la plus récente sur le GPU a donné un aperçu des principaux objectifs et fonctionnalités prévus pour la prochaine itération de WebGPU. Cet article de blog présente certains des points clés de cette réunion.

Atteindre l'état "Recommandation de candidat"

L'objectif principal de la réunion était de discuter des progrès du jalon 0 et de finaliser les problèmes à résoudre avant que le projet puisse atteindre le statut de recommandation candidate pour le W3C. Il s'agit de l'étape suivante du processus de normalisation, qui offre des garanties plus solides de stabilité et de protection de la propriété intellectuelle.

Les participants à la réunion ont convenu que ces problèmes ne constituaient pas de blocages et qu'ils pouvaient être résolus dans les meilleurs délais, ce qui ouvre la voie à la recommandation candidate du W3C pour WebGPU.

Prioriser les nouvelles fonctionnalités

Les participants à la réunion ont également hiérarchisé les nouvelles fonctionnalités. Ils ont commencé par une liste de demandes de fonctionnalités compilées à partir des commentaires de développeurs, d'implémentateurs et de personnes concernées.

Tableau blanc sur lequel figure une liste manuscrite de termes liés aux API de graphisme informatique, y compris "Bindless", "Subgroups", "MDI", "Push Constants", "UMA", "Subgroup Matrix", etc.

Après discussion, les principales fonctionnalités WebGPU pour l'IA ont été identifiées:

  • Sous-groupes et matrices de sous-groupes: permet à l'application d'utiliser une communication locale rapide entre les threads du GPU et de tirer parti du matériel de multiplication de matrices de taille fixe à côté des cœurs de nuanceur. Consultez la proposition de sous-groupes.

  • Buffers de texels: permettent de stocker et d'accéder de manière portable à de petits types de données, tels que des valeurs 16 bits ou 8 bits. Cela est important pour certains algorithmes de traitement d'images ML. Consultez les diapositives sur le tampon de texels.

  • Mappage de mémoire tampon UMA: améliorez les performances d'importation de données en réduisant ou en éliminant les copies et les coûts de synchronisation. Consultez le problème 2388 de la spécification.

Les fonctionnalités WebGPU suivantes sont également à l'étude et font l'objet d'une hiérarchisation afin de permettre de nouveaux types d'algorithmes de rendu:

  • Bindless: cette proposition de fonctionnalité très attendue est une condition préalable à la plupart des algorithmes de rendu de pointe, car ils ont besoin d'informations à l'échelle de la scène. La liaison sans lien permet aux nuanceurs d'utiliser un nombre illimité de ressources, y compris de textures, par rapport aux limites relativement strictes actuellement en vigueur.

  • Multi-draw indirect (Multi-dessin indirect) : permet aux calculs précédents sur le GPU de créer plusieurs dessins au lieu d'un seul avec drawIndirect précédemment. Il s'agit d'une fonctionnalité importante pour le rendu basé sur le GPU, comme pour le masquage d'objets par le GPU. Consultez la demande d'extraction 2315.

  • Opérations atomiques 64 bits: dans les tampons ou les textures, elles sont nécessaires pour effectuer une "rastreisation logicielle" sur le GPU, en regroupant le test de profondeur et l'écriture d'une charge utile 32 bits dans une seule opération atomicMax. Consultez le problème 4329.

Pour améliorer les fonctionnalités et l'intégration de WebGPU avec la plate-forme Web plus large, les fonctionnalités WebGPU suivantes ont été discutées:

  • Mode compatibilité: ce mode vise à permettre à WebGPU de s'exécuter sur une plus large gamme d'appareils, y compris ceux qui ne sont compatibles qu'avec OpenGL ES 3.1. Consultez la proposition de mode de compatibilité.

  • WebXR: permet au module de calques WebXR existant d'interagir avec WebGPU en fournissant des chaînes de remplacement WebGPU pour chaque type de calque. Consultez les diapositives sur l'intégration de WebGPU/WebXR.

  • Canvas2D: améliore l'interopérabilité entre Canvas 2D et WebGPU, en s'attaquant aux problèmes de performances et d'ergonomie. Cette proposition de transfert WebGPU permettrait d'accéder au dessin de texte et de tracés dans WebGPU, et d'appliquer le rendu WebGPU à Canvas 2D.

La réunion a également été l'occasion de présenter et de discuter des efforts visant à améliorer les outils et les bibliothèques WGSL. Parmi les initiatives notables, citons le développement de WESL (WGSL Extended Shading Language), qui vise à fournir un ensemble d'extensions de WGSL géré par la communauté.

Pour en savoir plus, consultez les notes brutes de la réunion.

Réflexions

Cette réunion a souligné l'importance de la collaboration entre le groupe de travail WebGPU, les développeurs et la communauté graphique plus large pour façonner l'avenir de WebGPU. Le groupe de travail recherche activement des commentaires sur les fonctionnalités proposées et s'engage à collaborer avec les développeurs pour s'assurer que WebGPU répond à leurs besoins.

Les prochaines évolutions de WebGPU promettent d'être un pas en avant important, en ouvrant de nouvelles possibilités pour les graphismes Web et en permettant aux développeurs de créer des expériences Web encore plus immersives et attrayantes pour l'IA.