Yayınlanma tarihi: 29 Ocak 2025
Ek unorm8x4-bgra ve 1 bileşenli köşe biçimleri
"unorm8x4-bgra"
köşe biçimi ve aşağıdaki 1 bileşenli köşe biçimleri eklendi: "uint8"
, "sint8"
, "unorm8"
, "snorm8"
, "uint16"
, "sint16"
, "unorm16"
, "snorm16"
ve "float16"
.
"unorm8x4-bgra"
köşe biçimi, aynı gölgelendiriciyi korurken BGRA kodlu köşe renklerini yüklemeyi biraz daha kolaylaştırır. Ayrıca, 1 bileşenli köşe noktası biçimi, daha önce 8 ve 16 bitlik veri türleri için en az iki katı kadar veri gerekirken artık yalnızca gerekli verileri istemenize olanak tanır. chromestatus girişine ve 376924407 numaralı soruna bakın.
Tanımlanmamış değerle bilinmeyen sınırların istenmesine izin ver
WebGPU API'nin gelişirken daha az kırılgan olması için artık bir GPU cihazı isterken undefined
değeriyle bilinmeyen sınırları isteyebilirsiniz. Bu, örneğin aşağıdaki uygulama kodunda yararlıdır. Burada adapter.limits.someLimit
, someLimit
artık mevcut değilse 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 için @align(n)
değerinin RequiredAlignOf
değerini bölmesi gerektiğinden yapı üyesi 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'yle daha uyumlu hale getirir. Tint, Naga ve WebKit derleyicileri arasındaki farkları gösteren örnek kodu spec PR'de bulabilirsiniz.
discard ile WGSL performans kazançları
Karmaşık bir ekran alanı yansımaları (SSR) efekti oluşturulurken gözlemlenen önemli performans düşüşü nedeniyle, discard ifadesinin uygulanmasında, mevcut olduğunda yardımcı çağırmaya düşürmek için platform tarafından sağlanan semantik kullanılır. Bu, discard kullanan gölgelendiricilerin performansını artırır. 372714384 numaralı sorunu inceleyin.
Harici dokular için VideoFrame displaySize'ı kullanın
WebGPU spesifikasyonuna göre bir VideoFrame içe aktarılırken displayWidth
ve displayHeight
boyutları, GPUExternalTexture'ın görünür boyutu olarak kullanılmalıdır. Ancak görünür boyut yanlışlıkla kullanıldığından GPUExternalTexture'da textureLoad()
kullanılmaya çalışılırken sorunlar yaşanıyordu. Bu sorun artık düzeltildi. 377574981 numaralı soruna bakın.
copyExternalImageToTexture kullanarak varsayılan olmayan yönlere sahip resimleri işleme
copyExternalImageToTexture()
GPUQueue yöntemi, bir resmin veya tuvalin içeriğini dokuya kopyalamak için kullanılır. Artık varsayılan olmayan yönlere sahip resimleri düzgün şekilde işliyor. Kaynak, imageOrientation
"from-image"
içeren bir ImageBitmap veya varsayılan olmayan bir yönlendirmeye sahip bir resim olduğunda bu durum daha önce geçerli değildi. 384858956 numaralı sorunu inceleyin.
Geliştirici deneyimini iyileştirme
adapter.limits
yüksek değerler gösterdiğinde şaşırabilirsiniz ancak GPU cihazı isterken daha yüksek bir sınır için açıkça istekte bulunmanız gerektiğini fark etmeyebilirsiniz. Aksi takdirde, daha sonra beklenmedik bir şekilde sınırlara ulaşabilirsiniz.
Size yardımcı olmak için hata mesajları, requestDevice()
çağrılırken requiredLimits
içinde sınır belirtilmediğinde daha yüksek bir sınır istemenizi söyleyen ipuçlarıyla genişletildi. 42240683 numaralı sorunu inceleyin.
Aşağıdaki örnekte, varsayılan maksimum arabellek boyutu cihaz sınırını aşan bir boyutta GPU arabelleği oluşturulurken DevTools konsoluna kaydedilen geliştirilmiş 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
Deneysel uyumluluk modunda GPU bağdaştırıcısı istemek artık standartlaştırılmış featureLevel
seçeneğini "compatibility"
olarak ayarlayarak mümkün. 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.
Bu özellik hâlâ deneysel aşamada olduğundan şimdilik Chrome'u chrome://flags/#enable-unsafe-webgpu
adresindeki "Unsafe WebGPU Support" (Güvenli Olmayan WebGPU Desteği) işaretiyle çalıştırmanız gerekir. webgpureport.org adresine giderek bu özelliği deneyebilirsiniz.
Deneysel alt grup özelliklerinde temizleme
Desteği sonlandırılan "chromium-experimental-subgroups"
ve "chromium-experimental-subgroup-uniform-control-flow"
deneysel alt grup özellikleri kaldırılır. 377868468 numaralı sorunu inceleyin.
Alt gruplarla deneme yaparken artık yalnızca "subgroups"
deneysel özelliğini kullanmanız yeterlidir. "subgroups-f16"
deneysel özelliği kullanımdan kaldırıldı ve yakında tamamen kaldırılacak. Uygulamanız hem "shader-f16"
hem de "subgroups"
özelliklerini istediğinde alt gruplarla birlikte f16 değerlerini kullanabilirsiniz. 380244620 numaralı soruna bakın.
maxInterStageShaderComponents sınırının desteğini sonlandırma
maxInterStageShaderComponents
sınırı, çeşitli faktörlerin bir araya gelmesi nedeniyle kullanımdan kaldırıldı:
maxInterStageShaderVariables
ile yedeklilik: Bu sınır, gölgelendirici aşamaları arasında aktarılan veri miktarını kontrol ederek benzer bir amaca hizmet eder.- Küçük tutarsızlıklar: İki sınırın hesaplanma şekli arasında küçük farklılıklar olsa da bu farklılıklar önemsizdir ve
maxInterStageShaderVariables
sınırı içinde etkili bir şekilde yönetilebilir. - Basitleştirme:
maxInterStageShaderComponents
simgesinin kaldırılması, gölgelendirici arayüzünü basitleştirir ve geliştiriciler için karmaşıklığı azaltır. Küçük farklılıklar içeren iki ayrı sınırı yönetmek yerine, daha uygun bir şekilde adlandırılmış ve kapsamlı olanmaxInterStageShaderVariables
odaklanabilirler.
Bu özelliğin Chrome 135'te tamamen kaldırılması hedeflenmektedir. Desteği sonlandırma amacı ve 364338810 numaralı soruna bakın.
Dawn güncellemeleri
wgpu::Device::GetAdapterInfo(adapterInfo)
, adaptör bilgilerini doğrudan wgpu::Device
cihazından almanıza olanak tanır. 376600838 numaralı sorunu inceleyin.
Hesaplama durumunu köşe ve parça durumlarıyla tutarlı hale getirmek için WGPUProgrammableStageDescriptor
yapısı 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 arabelleği düzeni artık {.stepMode=wgpu::VertexStepMode::Undefined, .attributeCount=0}
ile ifade edilebilir. 383147017 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
- Cihaz istekleri adaptörü tüketiyor
- Doku görünümünün kullanıldığı yerlerde doku kullanmak için kısa yol
- WGSL textureSampleLevel, 1 boyutlu dokuları destekler
- bgra8unorm salt okunur depolama dokusu kullanımını kullanımdan kaldırma
- GPUAdapter isFallbackAdapter özelliğini kaldırın
- Dawn ile ilgili güncellemeler
Chrome 139
- BC ve ASTC sıkıştırılmış biçimleri için 3D doku desteği
- Yeni "temel özellikler ve sınırlar" özelliği
- WebGPU uyumluluk modu için kaynak denemesi
- Dawn ile ilgili güncellemeler
Chrome 138
- Arabellek bağlama kaynağı olarak kullanma için kısa yol
- Oluşturma sırasında eşlenen arabellekler için boyut şartı değişiklikleri
- Yakın tarihli GPU'lar için mimari raporu
- GPUAdapter isFallbackAdapter özelliğinin desteğini sonlandırma
- Dawn ile ilgili güncellemeler
Chrome 137
- externalTexture bağlama için doku görünümünü kullanma
- Arabellekler, ofset ve boyut belirtilmeden kopyalanıyor
- Atomik işaretçi kullanarak WGSL workgroupUniformLoad
- GPUAdapterInfo powerPreference özelliği
- GPURequestAdapterOptions compatibilityMode özelliğini kaldırma
- Dawn ile ilgili güncellemeler
Chrome 136
- GPUAdapterInfo isFallbackAdapter özelliği
- D3D12'de gölgelendirici derleme süresinde iyileştirmeler
- Kanvas görüntülerini kaydetme ve kopyalama
- Artış uyumluluk modu kısıtlamaları
- Dawn ile ilgili güncellemeler
Chrome 135
- Boş bağlama grubu düzeniyle işlem hattı düzeni oluşturmaya izin ver
- Görüntü alanlarının, oluşturma hedefi sınırlarının ötesine geçmesine izin ver
- Android'de deneysel uyumluluk moduna daha kolay erişim
- maxInterStageShaderComponents sınırını kaldırma
- Dawn ile ilgili güncellemeler
Chrome 134
- Alt gruplarla makine öğrenimi iş yüklerini iyileştirme
- Karıştırılabilir olarak kayan filtrelenebilir doku türleri desteğini kaldırma
- Dawn ile ilgili güncellemeler
Chrome 133
- Ek unorm8x4-bgra ve 1 bileşenli köşe biçimleri
- Bilinmeyen sınırların tanımlanmamış değerle istenmesine izin ver
- WGSL hizalama kurallarındaki değişiklikler
- Silme işlemiyle WGSL performansında artış
- Harici dokular için VideoFrame displaySize'ı kullanma
- copyExternalImageToTexture kullanarak varsayılan olmayan yönlere sahip resimleri işleme
- Geliştirici deneyimini iyileştirme
- featureLevel ile uyumluluk modunu etkinleştirme
- Deneysel alt grup özelliklerinde temizleme
- maxInterStageShaderComponents sınırının desteğini sonlandırma
- Dawn ile ilgili güncellemeler
Chrome 132
- Doku görünümü kullanımı
- 32 bit kayan noktalı doku karıştırma
- GPUDevice adapterInfo özelliği
- Geçersiz biçimdeki tuval bağlamını yapılandırma JavaScript hatası veriyor
- Doku üzerinde filtreleme örnekleyici kısıtlamaları
- Genişletilmiş alt grup denemesi
- Geliştirici deneyimini iyileştirme
- 16 bit normalleştirilmiş doku biçimleri için deneysel destek
- Dawn ile ilgili güncellemeler
Chrome 131
- WGSL'de kırpma mesafeleri
- GPUCanvasContext getConfiguration()
- Nokta ve çizgi temel öğelerinde derinlik önyargısı olmamalıdır
- Alt gruplar için kapsayıcı tarama yerleşik işlevleri
- Çoklu çekme dolaylı desteği (deneysel)
- Shader modülü derleme seçeneği strict math
- GPUAdapter requestAdapterInfo() yöntemini kaldırın
- Dawn ile ilgili güncellemeler
Chrome 130
- Çift kaynaklı karıştırma
- Metal'de gölgelendirici derleme süresinde iyileştirmeler
- GPUAdapter requestAdapterInfo() yönteminin desteğinin sonlandırılması
- Dawn ile ilgili güncellemeler
Chrome 129
Chrome 128
- Alt gruplarla deneme yapma
- Çizgiler ve noktalar için derinlik önyargısı ayarını kullanımdan kaldırma
- preventDefault kullanılıyorsa yakalanmamış hata DevTools uyarısını gizleme
- WGSL, önce örneklemeyi enterpolasyon yapar ve ardından
- Dawn ile ilgili güncellemeler
Chrome 127
- Android'de OpenGL ES için deneysel destek
- GPUAdapter info özelliği
- WebAssembly birlikte çalışabilirlik iyileştirmeleri
- Komut kodlayıcı hatalarında iyileştirme
- Dawn ile ilgili güncellemeler
Chrome 126
- maxTextureArrayLayers sınırını artırma
- Vulkan arka ucu için arabellek yükleme optimizasyonu
- Gölgeleyici derleme süresinde iyileştirmeler
- Gönderilen komut arabellekleri benzersiz olmalıdır
- Dawn ile ilgili güncellemeler
Chrome 125
- Alt gruplar (geliştirme aşamasında olan bir özellik)
- 3D dokunun dilimine göre oluşturma
- Dawn ile ilgili güncellemeler
Chrome 124
- Salt okunur ve okuma-yazma depolama dokuları
- Service worker'lar ve shared worker'lar için destek
- Yeni bağdaştırıcı bilgisi özellikleri
- Hata düzeltmeleri
- Dawn ile ilgili güncellemeler
Chrome 123
- WGSL'de DP4a yerleşik işlevleri desteği
- WGSL'de kısıtlanmamış işaretçi parametreleri
- WGSL'de bileşikleri referanssızlaştırmak için sözdizimi kolaylığı
- Şablon ve derinlik yönleri için ayrı salt okunur durum
- Dawn ile ilgili güncellemeler
Chrome 122
- Uyumluluk moduyla erişimi genişletme (geliştirme aşamasında olan bir özellik)
- maxVertexAttributes sınırını artırma
- Dawn ile ilgili güncellemeler
Chrome 121
- Android'de WebGPU'yu destekleme
- Windows'da gölgelendirici derleme için FXC yerine DXC kullanma
- İşleme ve oluşturma geçişlerindeki zaman damgalı sorgular
- Shader modüllerine varsayılan giriş noktaları
- GPUExternalTexture renk alanı olarak display-p3'ü destekleme
- Bellek yığınları bilgileri
- Dawn ile ilgili güncellemeler
Chrome 120
- WGSL'de 16 bitlik kayan nokta değerleri için destek
- Sınırları zorlayın
- Derinlik-şablon durumundaki değişiklikler
- Adaptör bilgisi güncellemeleri
- Zaman damgası sorgularının nicemleme işlemi
- Bahar temizliği özellikleri
Chrome 119
- Filtrelenebilir 32 bit kayan noktalı dokular
- unorm10-10-10-2 köşe biçimi
- rgb10a2uint doku biçimi
- Dawn ile ilgili güncellemeler
Chrome 118
copyExternalImageToTexture()
içinde HTMLImageElement ve ImageData desteği- Okuma/yazma ve salt okuma depolama dokusu için deneysel destek
- Dawn ile ilgili güncellemeler
Chrome 117
- Köşe arabelleğini ayarlamayı kaldırma
- Bağlama grubunu kaldırma
- Cihaz kaybolduğunda eşzamansız işlem hattı oluşturma işleminden kaynaklanan hataları sessize alma
- SPIR-V gölgelendirici modülü oluşturma güncellemeleri
- Geliştirici deneyimini iyileştirme
- Otomatik olarak oluşturulan düzene sahip işlem hatlarını önbelleğe alma
- Dawn ile ilgili güncellemeler
Chrome 116
- WebCodecs entegrasyonu
- GPUAdapter
requestDevice()
tarafından döndürülen kayıp cihaz importExternalTexture()
aranırsa video oynatmayı sorunsuz tutma- Spesifikasyona uygunluk
- Geliştirici deneyimini iyileştirme
- Dawn ile ilgili güncellemeler
Chrome 115
- Desteklenen WGSL dil uzantıları
- Direct3D 11 için deneysel destek
- AC güçte varsayılan olarak ayrı GPU kullanma
- Geliştirici deneyimini iyileştirme
- Dawn ile ilgili güncellemeler
Chrome 114
- JavaScript'i optimize etme
- Yapılandırılmamış tuvalde getCurrentTexture() işlevi InvalidStateError hatası veriyor
- WGSL güncellemeleri
- Dawn ile ilgili güncellemeler