Yayınlanma tarihi: 26 Mayıs 2025
externalTexture bağlaması için doku görünümünü kullanma
Artık GPUBindGroup oluştururken GPUExternalTexture bağlaması yerine uyumlu bir GPUTextureView (2D, tek alt kaynak) kullanılmasına izin veriliyor.
Bu, hem GPUExternalTexture (kaynak video için) hem de GPUTextureView'ın (ara işleme için) işlenmesi gereken video efektleri ardışık düzenlerindeki gölgelendirici mantığını basitleştirir. Ayrıca, dokuların kaynağına bağlı olarak gölgelendiricileri dinamik olarak derleme ihtiyacını da azaltır. Yayınlama Niyeti: WebGPU: externalTexture bağlaması için GPUTextureView başlıklı makaleyi inceleyin.
const texture = myDevice.createTexture({
size: [42, 42],
format: navigator.gpu.getPreferredCanvasFormat(),
usage: GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.TEXTURE_BINDING,
});
const code = `
@group(0) @binding(0) var texture : texture_external;
@group(0) @binding(1) var<storage, read_write> buffer: vec2u;
@compute @workgroup_size(1) fn main() {
buffer = textureDimensions(texture);
}`;
const pipeline = myDevice.createComputePipeline({
layout: "auto",
compute: { module: myDevice.createShaderModule({ code }) },
});
const bindGroup = myDevice.createBindGroup({
layout: pipeline.getBindGroupLayout(0),
entries: [
{ binding: 0, resource: texture.createView() }, // Use texture view for an externalTexture binding
{ binding: 1, resource: { buffer: myBuffer } },
],
});
Ofset ve boyut belirtmeden kopyalama işlemini arabelleğe alır.
Yeni bir GPUCommandEncoder yöntemi aşırı yüklemesi, geliştiricilerin tüm arabelleklerin kopyasını basitleştirmek için copyBufferToBuffer()
kullanırken ofsetleri ve boyut parametrelerini atlamasına olanak tanır. Intent to Ship: WebGPU: copyBufferToBuffer overload başlıklı makaleyi inceleyin.
const size = 42;
const srcBuffer = myDevice.createBuffer({
size,
usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC,
});
const dstBuffer = myDevice.createBuffer({
size,
usage: GPUBufferUsage.COPY_DST | GPUBufferUsage.MAP_READ,
});
// Copy entire buffer.
myCommandEncoder.copyBufferToBuffer(srcBuffer, dstBuffer);
// This is the same as the following.
// myCommandEncoder.copyBufferToBuffer(srcBuffer, 0, dstBuffer, 0, size);
Atomik işaretçiyi kullanarak WGSL workgroupUniformLoad
Geliştiricilerin işlerini kolaylaştırmak için WGSL'ye yeni bir workgroupUniformLoad(ptr)
aşırı yükleme işlevi eklendi. ptr
tarafından işaretlenen değeri atomik olarak yükler ve çalışma grubundaki tüm çağrılara döndürür. Burada ptr
, bir çalışma grubu değişkeni içinde atomik işaretçidir. 408241039 numaralı soruna bakın.
@group(0) @binding(0) var<storage, read_write> buffer : array<u32, 1>;
var<workgroup> wgvar : atomic<u32>;
@compute @workgroup_size(1, 1)
fn main(@builtin(local_invocation_index) lid: u32) {
if (lid == 0) {
atomicStore(&(wgvar), 42u);
}
buffer[lid] = workgroupUniformLoad(&wgvar);
}
GPUAdapterInfo powerPreference özelliği
Standart olmayan powerPreference
GPUAdapterInfo dize özelliği, kullanıcı chrome://flags/#enable-webgpu-developer-features
adresinde "WebGPU Geliştirici Özellikleri" işaretini etkinleştirdiğinde artık kullanılabilir. Destekleniyorsa powerPreference
değeri, GPURequestAdapterOptions parametresinde kullanılan GPUPowerPreference değerine bağlı olarak "low-power"
veya "high-performance"
olabilir. CL 6438860 dosyasını inceleyin.
function checkPowerPreferenceForGpuDevice(device) {
const powerPreference = device.adapterInfo.powerPreference;
if (powerPreference === "high-performance") {
// High-performance GPU detected. Enabling enhanced graphics settings.
} else if (powerPreference === "low-power") {
// Low-power GPU detected. Optimizing for battery life.
}
}
GPURequestAdapterOptions compatibilityMode özelliğini kaldırın
Deneysel GPURequestAdapterOptions compatibilityMode
özelliği, Chrome 133'te eklenen standartlaştırılmış featureLevel
özelliğinin lehine kaldırıldı. 366151404 numaralı soruna bakın.
Şafak güncellemeleri
Geliştiriciler, hem WebAssembly'i hem de belirli platformları hedeflemek için webgpu.h dosyasını kullanarak C++ gibi dillerde WebGPU projeleri oluşturabilir. Dawn'ın yeni yayınlanan "emdawnwebgpu" ("Emscripten Dawn WebGPU") sürümü, tarayıcı API'si üzerinden en son standartlaştırılmış webgpu.h dosyasını uygular.
Emdawnwebgpu, Emscripten'in (artık bakımı yapılmayan) yerleşik bağlamalarının (USE_WEBGPU
) (bakımı yapılan) bir çatalıdır. Tüm yeni geliştirmeler emdawnwebgpu üzerinde yapılmaktadır ve geliştiriciler emdawnwebgpu'ya geçiş yaptığında Emscripten'in yerleşik bağlamaları kaldırılacaktır. Emdawnwebgpu'nun C üstbilgisi Dawn'a çok yakındır ancak yerleşik bağlamalar önemli ölçüde eskidir.
emdawnwebgpu'yu Dawn'un GitHub sürümler sayfasından indirin ve nasıl kullanılacağı hakkında bilgi edinmek için paketin README.md dosyasını okuyun. Kaynak dosyaları Dawn deposunda bulunabilir.
Tam bir kılavuz için güncellenmiş WebGPU ile uygulama oluşturma dokümanlarına göz atın.
Bu, öne çıkan özelliklerden 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 138
- Bağlayıcı kaynak olarak arabellek kullanma kısayolu
- Oluşturulma sırasında eşlenen arabellekler için boyut şartı değişiklikleri
- Son GPU'lar için mimari raporu
- GPUAdapter isFallbackAdapter özelliğinin desteği sonlandırıldı
- Dawn güncellemeleri
Chrome 137
- externalTexture bağlaması için doku görünümünü kullanma
- Ofset ve boyut belirtilmeden kopyalanan tamponlar
- WGSL workgroupUniformLoad using pointer to atomic
- GPUAdapterInfo powerPreference özelliği
- GPURequestAdapterOptions compatibilityMode özelliğinin kaldırılması
- Dawn güncellemeleri
Chrome 136
- GPUAdapterInfo isFallbackAdapter özelliği
- D3D12'de gölgelendirici derleme süresiyle ilgili iyileştirmeler
- Kanvas resimlerini kaydetme ve kopyalama
- Artış uyumluluk modu kısıtlamaları
- Dawn güncellemeleri
Chrome 135
- Boş bağlama grubu düzeniyle ardışık düzen oluşturmaya izin verme
- Görüntüleme alanlarının, oluşturma hedefi sınırlarının dışına taşmasına izin verme
- Android'de deneysel uyumluluk moduna daha kolay erişim
- maxInterStageShaderComponents sınırını kaldırma
- Dawn güncellemeleri
Chrome 134
- Alt gruplarla makine öğrenimi iş yüklerini iyileştirme
- Karıştırılabilir olarak kayan nokta filtrelenebilir doku türleri desteğini kaldırın
- Dawn güncellemeleri
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 ile 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üntüleme 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 dahil edici tarama yerleşik işlevleri
- Çoklu çizim için deneysel destek
- Shader modülü derleme seçeneği katı matematik
- GPUAdapter requestAdapterInfo() yönteminin kaldırılması
- Dawn güncellemeleri
Chrome 130
- Çift kaynak karıştırma
- Metal'de gölgelendirici derleme süresi iyileştirmeleri
- 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 arabelleğe 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ı hakkında bilgi
- 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