Chrome Ekibi, yıllar süren geliştirme çalışmalarının ardından WebGPU'nun ilk sürümünün artık ChromeOS, macOS ve Windows'ta varsayılan olarak kullanılabildiğini duyurdu. Daha fazla bilgi edinmek için Chrome, WebGPU'yi kullanıma sundu başlıklı makaleyi inceleyin.
Ayrıca MDN'ye WebGPU ile ilgili kapsamlı dokümanlar eklemeye başladık.
Ve dahası.
importExternalTexture()
konumunda WebCodecs VideoFrame
kaynağını kullan
WebGPU, HTMLVideoElement
ile importExternalTexture()
arasında opak "harici doku" nesneleri oluşturmak için bir API sağlar. Video karelerinden verimli bir şekilde örneklendirmek için bu nesneleri kullanabilirsiniz. Örnek olarak doğrudan kaynak YUV verilerinden 0 kopya yapabilirsiniz.
Ancak ilk WebGPU spesifikasyonu, WebCodecs VideoFrame
nesnelerinden GPUExternalTexture
nesneleri oluşturulmasına izin vermez. Bu özellik, halihazırda WebCodecs kullanan ve video işleme ardışık düzenine WebGPU'yu entegre etmek isteyen gelişmiş video işleme uygulamaları için önemlidir. Tartışma şu anda gpuweb/gpuweb#1380 sorununda devam ediyor.
Özelliği etkinleştirme
Bu özellik Chrome'da varsayılan olarak etkin değildir, ancak Chrome 113'te bu işlev açıkça etkinleştirilerek denenebilir. chrome://flags/#enable-webgpu-developer-features
adresinde "WebGPU Geliştirici Özellikleri" bayrakını etkinleştirerek yerel olarak etkinleştirebilirsiniz.
Bu özelliği uygulamanızın tüm ziyaretçileri için etkinleştirmek üzere şu anda devam eden ve Chrome 118'de (8 Aralık 2023) sona erecek bir kaynak denemesi var. Deneme sürümüne katılmak için kaydolun ve HTML veya HTTP üst bilgisine kaynak deneme jetonunu içeren bir meta öğe ekleyin. Daha fazla bilgi için Kaynak denemelerini kullanmaya başlama başlıklı makaleyi inceleyin.
Örnek kod
// Access the GPU device.
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();
// Create VideoFrame from HTMLVideoElement.
const video = document.querySelector("video");
const videoFrame = new VideoFrame(video);
const texture = device.importExternalTexture({ source: videoFrame });
// TODO: Use texture in bind group creation.
Deneysel WebCodecs ile Video Yükleme örneğine göz atarak bu özelliği kullanabilirsiniz.
WebGPU'daki Yenilikler
WebGPU'daki Yenilikler serisinde ele alınan tüm konuların listesi.
Chrome 131
- Mesafeleri WGSL'de kırp
- GPUCanvasContext getConfiguration()
- Nokta ve çizgi temel öğeleri derinlik sapmasına sahip olmamalıdır
- Alt gruplar için dahili kapsayıcı tarama işlevleri
- Çoklu çizim için deneysel destek
- Shader 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() işlevinin kullanımdan kaldırılması
- Dawn güncellemeleri
Chrome 129
Chrome 128
- Alt gruplarla deneme yapma
- Çizgiler ve noktalar için derinlik önyargısı ayarlama özelliğini kullanımdan kaldırma
- preventDefault ise yakalanmayan hata DevTools uyarısını gizleme
- WGSL, önce örneklemeyi enterpolasyona tabi tutar ve ardından
- Dawn güncellemeleri
Chrome 127 sürümü
- 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ır
- Vulkan arka uç için arabellek yükleme optimizasyonu
- Gölgelendirme derleme zamanı iyileştirmeleri
- 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
- Gün doğumu 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 kompozitleri referans kaldırmak için söz dizimi şekeri
- Ş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'da gölgelendirici derlemesi için FXC yerine DXC'yi kullanın
- Bilgi işlem ve oluşturma kartlarında zaman damgası sorguları
- Gölgelendirici modüllerine varsayılan giriş noktaları
- GPUExternalTexture renk alanı olarak display-p3 desteği
- Bellek yığınları bilgileri
- Gün doğumu güncellemeleri
Chrome 120
- WGSL'de 16 bitlik kayan nokta değerleri için destek
- Sınırları zorlayın
- Derinlik-gölge durumuyla ilgili değişiklikler
- Adaptör bilgileri güncellemeleri
- Zaman damgası sorgularının nicelenmesi
- Bahar temizliği özellikleri
Chrome 119
- Filtrelenebilir 32 bit kayan 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- Spesifikasyon uygunluğu
- Geliştirici deneyimini iyileştirme
- Gün doğumu 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