Novità di WebGPU (Chrome 127)

François Beaufort
François Beaufort

Supporto sperimentale di OpenGL ES su Android

Ora puoi accedere a un GPUAdapter dal backend OpenGL ES quando richiedi la modalità di compatibilità WebGPU sperimentale in Chrome per Android. Ciò è particolarmente utile per i dispositivi Android che non supportano Vulkan 1.1 o versioni successive. Vedi l'esempio seguente e issue dawn:1545.

// Request a GPUAdapter in compatibility mode
const adapter = await navigator.gpu.requestAdapter({ compatibilityMode: true });
La pagina del report WebGPU mostra le informazioni su GPUAdapter dal backend OpenGL ES sul dispositivo Android.
Informazioni sull'adattatore OpenGL ES in webgpureport.org

Poiché questa funzionalità è ancora in fase sperimentale, devi eseguire i seguenti passaggi:

  1. Attiva i seguenti flag di Chrome: "Unsafe WebGPU Support", "WebGPU Developer Features" e "Enable command line on non-rooted devices".
  2. Attiva il debug USB sul tuo dispositivo Android.
  3. Collega il dispositivo Android alla workstation, esegui adb shell 'echo "_ --use-webgpu-adapter=opengles" > /data/local/tmp/chrome-command-line' per preferire il backend OpenGL ES a Vulkan e riavvia Chrome.

Attributo info di GPUAdapter

L'ottenimento di informazioni identificative su un adattatore ora può essere eseguito in modo sincrono con l'attributo info di GPUAdapter. In precedenza, la chiamata al metodo asincrono GPUAdapter requestAdapterInfo() era l'unico modo per ottenere le informazioni sull'adattatore. Tuttavia, requestAdapterInfo() è stato rimosso dalla specifica WebGPU e verrà rimosso da Chrome entro la fine dell'anno per dare agli sviluppatori web il tempo sufficiente per effettuare la transizione necessaria. Vedi il seguente esempio, Stato di Chrome e problema 335383516.

const adapter = await navigator.gpu.requestAdapter();
const info = adapter.info;

// During the transition period, you can use the following:
// const info = adapter.info || await adapter.requestAdapterInfo();

console.log(`Vendor: ${info.vendor}`); // "arm"
console.log(`Architecture: ${info.architecture}`); // "valhall"

Miglioramenti dell'interoperabilità di WebAssembly

Per consentire il passaggio diretto degli heap WebAssembly a WebGPU, le dimensioni dei seguenti argomenti BufferSource non sono più limitate a 2 GB: dynamicOffsetsData in setBindGroup(), source data in writeBuffer() e source data Pin writeTexture(). Vedi problema 339049388.

Miglioramento degli errori del codificatore di comandi

Alcuni errori di convalida generati dai codificatori di comandi ora avranno informazioni contestuali migliorate. Ad esempio, il tentativo di avviare un passaggio di calcolo mentre un passaggio di rendering era ancora aperto ha generato il seguente errore.

Command cannot be recorded while [CommandEncoder (unlabeled)] is locked and [RenderPassEncoder (unlabeled)] is currently open.
    at CheckCurrentEncoder (..\..\third_party\dawn\src\dawn\native\EncodingContext.h:106)

Questo descrive il motivo dell'errore, ma non indica quale chiamata ha effettivamente causato l'errore di convalida. Il seguente errore mostra i messaggi migliorati che includono il comando che ha attivato l'errore. Vedi modifica 192245.

Command cannot be recorded while [CommandEncoder (unlabeled)] is locked and [RenderPassEncoder (unlabeled)] is currently open.
 - While encoding [CommandEncoder (unlabeled)].BeginComputePass([ComputePassDescriptor]).

Aggiornamenti all'alba

L'API C webgpu.h non espone più wgpuSurfaceGetPreferredFormat(), l'equivalente C di wgpu::Surface::GetPreferredFormat() di Dawn. Utilizza invece wgpu::Surface::GetCapabilities() per ottenere l'elenco dei formati supportati, poi utilizza formats[0] per ottenere il formato della texture preferito per questa superficie. Nel frattempo, la chiamata a wgpu::Surface::GetPreferredFormat() genera un avviso di ritiro. Vedi problema 290.

Gli utilizzi delle texture supportati di una superficie sono ora disponibili tramite wgpu::SurfaceCapabilities::usages quando chiami wgpu::Surface::GetCapabilities(). Si prevede che includano sempre wgpu::TextureUsage::RenderAttachment. Vedi problema 301.

Questi sono solo alcuni dei punti salienti. Consulta l'elenco completo dei commit.

Novità di WebGPU

Un elenco di tutti gli argomenti trattati nella serie Novità di 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