Passaggi successivi per WebGPU

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

Data di pubblicazione: 21 novembre 2024

La specifica WebGPU è in continua evoluzione e le principali aziende come Google, Mozilla, Apple, Intel e Microsoft si riuniscono settimanalmente per discuterne lo sviluppo. La riunione più recente del gruppo di lavoro GPU per il web ha offerto un'idea degli obiettivi e delle funzionalità principali previsti per la prossima iterazione di WebGPU. Questo post del blog illustra alcuni dei punti chiave emersi dal meeting.

Raggiungere lo stato di candidato per i consigli

Uno degli obiettivi principali della riunione era discutere dell'avanzamento del traguardo 0 e finalizzare i problemi che devono essere risolti prima che possa raggiungere lo stato di raccomandazione candidato per il W3C. Si tratta del passaggio successivo nel processo di standardizzazione e offre garanzie più solide di stabilità e protezione della proprietà intellettuale.

I partecipanti alla riunione hanno convenuto che non ci sono blocchi e che questi problemi possono essere risolti in modo tempestivo, aprendo la strada al recommendation candidate W3C di WebGPU.

Assegnare la priorità alle nuove funzionalità

I partecipanti alla riunione hanno anche dato la priorità alle nuove funzionalità. Hanno iniziato con un elenco di richieste di funzionalità compilato in base al feedback di sviluppatori, implementatori e stakeholder.

Una lavagna con un elenco scritto a mano di termini relativi alle API di grafica computer, tra cui "Bindless", "Subgroups", "MDI", "Push Constants", "UMA", "Subgroup Matrix" e altri.

Al termine della discussione, sono state identificate le seguenti funzionalità chiave di WebGPU per l'IA:

  • Matrici di sottogruppi e sottogruppi: consentono all'applicazione di utilizzare una comunicazione locale rapida tra i thread della GPU e di sfruttare l'hardware di moltiplicazione di matrici di dimensioni fisse accanto ai core dello shader. Consulta la proposta relativa ai sottogruppi.

  • Buffer di texel: forniscono un modo più efficiente per archiviare e accedere a tipi di dati di piccole dimensioni, come valori a 16 o 8 bit, in modo portatile. Questo è importante per alcuni algoritmi di elaborazione delle immagini ML. Consulta le slide sul buffer di texel.

  • Mappatura dei buffer UMA: migliora le prestazioni di caricamento dei dati riducendo o eliminando le copie e il sovraccarico della sincronizzazione. Consulta il problema relativo alle specifiche 2388.

Sono in fase di valutazione e di assegnazione della priorità anche le seguenti funzionalità WebGPU per sbloccare nuovi tipi di algoritmi di rendering:

  • Senza vincoli: questa proposta di funzionalità molto attesa è un prerequisito per la maggior parte degli algoritmi di rendering all'avanguardia, in quanto richiedono informazioni su tutta la scena. La funzionalità Bindless consente agli shader di utilizzare un numero illimitato di risorse, incluse le texture, rispetto ai limiti relativamente rigidi attualmente in vigore.

  • Multi-draw indiretto: consente ai calcoli precedenti sulla GPU di creare più draw anziché uno solo con drawIndirect in precedenza. Si tratta di una funzionalità importante per il rendering basato su GPU, ad esempio per il culling degli oggetti GPU. Consulta la richiesta di pull 2315.

  • Operazioni atomiche a 64 bit: in buffer o texture, sono necessarie per eseguire la "rasterizzazione software" sulla GPU, raggruppando il test di profondità e la scrittura di un payload a 32 bit in un'unica operazione atomicMax. Consulta il problema 4329.

Per migliorare le funzionalità e l'integrazione di WebGPU con la piattaforma web più ampia, sono state discusse le seguenti funzionalità di WebGPU:

  • Modalità di compatibilità: questa modalità ha lo scopo di consentire l'esecuzione di WebGPU su una gamma più ampia di dispositivi, inclusi quelli che supportano solo OpenGL ES 3.1. Consulta la proposta per la modalità di compatibilità.

  • WebXR: consente al modulo Livelli WebXR esistente di interfacciarsi con WebGPU fornendo swapchain WebGPU per ogni tipo di livello. Consulta le slide sull'integrazione di WebGPU/WebXR.

  • Canvas2D: migliora l'interoperabilità tra Canvas 2D e WebGPU, risolvendo i problemi relativi alle prestazioni e all'ergonomia. Questa proposta di trasferimento WebGPU consentirebbe di accedere al disegno di testo e percorsi in WebGPU e di applicare il rendering WebGPU a Canvas 2D.

Durante la riunione sono state presentate anche presentazioni e discussioni sugli sforzi per migliorare gli strumenti e le librerie WGSL. Un'iniziativa importante è lo sviluppo di WESL (WGSL Extended Shading Language), che mira a fornire un insieme di estensioni di WGSL basato sulla community.

Puoi trovare ulteriori informazioni nelle note non elaborate delle riunioni.

Pensieri

Questo incontro ha evidenziato l'importanza della collaborazione tra il gruppo di lavoro WebGPU, gli sviluppatori e la community grafica più ampia per dare forma al futuro di WebGPU. Il gruppo di lavoro è alla ricerca di feedback sulle funzionalità proposte e si impegna a collaborare con gli sviluppatori per garantire che WebGPU soddisfi le loro esigenze.

Le prossime evoluzioni di WebGPU promettono di essere un passo avanti significativo, sbloccando nuove possibilità per la grafica web e consentendo agli sviluppatori di creare esperienze web ancora più immersive e coinvolgenti per l'IA.