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 gelişmiş 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, GPUDevice üzerindeki adapterInfo özelliği aracılığıyla bu bilgilere erişemediği için bu ekleme gerekliydi. 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 yanlış değerini döndürür. GPUAdapter isFallbackAdapter özelliğinin desteğinin sonlandırılıp kaldırılabileceğini araştırıyoruz. Kargolama niyeti 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 zaten erişilebilen bu iyileştirmeler, D3D12 arka ucuyla WebGPU'yu destekleyen Windows cihazlarda kademeli olarak kullanıma sunuluyor. 42251045 numaralı sorunu inceleyin.

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 içerik menüsü seçeneklerine erişebilir. 40902474 sorununa bakın.

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

Artış uyumluluk modu kısıtlamaları

Deneysel "core-features-and-limits" özelliği bir GPUDevice'te kullanılabildiğinde, 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. İşlem başarılı olursa ortaya çıkan bağdaştırıcı "uyumluluk varsayılanı" olur. Aksi takdirde, featureLevel: "core" seçeneğini kullanmakla aynı olan "varsayılan çekirdek" kullanılır. Ayrıca, requiredFeatures ve requiredLimits olmadan requestDevice() çağrıldığında GPUAdapter'ın varsayılan özelliklerine sahip bir GPUDevice istenir.

Çekirdek varsayılanı olan bağdaştırıcılar her zaman "core-features-and-limits" özelliğini destekler ve bu özellik, bunlardan 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 bu bağdaştırıcılardan oluşturulan GPUDevice'larda istenebilir. Her iki tür adaptör de hem temel hem de uyumluluk modlarında 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 yoksa 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 ile ilgili güncellemeler

Geri çağırma işleminin iptal edildiğini ancak etkinlik ile ilişkili arka plan işlemlerinin (ör. ardışık düzen derlemesi) 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 bir şekilde uygulanabilir. 520 numaralı soruna bakın.

Hata kapsamı yığınının çıkarı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 numaralı soruna bakın.

Bu, 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 tüm konuların listesi.

Chrome 155-156

Chrome 153-154

Chrome 151-152

Chrome 149-150

Chrome 147-148

Chrome 146

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