WebGPU'da Yenilikler (Chrome 136)

François Beaufort
François Beaufort

Yayınlanma tarihi: 23 Nisan 2025

GPUAdapterInfo isFallbackAdapter özelliği

GPUAdapterInfo isFallbackAdapter boole özelliği, GPUAdapter'ın daha geniş uyumluluk, daha öngörülebilir davranış veya daha iyi gizlilik karşılığında önemli performans sınırlamalarına sahip olup olmadığını gösterir. Kullanıcı tarafından sağlanan GPUDevice nesnelerini alan kitaplıklar, bu bilgilere GPUDevice'deki adapterInfo özelliği üzerinden erişemediği için bu ekleme yapılması gerekiyordu. Aşağıdaki örneğe ve 403172841 numaralı soruna bakın.

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

if (adapter?.info.isFallbackAdapter) {
  // The returned adapter is a software-backed fallback adapter, which
  // may have significantly lower performance and fewer features.
}

Chrome, yedek adaptörler için henüz destek sunmadığından isFallbackAdapter şu anda kullanıcıların cihazlarında her zaman false değerini döndürür. GPUAdapter isFallbackAdapter özelliğinin desteğinin sonlandırılıp kaldırılabileceğini araştırıyoruz. Gönderme amacı başlıklı makaleyi inceleyin.

D3D12'de gölgelendirici derleme süresinde iyileştirmeler

Chrome Ekibi, D3D12 arka ucunu kullanarak WebGPU'yu destekleyen cihazlar için ara gösterim (IR) ekleyerek WebGPU gölgelendirici dili derleyicisi olan Tint'i geliştirmeye devam ediyor. Tint'in soyut sözdizimi ağacı (AST) ile HLSL arka uç yazıcısı arasında konumlandırılan bu IR, derleyiciyi daha verimli ve sürdürülebilir hale getirecek, sonuç olarak hem geliştiricilere hem de kullanıcılara fayda sağlayacaktır. İlk testler, Tint'in yeni sürümünün Unity'nin WGSL gölgelendiricilerini HLSL'ye çevirirken 10 kata kadar daha hızlı olduğunu gösteriyor.

Bir akış şeması, WGSL gölgelendirici kodunu düşük seviyeli GPU talimatlarına dönüştürme sürecini gösterir.
Windows'da oluşturma ardışık düzeni oluşturma.

Android, ChromeOS ve macOS'te kullanıma sunulan bu iyileştirmeler, D3D12 arka ucuyla WebGPU'yu destekleyen Windows cihazlarda kademeli olarak kullanıma sunuluyor. 42251045 numaralı soruna bakın.

Kanvas görüntülerini kaydetme ve kopyalama

Chrome kullanıcıları artık WebGPU tuvalini sağ tıklayıp Resmi Farklı Kaydet… veya Resmi Kopyala bağlam menüsü seçeneklerine erişebilir. 40902474 numaralı soruna bakın.

Google Cloud blogu,
Kullanıcı, "Resmi Farklı Kaydet…" bağlam menüsünü seçti.

Artış uyumluluk modu kısıtlamalarını kaldırma

GPUDevice'te kullanıma sunulduğunda deneysel "core-features-and-limits" özelliği, chrome://flags/#enable-unsafe-webgpu işareti etkinleştirildiğinde tüm uyumluluk modu kısıtlamalarını (özellikler ve sınırlar) kaldırır. 395855517 numaralı soruna bakın.

featureLevel: "compatibility" seçeneğiyle GPUAdapter isteğinde bulunmak, tarayıcıya deneysel WebGPU uyumluluk modunu seçmesini önerir. Başarılı olursa sonuçtaki bağdaştırıcı "compatibility-defaulting" olur. Aksi takdirde, featureLevel: "core" seçeneğini kullanmakla aynı olan "varsayılan olarak çekirdek" olur. Ayrıca, requiredFeatures ve requiredLimits olmadan requestDevice() çağrıldığında GPUAdapter'ın varsayılan özelliklerine sahip bir GPUDevice istenir.

Temel varsayılan adaptörler her zaman "core-features-and-limits" özelliğini destekler ve bu adaptörlerden oluşturulan GPUDevice'larda otomatik olarak etkinleştirilir. Uyumluluk için varsayılan olarak ayarlanan bağdaştırıcılar için "core-features-and-limits" özelliği desteklenebilir ve bunlardan oluşturulan GPUDevice'lerde istenebilir. Her iki tür adaptör de hem temel hem de uyumluluk modunda isteğe bağlı olan "float32-blendable" gibi özellikleri destekleyebilir.

Aşağıdaki örnek, "float32-blendable" gerektiren ve varsa temel özelliklerin kullanımını destekleyen ancak temel özellikler kullanılamıyorsa yalnızca uyumluluk özelliklerini kullanan bir uygulama içindir.

const adapter = await navigator.gpu.requestAdapter({ featureLevel: "compatibility" });

if (!adapter || !adapter.features.has("float32-blendable")) {
  throw new Error("32-bit float textures blending support is not available");
}

const requiredFeatures = [];
if (adapter.features.has("core-features-and-limits")) {
  requiredFeatures.push("core-features-and-limits");
}

const device = await adapter.requestDevice({ requiredFeatures });

if (!device.features.has("core-features-and-limits")) {
  // Compatibility mode restrictions validation rules will apply.
}

Deneysel GPUAdapter featureLevel ve isCompatibilityMode özellikleri, "core-features-and-limits" özelliği lehine kaldırıldı. 395855516 numaralı soruna bakın.

Dawn güncellemeleri

Geri çağırmanın iptal edildiğini ancak etkinlikle ilişkili arka plan işlemlerinin (ör. derleme) devam edebileceğini netleştirmek için callback status enum InstanceDropped, CallbackCancelled olarak yeniden adlandırıldı. Daha sonra başka bir iptal mekanizması eklenmesi ihtimaline karşı yeni ad daha genel olarak uygulanabilir. 520 numaralı sorunu inceleyin.

Hata kapsamı yığınının açılamadığını belirten wgpu::PopErrorScopeStatus::EmptyStack enum'u, wgpu::PopErrorScopeStatus::Error olarak yeniden adlandırıldı (bu enum daha genel olarak da uygulanabilir). Geri çağırma artık hata ayıklamaya yardımcı olmak için ilgili bir hata açıklama mesajı da içeriyor. 369. sorunu inceleyin.

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