WebGPU'daki (Chrome 124) Yenilikler

François Beaufort
François Beaufort

Salt okunur ve salt okunur/yazılabilir depolama dokuları

Depolama doku bağlama türü, gölgelendiricilerin TEXTURE_BINDING kullanımını eklemeden depolama dokularından okumasına ve belirli biçimlerde karma okuma ve yazma işlemleri gerçekleştirmesine olanak tanır. navigator.gpu.wgslLanguageFeatures'te "readonly_and_readwrite_storage_textures" WGSL dil uzantısı mevcut olduğunda artık bağlama grubu düzeni oluştururken GPUStorageTexture erişimini "read-write" veya "read-only" olarak ayarlayabilirsiniz. Daha önce bu özellik "write-only" ile sınırlıydı.

Böylece, WGSL gölgelendirici kodunuz depolama dokuları için read_write ve read erişim niteleyicisini kullanabilir, textureLoad() ve textureStore() yerleşik işlevleri buna uygun şekilde davranır ve bir çalışma grubundaki doku belleği erişimlerini senkronize etmek için yeni bir textureBarrier() yerleşik işlevi kullanılabilir.

WGSL gölgelendirici kodunuzun en üstünde requires readonly_and_readwrite_storage_textures; ile birlikte taşınabilirlik olmaması olasılığını belirtmek için bir requires-directive kullanılması önerilir. Aşağıdaki örneğe ve sayı dawn:1972'ye bakın.

if (!navigator.gpu.wgslLanguageFeatures.has("readonly_and_readwrite_storage_textures")) {
  throw new Error("Read-only and read-write storage textures are not available");
}

const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();

const bindGroupLayout = device.createBindGroupLayout({
  entries: [{
    binding: 0,
    visibility: GPUShaderStage.COMPUTE,
    storageTexture: {
      access: "read-write", // <-- New!
      format: "r32uint",
    },
  }],
});

const shaderModule = device.createShaderModule({ code: `
  requires readonly_and_readwrite_storage_textures;

  @group(0) @binding(0) var tex : texture_storage_2d<r32uint, read_write>;

  @compute @workgroup_size(1, 1)
  fn main(@builtin(local_invocation_id) local_id: vec3u) {
    var data = textureLoad(tex, vec2i(local_id.xy));
    data.x *= 2;
    textureStore(tex, vec2i(local_id.xy), data);
  }`
});

// You can now create a compute pipeline with this shader module and
// send the appropriate commands to the GPU.

Hizmet çalışanları ve paylaşılan çalışan desteği

Chrome'daki WebGPU, web işçisi desteğini bir üst seviyeye taşıyarak artık hem hizmet işçileri hem de ortak işçiler için destek sunmaktadır. Arka plan görevlerini ve çevrimdışı özellikleri iyileştirmek için hizmet çalışanlarını, komut dosyaları arasında verimli kaynak paylaşımı için de paylaşılan çalışanları kullanabilirsiniz. chromium:41494731 sorunu bölümüne bakın.

WebGPU'nun bir uzantı hizmet işçisinde nasıl kullanılacağını görmek için Chrome uzantısı örneğine ve WebLLM Chrome uzantısına göz atın.

WebLLM Chrome uzantısının ekran görüntüsü.
WebLLM Chrome uzantısı.

Yeni adaptör bilgileri özellikleri

Kullanıcı chrome://flags/#enable-webgpu-developer-features'te "WebGPU Geliştirici Özellikleri" işaretini etkinleştirdiyse standart olmayan d3dShaderModel ve vkDriverVersion bağdaştırıcısı bilgi özellikleri artık requestAdapterInfo() çağrıldıktan sonra kullanılabilir. Desteklenen durumlarda:

  • d3dShaderModel, desteklenen maksimum D3D gölgelendirici model numarasıdır. Örneğin, 62 değeri mevcut sürücünün HLSL SM 6.2'yi desteklediğini gösterir. Belgelere ve issue dawn:1254 başlıklı makaleye bakın.

  • vkDriverVersion, Vulkan sürücüsünün tedarikçi firma tarafından belirtilen sürüm numarasıdır. Belgeleri ve chromium:327457605 sorununu inceleyin.

Adaptör bilgilerinde vkDriverVersion&#39;ı gösteren https://webgpureport.org ekran görüntüsü.
https://webgpureport.org adresinde gösterilen vkDriverVersion adaptör bilgileri.

Hata düzeltmeleri

layout: "auto" kullanarak eşleşen bindgroup'lar içeren iki ardışık düzen oluşturma, ardından ilk ardışık düzenle bir bindgroup oluşturma ve bunu ikinci ardışık düzende kullanma işlemi artık GPUValidationError hatası veriyor. Bu durum, uygun testler ile düzeltilen bir uygulama hatasıydı. Issue dawn:2402'yi inceleyin.

Şafak güncellemeleri

Dawn API'de, wgpuDeviceSetUncapturedErrorCallback ile yakalanmamış hata geri çağırma kümesi artık GPU cihazı kaybolduktan sonra çağrılamıyor. Bu düzeltme, Dawn'u JavaScript API spesifikasyonu ve Blink'in uygulamasıyla uyumlu hale getirir. issue dawn:2459 konusuna bakın.

Bunlar, öne çıkan özelliklerden yalnızca bazılarıdır. Kapsamlı commit listesine göz atın.

WebGPU'daki Yenilikler

WebGPU'daki Yenilikler serisinde ele alınan tüm konuların listesi.

Chrome 131

Chrome 130

Chrome 129

Chrome 128 sürümü

Chrome 127

Chrome 126

Chrome 125 sürümü

Chrome 124

Chrome 123

Chrome 122

Chrome 121

Chrome 120

Chrome 119

Chrome 118

Chrome 117

Chrome 116

Chrome 115

Chrome 114 sürümü

Chrome 113