WebCodecs entegrasyonu
WebGPU, HTMLVideoElement
ile importExternalTexture()
arasında opak "harici doku" nesneleri oluşturmak için bir API sunar. Bu nesneleri, video karelerini verimli bir şekilde ve muhtemelen doğrudan kaynak YUV renk modeli verilerinden 0 kopya şeklinde örneklemek için kullanabilirsiniz.
Ancak ilk WebGPU spesifikasyonu WebCodecs VideoFrame
nesnelerinden GPUExternalTexture
nesnelerinin oluşturulmasına izin vermiyordu. Bu özellik, halihazırda WebCodecs kullanan ve WebGPU'yu video işleme hattına entegre etmek isteyen gelişmiş video işleme uygulamaları için önemlidir. WebCodecs entegrasyonu, GPUExternalTexture
ve copyExternalImageToTexture()
çağrıları için kaynak olarak VideoFrame
kullanma desteği 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.
Bu kodla oynatmak için WebCodecs ile Video Yükleme adlı deneysel örneğe göz atın.
GPUAdapter requestDevice() tarafından döndürülen kayıp cihaz
GPUAdapter
üzerindeki requestDevice()
yöntemi zaten bir GPUDevice
oluşturmak için kullanılmış olduğundan başarısız olursa null
ile reddeden bir sözü geri almak yerine, artık anında kayıp olarak işaretlenen bir GPUDevice
ile yerine getirilir. chromium:1234617 sorunu bölümüne 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ğlayın
importExternalTexture()
bir 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 sorunu bölümüne bakın.
Spesifikasyon uygunluğu
GPUPipelineError()
oluşturucudaki message
bağımsız değişkeni isteğe bağlıdır. Chromium'u değiştirme:4613967 bölümüne bakın.
code
WGSL kaynağı \0
içeriyorsa createShaderModule()
çağrılırken bir hata tetiklenir. issue dawn:1345'i inceleyin.
createSampler()
ile bir dokuyu örneklerken kullanılan varsayılan maksimum ayrıntı düzeyi (lodMaxClamp
) 32'dir. chromium:4608063 değiştirme bölümüne bakın.
Geliştirici deneyimini iyileştirme
Geliştirici Araçları JavaScript konsolunda, geliştiricilere, WebGPU'yu desteklenmeyen bir platformda kullandıklarını hatırlatan bir mesaj gösterilir. chromium:4589369'u değiştirme bölümüne bakın.
getMappedRange()
başarısız olduğunda, geliştiricileri sıraya komut göndermek zorunda kalmadan arabellek doğrulama hata mesajları anında Geliştirici Araçları JavaScript konsolunda gösterilir. chromium:4597950 değiştirme bölümüne bakın.
Dawn ile ilgili güncellemeler
disallow_unsafe_apis
hata ayıklama anahtarı, 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ındaki veya parametre kombinasyonlarındaki doğrulama hatalarını gizler. Bu, hata ayıklama için faydalı olabilir.
issue dawn:1685'i inceleyin.
wgpu::ShaderModuleWGSLDescriptor
kullanımdan kaldırılan source
özelliği kaldırılarak yerine code
getiriliyor. Change dawn:130321 konusuna bakın.
Eksik wgpu::RenderBundle::SetLabel()
yöntemi uygulandı. Dawn:134502 konusuna bakın.
Uygulamalar, wgpu::RequestAdapterOptionsBackendType
seçeneğiyle bağdaştırıcı alırken belirli bir arka uç isteyebilir. Aşağıdaki örneğe bakın ve issue sawn:1875.
wgpu::RequestAdapterOptionsBackendType backendTypeOptions = {};
backendTypeOptions.backendType = wgpu::BackendType::D3D12;
wgpu::RequestAdapterOptions options = {};
options.nextInChain = &backendTypeOptions;
// Request D3D12 adapter.
myInstance.RequestAdapter(&options, myCallback, myUserData);
Değişim zinciri dokuları için ek kullanımlar içeren yeni bir SwapChain::GetCurrentTexture()
yöntemi eklendi. Bu sayede dönüş wgpu::Texture
, kopyalarda kullanılabilecek. Aşağıdaki örneğe göz atın ve issue sawn:1551.
wgpu::SwapChain swapchain = myDevice.CreateSwapChain(mySurface, &myDesc);
swapchain.GetCurrentTexture();
swapchain.Present();
Burada, öne çıkan özelliklerin yalnızca bir kısmı ele alınıyor. Kayıtların kapsamlı listesine göz atın.
WebGPU'daki Yenilikler
WebGPU'daki Yenilikler serisinde ele alınan her şeyin listesi.
Chrome 125
- Alt gruplar (geliştirme aşamasındaki özellik)
- 3D doku dilimi olarak oluşturma
- Dawn ile ilgili güncellemeler
Chrome 124
- Salt okuma ve okuma-yazma depolama dokuları
- Service Worker'lar ve paylaşılan çalışanlar için destek
- Yeni adaptör bilgileri ö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 kompozitlerin referansını kaldırmak için söz dizimi şeker
- Şablon ve derinlik özellikleri için ayrı salt okuma durumu
- Dawn ile ilgili güncellemeler
Chrome 122
- Uyumluluk modu ile erişimi genişletme (geliştirme aşamasındaki özellik)
- maxVertexAttributes sınırını artır
- Dawn ile ilgili güncellemeler
Chrome 121
- Android'de WebGPU'yu destekleme
- Windows'da gölgelendirici derlemesi için FXC yerine DXC'yi kullanma
- İşlem ve oluşturma kartlarındaki zaman damgası sorguları
- Gölgelendirici modüllerine varsayılan giriş noktaları
- Display-p3'ü GPUExternalTexture renk alanı olarak destekleyin
- Bellek yığın bilgileri
- Dawn ile ilgili güncellemeler
Chrome 120
- WGSL'de 16 bit kayan nokta değerleri desteği
- Sınırları zorlama
- Derinlik şablonu durumunda yapılan değişiklikler
- Bağdaştırıcı bilgileriyle ilgili güncellemeler
- Zaman damgası sorgularının hesaplanması
- İlkbahar temizliği özellikleri
Chrome 119
- Filtrelenebilir 32 bit kayan dokular
- unorm10-10-10-2 köşe biçimi
- rgb10a2uint doku biçimi
- Dawn ile ilgili güncellemeler
Chrome 118
copyExternalImageToTexture()
için HTMLImageElement ve ImageData desteği- Okuma-yazma ve salt okunur depolama dokusu için deneysel destek
- Dawn ile ilgili güncellemeler
Chrome 117
- Köşe noktası arabelleği ayarını kaldır
- Bağlama grubunun ayarını kaldır
- Cihaz kaybolduğunda eşzamansız ardışık düzen oluşturma hatalarını sessize alma
- 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 ile ilgili güncellemeler
Chrome 116
- WebCodecs entegrasyonu
requestDevice()
GPUAdapter tarafından döndürülen kayıp cihazimportExternalTexture()
çağrılırsa video oynatmanın sorunsuz olmasını sağlayın- Spesifikasyon uygunluğu
- 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üçle varsayılan olarak ayrı GPU'yu kullanın
- Geliştirici deneyimini iyileştirme
- Dawn ile ilgili güncellemeler
Chrome 114
- JavaScript'i optimize etme
- yapılandırılmamış tuval üzerindeki getCurrentTexture(), InvalidStateError hatası veriyor
- WGSL ile ilgili güncellemeler
- Dawn ile ilgili güncellemeler