WebGPU'daki yenilikler (Chrome 145)

François Beaufort
François Beaufort

Yayınlanma tarihi: 28 Ocak 2026

WGSL subgroup_uniformity uzantısı

WGSL dil uzantısı subgroup_uniformity, alt grup ve dörtlü yerleşik işlevler için tekdüzelik analizinin kapsamını alt grup düzeyinde (çalışma grubu yerine) gerçekleşecek şekilde değiştirir. Bu özellik, alt grup işlevinin daha fazla durumda tek tip olarak kabul edilmesini sağlayarak geliştiriciler için daha iyi bir yaşam kalitesi ve tek tip denetimlerinin tamamen devre dışı bırakılma olasılığının daha düşük olmasını sağlar. Bunun pratik sonucu, daha fazla değerin alt grup açısından tekdüze olarak görülmesidir. Örneğin, kısa süre önce eklenen subgroup_id yerleşik değeri.

Bu dil uzantısı, navigator.gpu.wgslLanguageFeatures kullanılarak özellik algılama işlemine tabi tutulabilir. Aşağıdaki örneğe ve gönderme amacı'na bakın.

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.

Çalışanlarda deneysel senkron arabellek eşleme

Chrome ekibi, WebGPU ile uygulama kodu arasındaki sürtünmeyi azaltmanın olası yollarını araştırmak için çalışanlar içinde senkron arabellek eşlemeyi inceliyor. Bu çabanın bir parçası olarak, GPUBuffer için yeni bir deneysel mapSync() yöntemi prototipi oluşturuldu. Yalnızca çalışanlar tarafından kullanılabilen bu yöntem, mapAsync() ile benzer şekilde çalışır.

Bu özellik deneyseldir ve standartlaştırma için önerilip önerilmeyeceğini belirlemek üzere geri bildirimlerinizi bekliyoruz. Özelliği denemek için Chrome'u --enable-features=WebGPUMapSyncOnWorkers anahtarını kullanarak başlatın ve yararı ile etkisi hakkında geri bildirim gönderin. Başlamak için aşağıdaki snippet'e bakın.

// 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);
}

Dawn ile ilgili güncellemeler

wgpu::FeatureName::R8UnormStorage özelliği artık kullanılamıyor. Bu hizmetin yerini wgpu::FeatureName::TextureFormatTier1 aldı. 472926167 numaralı soruna bakın.

wgpu::FeatureName::Snorm16TextureFormats özelliği kaldırıldı. Resolve hariç olmak üzere bu uygulamanın özellikleri artık büyük ölçüde wgpu::FeatureName::TextureFormatsTier1 tarafından kapsanmaktadır. 465347942 numaralı sorunu inceleyin.

İkili dosyaların (Emdawnwebgpu'ya ek olarak) gece sürümleri artık GitHub'da oluşturuluyor ve google/dawn releases'de kullanıma sunuluyor. Bu hizmet, en iyi çaba hizmeti olarak sağlanır ve Google veya Dawn ekibi tarafından imzalanmaz ya da garanti edilmez.

Emdawnwebgpu'ya wgpu::ExternalTexture desteği eklendi. C/C++'da HTMLVideoElement veya VideoFrame gibi bir JavaScript nesnesi gerektiğinden oluşturma mümkün olmadığından yalnızca JavaScript kodundan (ör. EM_ASM) içe aktarılabileceğini unutmayın. Örnek kod için 462477379 numaralı soruna ve SpotTests.cpp dosyasına bakın.

Bu özet yalnızca önemli noktalardan bazılarını kapsar. Kapsamlı commit listesine göz atın.

WebGPU'daki yenilikler

WebGPU'daki Yenilikler serisinde ele alınan her şeyin listesi.

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