WebCodecs entegrasyonu
WebGPU, HTMLVideoElement
ile importExternalTexture()
arasında opak "harici doku" nesneleri oluşturmak için bir API sağlar. Bu nesneleri, video karelerini verimli bir şekilde örneklemek için kullanabilirsiniz. Bu işlem, doğrudan kaynak YUV renk modeli verilerinden 0 kopya olacak şekilde yapılabilir.
Ancak, başlangıçtaki WebGPU spesifikasyonu, WebCodecs VideoFrame
nesnelerinden GPUExternalTexture
nesnelerinin oluşturulmasına izin vermiyordu. 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. WebCodecs entegrasyonu, GPUExternalTexture
ve copyExternalImageToTexture()
çağrısı için kaynak olarak VideoFrame
kullanılmasına destek ekler. Aşağıdaki örneğe ve chromestatus girişine bakın.
// 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);
// Create texture from VideoFrame.
const texture = device.importExternalTexture({ source: videoFrame });
// TODO: Use texture in bind group creation.
Denemek için WebCodecs ile Video Yükleme deneysel örneğine göz atın.
GPUAdapter requestDevice() tarafından döndürülen kayıp cihaz
GPUAdapter
için requestDevice()
yöntemi, zaten bir GPUDevice
oluşturmak üzere kullanıldığı için başarısız olursa artık null
ile reddeden bir söz döndürmek yerine, hemen kaybedildi olarak işaretlenen bir GPUDevice
ile yerine getiriliyor. Chromium:1234617 hatası konusuna bakın.
const adapter = await navigator.gpu.requestAdapter();
const device1 = await adapter.requestDevice();
// New! The promise is not rejected anymore with null.
const device2 = await adapter.requestDevice();
// And the device is immediately marked as lost.
const info = await device2.lost;
importExternalTexture() çağrılırsa video oynatmanın sorunsuz olmasını sağlar
importExternalTexture()
, HTMLVideoElement
ile çağrıldığında video görüntü alanında görünür olmadığında ilişkili video oynatma artık kısıtlanmaz. chromium:1425252 numaralı sorun konusuna bakın.
Spesifikasyon uygunluğu
GPUPipelineError()
kurucusundaki message
bağımsız değişkeni isteğe bağlıdır. change chromium:4613967 başlıklı makaleye göz atın.
code
WGSL kaynağı \0
içeriyorsa createShaderModule()
çağrılırken bir hata oluşur. issue dawn:1345 konusuna bakın.
createSampler()
ile bir doku örneklenirken kullanılan varsayılan maksimum ayrıntı düzeyi (lodMaxClamp
) 32'dir. Chrome:4608063 değiştirme bölümüne bakın.
Geliştirici deneyimini iyileştirme
Geliştiricilere, desteklenmeyen bir platformda WebGPU kullandıklarında hatırlatma yapmak için Geliştirici Araçları JavaScript konsolunda bir mesaj görüntülenir. Chromium:4589369 değiştirme konusuna bakın.
getMappedRange()
geliştiricileri sıraya komut göndermeye zorlamadan başarısız olduğunda, arabellek doğrulama hata mesajları DevTools JavaScript konsolunda anında gösterilir. Chromium:4597950 değiştirme konusuna bakın.
Şafak güncellemeleri
disallow_unsafe_apis
hata ayıklama açma/kapatma düğmesi allow_unsafe_apis
olarak yeniden adlandırıldı ve varsayılan olarak devre dışı bırakıldı. Bu açma/kapatma düğmesi, henüz güvenli olarak kabul edilmeyen API giriş noktalarında veya parametre kombinasyonlarında doğrulama hatalarını engeller. Hata ayıklama için yararlı olabilir.
issue dawn:1685 konusuna bakın.
Desteği sonlandırılan wgpu::ShaderModuleWGSLDescriptor
source
özelliği, code
özelliğinin lehine kaldırılır. change dawn:130321 bölümüne bakın.
Eksik wgpu::RenderBundle::SetLabel()
yöntemi uygulandı. change dawn:134502 adresine bakın.
Uygulamalar, wgpu::RequestAdapterOptionsBackendType
seçeneğiyle bir adaptör alırken belirli bir arka uç isteyebilir. Aşağıdaki örneği inceleyin ve issue dawn:1875 adresine gidin.
wgpu::RequestAdapterOptionsBackendType backendTypeOptions = {};
backendTypeOptions.backendType = wgpu::BackendType::D3D12;
wgpu::RequestAdapterOptions options = {};
options.nextInChain = &backendTypeOptions;
// Request D3D12 adapter.
myInstance.RequestAdapter(&options, myCallback, myUserData);
Döndürülen wgpu::Texture
değerinin kopyalarda kullanılabilmesi için swapchain dokuları için ek kullanımlar içeren yeni bir SwapChain::GetCurrentTexture()
yöntemi eklendi. Aşağıdaki örneği ve sorun şafak:1551 bölümünü inceleyin.
wgpu::SwapChain swapchain = myDevice.CreateSwapChain(mySurface, &myDesc);
swapchain.GetCurrentTexture();
swapchain.Present();
Bunlar, öne çıkan özelliklerden yalnızca bazılarıdır. Kapsamlı commit listesine göz atın.
WebGPU'daki Yenilikler
WebGPU'daki Yenilikler serisinde ele alınan tüm konuların listesi.
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 dolaylı 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() desteğinin sonlandırılması
- Gün doğumu 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 yakalanmamış hata olan Geliştirici Araçları uyarısını gizle
- 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
- İyileştirilmiş komut kodlayıcı hataları
- 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
- Gün doğumu güncellemeleri
Chrome 125
Chrome 124
- Salt okunur ve okuma/yazma depolama alanı dokuları
- Service Worker'lar ve paylaşılan çalışan desteği
- Yeni bağdaştırıcı bilgi ö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 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ı
- display-p3'ü GPUExternalTexture renk alanı olarak destekle
- Bellek yığını bilgileri
- Dawn 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 kesirli sayılara dönüştürülmesi
- Bahar temizliği özellikleri
Chrome 119
- Filtrelenebilir 32 bit kayan dokular
- unorm10-10-10-2 tepe 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
- GPUAdapter tarafından iade edilen kayıp cihaz
requestDevice()
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
- Gün doğumu güncellemeleri
Chrome 114 sürümü
- JavaScript'i optimize etme
- Yapılandırılmamış kanvasta getCurrentTexture() InvalidStateError hatası veriyor
- WGSL ile ilgili güncellemeler
- Dawn güncellemeleri