Yayınlanma tarihi: 29 Ocak 2025
Ek unorm8x4-bgra ve 1 bileşenli köşe noktası biçimleri
"unorm8x4-bgra"
köşe noktası biçimi ve aşağıdaki 1 bileşenli köşe noktası biçimleri eklendi: "uint8"
, "sint8"
, "unorm8"
, "snorm8"
, "uint16"
, "sint16"
, "unorm16"
, "snorm16"
ve "float16"
.
"unorm8x4-bgra"
köşe noktası biçimi, aynı gölgelendiriciyi korurken BGRA kodlu köşe noktası renklerini yüklemeyi biraz daha kolaylaştırır. Ayrıca, 1 bileşenli köşe noktası biçimi, daha önce 8 ve 16 bit veri türleri için en az iki kat daha fazla veri gerektiğinde yalnızca gerekli verileri istemenize olanak tanır. chromestatus girişine ve 376924407 numaralı soruna bakın.
Bilinmeyen sınırların, tanımlanmamış değerle istenmesine izin verme
WebGPU API'nin geliştikçe daha az kırılgan olmasını sağlamak için artık GPU cihazı isteğinde bulunurken undefined
değeriyle bilinmeyen sınırlar isteyebilirsiniz. Bu, aşağıdaki uygulama kodunda yararlıdır. Örneğin, someLimit
artık mevcut değilse adapter.limits.someLimit
, undefined
olabilir. spec PR 4781'e bakın.
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice({
requiredLimits: { someLimit: adapter.limits.someLimit }, // someLimit can be undefined
});
WGSL hizalama kurallarında yapılan değişiklikler
Artık tüm yapıların @align(n)
değerinin RequiredAlignOf
değerini bölmesi gerektiğinden, yapı üyeleri için çok küçük bir hizalama değeri sağlamak mümkün değildir. Bu önemli değişiklik, WGSL dilinin kullanımını basitleştirir ve Firefox ile Safari ile daha uyumlu hale getirir. Tint, Naga ve WebKit derleyicileri arasındaki farkları gösteren örnek kodu özellik PR'sinde bulabilirsiniz.
Atma ile WGSL performans kazançları
Karmaşık bir ekran alanı yansıması (SSR) efekti oluşturulurken önemli bir performans düşüşü gözlemlendiğinden, discard ifadesi uygulaması, varsa yardımcı çağrıya indirgeme için platform tarafından sağlanan semantiği kullanır. Bu, discard kullanan gölgelendiricilerin performansını iyileştirir. 372714384 numaralı soruna bakın.
Harici dokular için VideoFrame displaySize özelliğini kullanın
WebGPU spesifikasyonuna göre bir VideoFrame içe aktarılırken GPUExternalTexture'ın görünen boyutu olarak displayWidth
ve displayHeight
boyutları kullanılmalıdır. Ancak görünür boyut yanlış kullanıldığı için GPUExternalTexture üzerinde textureLoad()
kullanılırken sorunlar yaşanıyordu. Bu sorun artık düzeltildi. 377574981 numaralı soruna bakın.
copyExternalImageToTexture işlevini kullanarak varsayılan olmayan yönlere sahip resimleri işleme
copyExternalImageToTexture()
GPUQueue yöntemi, bir resmin veya kanvasın içeriğini bir dokuya kopyalamak için kullanılır. Artık varsayılan olmayan yönlere sahip resimleri düzgün şekilde işlemektedir. Kaynak imageOrientation
"from-image"
içeren bir ImageBitmap veya varsayılan olmayan bir yönü olan bir resim olduğunda daha önce bu durum geçerli değildi. 384858956 numaralı soruna bakın.
Geliştirici deneyimini iyileştirme
adapter.limits
yüksek değerler gösterdiğinde ancak GPU cihaz isteğinde bulunurken açıkça daha yüksek bir sınır istemeniz gerektiğini fark etmediğinizde şaşırabilirsiniz. Aksi takdirde, daha sonra sınırlara beklenmedik şekilde ulaşabilirsiniz.
Size yardımcı olmak için hata mesajları, requestDevice()
çağrısı yapılırken requiredLimits
içinde sınır belirtilmediğinde daha yüksek bir sınırı açıkça istemenizi söyleyen ipuçlarıyla genişletildi. 42240683 numaralı soruna bakın.
Aşağıdaki örnekte, varsayılan maksimum arabellek boyutu cihaz sınırını aşan bir GPU arabelleği oluştururken DevTools konsoluna kaydedilen gelişmiş bir hata mesajı gösterilmektedir.
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();
// Create a GPU buffer with a size exceeding the default max buffer size device limit.
const size = device.limits.maxBufferSize + 1;
const buffer = device.createBuffer({ size, usage: GPUBufferUsage.MAP_READ });
device.queue.submit([]);
⚠️ Buffer size (268435457) exceeds the max buffer size limit (268435456). This adapter supports a higher maxBufferSize of 4294967296, which can be specified in requiredLimits when calling requestDevice(). Limits differ by hardware, so always check the adapter limits prior to requesting a higher limit. - While calling [Device].CreateBuffer([BufferDescriptor]).
featureLevel ile uyumluluk modunu etkinleştirme
Standartlaştırılmış featureLevel
seçeneğini "compatibility"
olarak ayarlayarak artık deneysel uyumluluk modunda GPU adaptörü isteğinde bulunabilirsiniz. Yalnızca "core"
(varsayılan) ve "compatibility"
dizelerine izin verilir. Aşağıdaki örneğe ve spec PR 4897'ye bakın.
// Request a GPU adapter in compatibility mode
const adapter = await navigator.gpu.requestAdapter({ featureLevel: "compatibility" });
if (adapter?.featureLevel === "compatibility") {
// Any devices created from this adapter will support only compatibility mode.
}
featureLevel
seçeneği, standart olmayan compatibilityMode
seçeneğinin yerini alırken standart olmayan featureLevel
özelliği, isCompatibilityMode
özelliğinin yerini alır.
Hâlâ deneysel olduğu için Chrome'u şu anda chrome://flags/#enable-unsafe-webgpu
değerinde "Güvenli Olmayan WebGPU Desteği" işaretiyle çalıştırmanız gerekir. Bu özelliği kullanmak için webgpureport.org adresine göz atın.
Deneysel alt grup özelliklerini temizleme
Desteği sonlandırılan "chromium-experimental-subgroups"
ve "chromium-experimental-subgroup-uniform-control-flow"
deneysel alt grup özellikleri kaldırıldı. 377868468 numaralı sorun için buraya bakın.
Alt gruplarla deneme yaparken artık tek ihtiyacınız olan "subgroups"
deneysel özelliğidir. "subgroups-f16"
deneysel özelliğinin desteği sonlandırıldı ve yakında kaldırılacak. Uygulamanız hem "shader-f16"
hem de "subgroups"
özelliklerini istediğinde alt gruplarla f16 değerlerini kullanabilirsiniz. 380244620 numaralı soruna bakın.
maxInterStageShaderComponents sınırının desteği sonlandırıldı
maxInterStageShaderComponents
sınırı, aşağıdaki faktörlerin bir araya gelmesi nedeniyle kullanımdan kaldırılıyor:
maxInterStageShaderVariables
ile yedekleme: Bu sınır, gölgelendirici aşamaları arasında aktarılan veri miktarını kontrol ederek zaten benzer bir amaca hizmet etmektedir.- Küçük tutarsızlıklar: İki sınırın hesaplanmasında küçük farklılıklar olsa da bu farklılıklar küçüktür ve
maxInterStageShaderVariables
sınırı dahilinde etkili bir şekilde yönetilebilir. - Basitleştirme:
maxInterStageShaderComponents
kaldırılarak gölgelendirici arayüzü basitleştirilir ve geliştiriciler için karmaşıklık azaltılır. Küçük farklılıkları olan iki ayrı sınırı yönetmek yerine, daha uygun şekilde adlandırılmış ve kapsamlımaxInterStageShaderVariables
'ye odaklanabilirler.
Hedef, bu özelliği Chrome 135'te tamamen kaldırmaktır. Desteği sonlandırma amacı ve 364338810 numaralı sorun için bakın.
Şafak güncellemeleri
wgpu::Device::GetAdapterInfo(adapterInfo)
, doğrudan wgpu::Device
'ten adaptör bilgilerini almanıza olanak tanır. 376600838 numaralı soruna bakın.
Hesaplama durumunu köşe ve parça durumlarıyla tutarlı hale getirmek için WGPUProgrammableStageDescriptor
yapı, WGPUComputeState
olarak yeniden adlandırıldı. 379059434 numaralı soruna bakın.
wgpu::VertexStepMode::VertexBufferNotUsed
enum değeri kaldırıldı. Kullanılmayan bir köşe ucu arabelleği düzeni artık {.stepMode=wgpu::VertexStepMode::Undefined, .attributeCount=0}
ile ifade edilebilir. 383147017 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 133
- Ek unorm8x4-bgra ve 1 bileşenli köşe noktası biçimleri
- Bilinmeyen sınırların, tanımlanmamış değerle istenmesine izin ver
- WGSL hizalama kurallarında yapılan değişiklikler
- Atma özelliğiyle WGSL performans kazanımları
- Harici dokular için VideoFrame displaySize özelliğini kullanma
- copyExternalImageToTexture işlevini kullanarak varsayılan olmayan yönlere sahip resimleri işleme
- Geliştirici deneyimini iyileştirme
- featureLevel ile uyumluluk modunu etkinleştirme
- Deneysel alt grup özelliklerini temizleme
- maxInterStageShaderComponents sınırının desteği sonlandırıldı
- Dawn güncellemeleri
Chrome 132
- Doku görünümü kullanımı
- 32 bit kayan noktalı dokuların harmanlanması
- GPUDevice adapterInfo özelliği
- Tuval bağlamını geçersiz biçimle yapılandırma JavaScript hatası oluşturuyor
- Dokularda filtreleme örnekleyicisi kısıtlamaları
- Genişletilmiş alt grup denemeleri
- Geliştirici deneyimini iyileştirme
- 16 bit normalleştirilmiş doku biçimleri için deneysel destek
- Dawn güncellemeleri
Chrome 131
- WGSL'de mesafeleri kırpma
- GPUCanvasContext getConfiguration()
- Nokta ve çizgi primitiflerinde derinlik önyargısı olmamalıdır
- Alt gruplar için dahili kapsayıcı tarama işlevleri
- Çoklu çizim için deneysel destek
- Gölgelendirici modülü derleme seçeneği katı matematik
- GPUAdapter requestAdapterInfo() yöntemini kaldırın
- Dawn güncellemeleri
Chrome 130
- Çift kaynak karıştırma
- Metal'de gölgelendirici derleme süresiyle ilgili iyileştirmeler
- GPUAdapter requestAdapterInfo() desteğinin sonlandırılması
- Dawn güncellemeleri
Chrome 129
Chrome 128
- Alt gruplarla deneme yapma
- Çizgiler ve noktalar için derinlik önyargısı ayarının desteği sonlandırıldı
- preventDefault ise yakalanmayan hata DevTools uyarısını gizleme
- WGSL, önce örneklemeyi enterpolasyona tabi tutar ve ardından
- Dawn güncellemeleri
Chrome 127
- Android'de OpenGL ES için deneysel destek
- GPUAdapter bilgi özelliği
- WebAssembly birlikte çalışabilirlik iyileştirmeleri
- Komut kodlayıcı hataları iyileştirildi
- Dawn güncellemeleri
Chrome 126
- maxTextureArrayLayers sınırını artırma
- Vulkan arka uç için arabellek yükleme optimizasyonu
- Gölgelendirici derleme süresiyle ilgili iyileştirmeler
- Gönderilen komut arabellekleri benzersiz olmalıdır
- Dawn güncellemeleri
Chrome 125
Chrome 124
- Salt okunur ve okuma/yazma depolama alanı dokuları
- Hizmet çalışanları ve paylaşılan çalışanlar desteği
- Yeni adaptör bilgileri özellikleri
- Hata düzeltmeleri
- Dawn güncellemeleri
Chrome 123
- WGSL'de DP4a yerleşik işlevleri desteği
- WGSL'de sınırsız işaretçi parametreleri
- WGSL'de bileşimlerin referansını kaldırmak için söz dizimi
- Şablon ve derinlik özellikleri için ayrı salt okunur durum
- Dawn güncellemeleri
Chrome 122
- Uyumluluk modu ile erişimi genişletin (geliştirme aşamasındaki özellik)
- maxVertexAttributes sınırını artırma
- Dawn güncellemeleri
Chrome 121
- Android'de WebGPU desteği
- Windows'ta gölgelendirici derleme için FXC yerine DXC kullanma
- İşleme ve oluşturma geçişlerinde zaman damgası sorguları
- Gölgelendirici modüllerinin varsayılan giriş noktaları
- GPUExternalTexture renk alanı olarak display-p3 desteği
- Bellek yığınları bilgileri
- Dawn güncellemeleri
Chrome 120
- WGSL'de 16 bitlik kayan nokta değerleri için destek
- Sınırları zorlayın
- Derinlik gölgesi durumundaki değişiklikler
- Adaptör bilgileri güncellemeleri
- Zaman damgası sorgularının kesirli sayılara dönüştürülmesi
- Bahar temizliği özellikleri
Chrome 119
- Filtrelenebilir 32 bit kayan noktalı dokular
- unorm10-10-10-2 köşe noktası biçimi
- rgb10a2uint doku biçimi
- Dawn güncellemeleri
Chrome 118
copyExternalImageToTexture()
'te HTMLImageElement ve ImageData desteği- Okuma/yazma ve salt okuma depolama dokusu için deneysel destek
- Dawn güncellemeleri
Chrome 117
- Köşe noktası arabelleğinin ayarını kaldırma
- Bağlama grubunu kaldırma
- Cihaz kaybolduğunda eşzamansız ardışık düzen oluşturma işlemlerinden kaynaklanan hataları yoksayma
- SPIR-V gölgelendirici modülü oluşturma güncellemeleri
- Geliştirici deneyimini iyileştirme
- Otomatik olarak oluşturulan düzenle ardışık düzenleri önbelleğe alma
- Dawn güncellemeleri
Chrome 116
- WebCodecs entegrasyonu
- Kayıp cihaz, GPUAdapter
requestDevice()
tarafından döndürüldü importExternalTexture()
çağrılırsa video oynatmanın sorunsuz olmasını sağlama- Spesifikasyona uygunluk
- Geliştirici deneyimini iyileştirme
- Dawn güncellemeleri
Chrome 115
- Desteklenen WGSL dil uzantıları
- Direct3D 11 için deneysel destek
- AC güç kaynağında varsayılan olarak ayrı GPU'yu etkinleştirme
- Geliştirici deneyimini iyileştirme
- Dawn güncellemeleri
Chrome 114
- JavaScript'i optimize etme
- Yapılandırılmamış kanvasta getCurrentTexture() InvalidStateError hatası veriyor
- WGSL ile ilgili güncellemeler
- Dawn güncellemeleri
Chrome 113
importExternalTexture()
dosyasında WebCodecs VideoFrame kaynağını kullanma