WebGPU'daki Yenilikler (Chrome{6/}127)

François Beaufort
François Beaufort

Android'de OpenGL ES için deneysel destek

Artık Android için Chrome'da deneysel WebGPU uyumluluk modu istenirken OpenGL ES arka ucundan GPUAdapter öğesine erişebilirsiniz. Bu özellik, özellikle Vulkan 1.1 veya sonraki sürümlerin desteklenmediği Android cihazlarda kullanışlıdır. Aşağıdaki örneğe bakın ve dawn:1545 sorununu gönderin.

// Request a GPUAdapter in compatibility mode
const adapter = await navigator.gpu.requestAdapter({ compatibilityMode: true });
WebGPU rapor sayfası, Android cihazdaki OpenGL ES arka ucundan GPUAdapter bilgilerini gösteriyor.
webgpureport.org adresindeki OpenGL ES bağdaştırıcı bilgileri

Bu özellik hâlâ deneme aşamasında olduğundan aşağıdaki adımları uygulamanız gerekir:

  1. Şu Chrome işaretlerini etkinleştirin: "Unsafe WebGPU Support", "WebGPU Developer Features" ve "Enable command line on non-rooted devices".
  2. Android cihazınızda USB hata ayıklamayı etkinleştirin.
  3. Android cihazınızı iş istasyonunuza bağlayın, adb shell 'echo "_ --use-webgpu-adapter=opengles" > /data/local/tmp/chrome-command-line' komutunu çalıştırarak OpenGL ES arka ucunu Vulkan'a tercih edin ve Chrome'u yeniden başlatın.

GPUAdapter info özelliği

Bir bağdaştırıcı hakkında tanımlayıcı bilgiler edinme işlemi artık GPUAdapter info özelliğiyle senkronize bir şekilde yapılabilir. Daha önce, bağdaştırıcı bilgilerini almanın tek yolu, eşzamansız GPUAdapter requestAdapterInfo() yöntemini çağırmaktı. Ancak requestAdapterInfo(), WebGPU spesifikasyonundan kaldırıldı ve web geliştiricilere gerekli geçişi yapmaları için yeterli zaman tanımak amacıyla bu yılın ilerleyen dönemlerinde Chrome'dan da kaldırılacak. Aşağıdaki örneğe, Chrome Status'a ve 335383516 numaralı soruna bakın.

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"

WebAssembly birlikte çalışabilirlik iyileştirmeleri

WebAssembly yığınlarının doğrudan WebGPU'ya aktarılması için aşağıdaki BufferSource bağımsız değişkenlerinin boyutları artık 2 GB ile sınırlı değildir: setBindGroup() içinde dynamicOffsetsData, writeBuffer() içinde source data ve Pin writeTexture() içinde source data. 339049388 numaralı sorunu inceleyin.

İyileştirilmiş komut kodlayıcı hataları

Komut kodlayıcılardan kaynaklanan bazı doğrulama hataları artık daha iyi bağlamsal bilgilere sahip olacak. Örneğin, bir oluşturma geçişi hâlâ açıkken bir işlem geçişi başlatmaya çalışmak aşağıdaki hataya neden oluyordu.

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)

Bu, hatanın nedenini açıklasa da hangi çağrının doğrulama hatasına neden olduğunu belirtmez. Aşağıdaki hata, hatayı tetikleyen komutu içeren iyileştirilmiş mesajlaşmayı gösterir. 192245 numaralı değişikliğe bakın.

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

Dawn güncellemeleri

webgpu.h C API artık Dawn'ın wgpu::Surface::GetPreferredFormat() öğesinin C karşılığı olan wgpuSurfaceGetPreferredFormat() öğesini kullanıma sunmuyor. Bunun yerine, desteklenen biçimlerin listesini almak için wgpu::Surface::GetCapabilities(), bu yüzey için tercih edilen doku biçimini almak için ise formats[0] kullanın. Bu süre zarfında, wgpu::Surface::GetPreferredFormat() işlevini çağırmak kullanımdan kaldırma uyarısı verir. 290. soruna bakın.

Bir yüzeyin desteklenen doku kullanımları artık wgpu::SurfaceCapabilities::usages wgpu::Surface::GetCapabilities() çağrıldığında kullanılabilir. Bu tür belgelerin her zaman wgpu::TextureUsage::RenderAttachment içermesi beklenir. 301 numaralı soruna 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 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