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, bir GPUAdapter'ın daha geniş uyumluluk, daha tahmin edilebilir davranış veya daha iyi gizlilik karşılığında önemli performans sınırlamalarına sahip olup olmadığını belirtir. Kullanıcı tarafından sağlanan GPUDevice nesnelerini alan kitaplıklar, GPUDevice'daki adapterInfo özelliği aracılığıyla bu bilgilere erişemediğinden 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 henüz yedek bağdaştırıcılar için destek sunmadığından isFallbackAdapter, kullanıcıların cihazlarında şu anda her zaman yanlış değerini alır. GPUAdapter isFallbackAdapter özelliğinin desteğinin sonlandırılıp kaldırılıp kaldırılamayacağını araştırıyoruz. Gönderme niyeti bölümüne bakın.

D3D12'de gölgelendirici derleme süresi iyileştirmeleri

Chrome ekibi, D3D12 arka ucu ile WebGPU'yu destekleyen cihazlar için bir ara temsil (IR) ekleyerek WebGPU gölgelendirici dili derleyicisi Tint'i iyileştirmeye devam ediyor. Tint'in soyut söz dizimi ağacı (AST) ile HLSL arka uç yazarı arasına yerleştirilen bu IR, derleyiciyi daha verimli ve bakımı kolay hale getirerek hem geliştiricilere hem de kullanıcılara fayda sağlayacak. İlk testler, Unity'nin WGSL gölgelendiricilerini HLSL'ye çevirirken Tint'in yeni sürümünün 10 kata kadar daha hızlı olduğunu gösteriyor.

Akış şemasında, WGSL gölgelendirici kodunun düşük düzey GPU talimatlarına dönüştürülmesi süreci gösterilmektedir.
Windows'ta oluşturma ardışık düzeni oluşturma.

Android, ChromeOS ve macOS'te kullanılabilen bu iyileştirmeler, D3D12 arka ucu ile WebGPU'yu destekleyen Windows cihazlarına kademeli olarak uygulanmaktadır. 42251045 numaralı soruna bakın.

Kanvas resimlerini kaydetme ve kopyalama

Chrome kullanıcıları artık bir WebGPU kanvasına 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 Şu Adla Kaydet" bağlam menüsünü seçti.

Artış uyumluluk modu kısıtlamaları

GPUDevice üzerinde kullanılabilen 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çmesi için ipucu verir. İşlem başarılı olursa sonuçta "uyumluluk-varsayılan" bir bağdaştırıcı elde edilir. Aksi takdirde, "core-defaulting" (temel varsayılan) kullanılır. Bu, featureLevel: "core" seçeneğini kullanmakla aynıdır. Ayrıca, requiredFeatures ve requiredLimits olmadan requestDevice() çağrısı yapıldığında GPUAdapter'ın varsayılan özellikleriyle bir GPUDevice istenir.

Çekirdek varsayılan adaptörleri her zaman "core-features-and-limits" özelliğini destekler ve bu adaptörlerden oluşturulan GPUDevices'da 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ılar tarafından oluşturulan GPUDevices'de istenebilir. Her iki adaptör tü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 mevcutsa temel özelliklerin kullanılmasını destekleyen ancak temel özellikler mevcut değilse 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ğinin kullanılması için kaldırıldı. 395855516 numaralı soruna bakın.

Şafak güncellemeleri

Geri çağırma durumu enum InstanceDropped, geri çağırmanın iptal edildiğini ancak etkinlikle ilişkili arka plan işlemlerinin (ör. ardışık düzen derlemesi) hâlâ devam edebileceğini belirtmek için CallbackCancelled olarak yeniden adlandırıldı. Yeni ad, daha sonra başka bir iptal mekanizması eklenebileceği için daha genel bir kullanıma sahiptir. 520. sayıya bakın.

Hata kapsamı yığınının pop edilemediğini belirten wgpu::PopErrorScopeStatus::EmptyStack enum, wgpu::PopErrorScopeStatus::Error olarak yeniden adlandırıldı (bu enum daha genel bir şekilde de geçerlidir). Geri çağırma artık hata ayıklama işlemine yardımcı olmak için ilgili bir hata açıklaması mesajı da içeriyor. 369 numaralı soruna bakın.

Bu, önemli noktalardan yalnızca 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 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