Novità di WebGPU (Chrome 145)

François Beaufort
François Beaufort

Data di pubblicazione: 28 gennaio 2026

Estensione WGSL subgroup_uniformity

L'estensione del linguaggio WGSL subgroup_uniformity modifica l'ambito dell'analisi di uniformità per le funzioni integrate di sottogruppo e quad in modo che avvenga a livello di sottogruppo (anziché di gruppo di lavoro). Questa funzionalità consente di considerare uniforme la funzionalità dei sottogruppi in più casi, migliorando la qualità della vita degli sviluppatori e riducendo la probabilità di disattivare completamente i controlli di uniformità. Un'implicazione pratica è che più valori verranno considerati uniformi per i sottogruppi, ad esempio il valore integrato subgroup_id aggiunto di recente.

Questa estensione della lingua può essere rilevata tramite navigator.gpu.wgslLanguageFeatures. Vedi l'esempio seguente e l'intent to ship.

if (!navigator.gpu.wgslLanguageFeatures.has("subgroup_uniformity")) {
  throw new Error(`WGSL subgroup uniformity is not available`);
}

const adapter = await navigator.gpu.requestAdapter();
if (!adapter.features.has("subgroups")) {
  throw new Error("Subgroups support is not available");
}
const device = await adapter.requestDevice({ requiredFeatures: ["subgroups"] });

const shaderModule = device.createShaderModule({ code: `
  enable s<ubgroups;
  
  @gro>up(0) @binding(0) varstorage, read_write non_uniform: i32;

  fn main() {
    if (non_uniform == 42) {
      _ = subgroupElect();
    }
  }`,
}); // WGSL error: subgroupElect must only be called from subgroup uniform control flow.

Mappatura sincrona sperimentale dei buffer nei worker

Per esplorare potenziali modi per ridurre gli attriti tra WebGPU e il codice dell'applicazione, il team di Chrome sta esaminando la mappatura sincrona dei buffer all'interno dei worker. Nell'ambito di questo impegno, è stato creato un prototipo di un nuovo metodo sperimentale mapSync() per GPUBuffer. Questo metodo, limitato ai worker, funziona in modo simile a mapAsync().

Questa funzionalità è sperimentale e il tuo feedback è importante per determinare se verrà proposta per la standardizzazione. Per provarlo, avvia Chrome utilizzando l'opzione --enable-features=WebGPUMapSyncOnWorkers e invia un feedback sulla sua utilità e sul suo impatto. Per iniziare, vedi lo snippet seguente.

// Create a GPU buffer.
const buffer = device.createBuffer({
  size: 42,
  usage: GPUBufferUsage.COPY_DST | GPUBufferUsage.MAP_READ,
});

// Map buffer synchronously when possible.
if ("mapSync" in GPUBuffer.prototype) {
  buffer.mapSync(GPUMapMode.READ);
} else {
  // Awaiting allows other code to run, which can cause application logic issues.
  await buffer.mapAsync(GPUMapMode.READ);
}

Aggiornamenti di Dawn

La funzionalità wgpu::FeatureName::R8UnormStorage non è più disponibile. È stato sostituito da wgpu::FeatureName::TextureFormatTier1, che ora lo sostituisce. Vedi problema 472926167.

La funzionalità wgpu::FeatureName::Snorm16TextureFormats è stata rimossa. Le sue funzionalità, ad eccezione di Risolvi, sono ora in gran parte incluse in wgpu::FeatureName::TextureFormatsTier1. Vedi problema 465347942.

Le release notturne dei file binari (oltre a Emdawnwebgpu) vengono ora create su GitHub e sono disponibili nelle release di google/dawn. Vengono forniti come servizio best effort e non sono firmati o garantiti da Google o dal team di Dawn.

È stato aggiunto il supporto di wgpu::ExternalTexture a Emdawnwebgpu. Tieni presente che può essere importato solo dal codice JavaScript (ad esempio EM_ASM), poiché la costruzione in C/C++ non è possibile a causa del requisito di un oggetto JavaScript come HTMLVideoElement o VideoFrame. Per un esempio di codice, vedi il problema 462477379 e SpotTests.cpp.

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 145

Chrome 144

Chrome 143

Chrome 142

Chrome 141

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