WebGPU'daki (Chrome 124) Yenilikler

François Beaufort
François Beaufort

Salt okunur ve okuma-yazma 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 ürününde "readonly_and_readwrite_storage_textures" WGSL dil uzantısı mevcut olduğunda, artık bir 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ı.

Bu durumda, 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 çalışı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 üst kısmındaki requires readonly_and_readwrite_storage_textures; ile taşınabilirlik potansiyelini belirtmek için zorunludur yönergesini kullanmanız önerilir. Aşağıdaki örneği ve sorun şafak:1972 örneğini inceleyin.

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.

Service Worker'lar ve paylaşılan çalışan desteği

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

WebGPU'yu uzantı hizmet çalışanında nasıl kullanacağınızı öğrenmek için Chrome uzantı örneğini ve WebLLM Chrome uzantısını inceleyin.

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

Yeni bağdaştırıcı bilgisi özellikleri

Kullanıcı "WebGPU Geliştirici Özellikleri"ni etkinleştirdiyse requestAdapterInfo() çağrısı yapıldığında standart olmayan d3dShaderModel ve vkDriverVersion bağdaştırıcı bilgisi özellikleri kullanılabilir hale gelir. işaretle: chrome://flags/#enable-webgpu-developer-features Desteklendiğinde:

  • 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 sorun şafak:1254'e göz atın.

  • vkDriverVersion, Vulkan sürücüsü için tedarikçi firma tarafından belirtilen sürüm numarasıdır. Belgelere ve chromium:327457605 sorunu hakkında bilgi edinin.

Bağdaştırıcı bilgilerinde vkDriverVersion seçeneğini gösteren https://webgpureport.org ekran görüntüsü.
Bağdaştırıcı bilgileri vkDriverVersion https://webgpureport.org adresinde gösteriliyor.

Hata düzeltmeleri

layout: "auto" kullanarak eşleşen bağlama gruplarına sahip iki ardışık düzen oluşturmak, ardından ilk ardışık düzende bir bağlama grubu oluşturduktan sonra bunu ikinci ardışık düzende kullanmak GPUValidationError hatasına neden olur. Bu duruma izin verdiğimiz için bir uygulama hatası oluştu. Bu hata artık uygun testlerle düzeltildi. 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'ı JavaScript API spesifikasyonu ve Blink'in uygulamasıyla uyumlu hale getirmektedir. Sorun şafak:2459 bölümünü inceleyin.

Bunlar, öne çıkan özelliklerden yalnızca bazılarıdır. Taahhütlerin kapsamlı listesini inceleyin.

WebGPU'daki Yenilikler

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

Chrome 127 sürümü

Chrome 126

Chrome 125 sürümü

Chrome 124 sürümü

Chrome 123

Chrome 122

Chrome 121

Chrome 120

Chrome 119 sürümü

Chrome 118 sürümü

Chrome 117 sürümü

Chrome 116

Chrome 115 sürümü

Chrome 114 sürümü

Chrome 113