Salt okunur ve salt okunur/yazılabilir depolama dokuları
Depolama dokusu bağlama türü, gölgelendiricilerin TEXTURE_BINDING
kullanımı eklemeden depolama dokularından okuma yapmasına ve belirli biçimlerde karma okuma ve yazma işlemlerini gerçekleştirmesine olanak tanır. navigator.gpu.wgslLanguageFeatures
'te "readonly_and_readwrite_storage_textures"
WGSL dil uzantısı mevcut olduğunda artık bağlama grubu düzeni oluştururken GPUStorageTexture
erişimini "read-write"
veya "read-only"
olarak ayarlayabilirsiniz. Daha önce bu sayı "write-only"
ile sınırlıydı.
Ardından WGSL gölgelendirici kodunuz, depolama dokuları için read_write
ve read
erişim niteleyicisini kullanabilir, textureLoad()
ve textureStore()
yerleşik işlevleri buna göre davranır ve bir çalışma grubundaki doku belleği erişimlerini senkronize etmek için yeni bir textureBarrier()
yerleşik işlevi kullanılabilir.
WGSL gölgelendirici kodunuzun en üstünde requires readonly_and_readwrite_storage_textures;
ile birlikte taşınabilirlik olmaması olasılığını belirtmek için bir requires-directive kullanılması önerilir. Aşağıdaki örneğe ve sayı dawn:1972'ye bakın.
if (!navigator.gpu.wgslLanguageFeatures.has("readonly_and_readwrite_storage_textures")) {
throw new Error("Read-only and read-write storage textures are not available");
}
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();
const bindGroupLayout = device.createBindGroupLayout({
entries: [{
binding: 0,
visibility: GPUShaderStage.COMPUTE,
storageTexture: {
access: "read-write", // <-- New!
format: "r32uint",
},
}],
});
const shaderModule = device.createShaderModule({ code: `
requires readonly_and_readwrite_storage_textures;
@group(0) @binding(0) var tex : texture_storage_2d<r32uint, read_write>;
@compute @workgroup_size(1, 1)
fn main(@builtin(local_invocation_id) local_id: vec3u) {
var data = textureLoad(tex, vec2i(local_id.xy));
data.x *= 2;
textureStore(tex, vec2i(local_id.xy), data);
}`
});
// You can now create a compute pipeline with this shader module and
// send the appropriate commands to the GPU.
Hizmet çalışanları ve paylaşılan çalışanlar desteği
Chrome'daki WebGPU, web işçisi desteğini bir üst seviyeye taşıyarak artık hem hizmet işçileri hem de ortak işçiler için destek sunmaktadır. Arka plan görevlerini ve çevrimdışı özellikleri iyileştirmek için hizmet çalışanlarını, komut dosyaları arasında verimli kaynak paylaşımı yapmak için de paylaşılan çalışanları kullanabilirsiniz. chromium:41494731 numaralı soruna bakın.
WebGPU'nun bir uzantı hizmet işçisinde nasıl kullanılacağını görmek için Chrome uzantısı örneğine ve WebLLM Chrome uzantısına göz atın.
Yeni adaptör bilgileri özellikleri
Kullanıcı chrome://flags/#enable-webgpu-developer-features
'te "WebGPU Geliştirici Özellikleri" işaretini etkinleştirdiyse standart olmayan d3dShaderModel
ve vkDriverVersion
bağdaştırıcısı bilgi özellikleri artık requestAdapterInfo()
çağrıldıktan sonra kullanılabilir. Desteklenen durumlarda:
d3dShaderModel
, desteklenen maksimum D3D gölgelendirici model numarasıdır. Örneğin, 62 değeri mevcut sürücünün HLSL SM 6.2'yi desteklediğini gösterir. Belgelere ve issue dawn:1254 başlıklı makaleye bakın.vkDriverVersion
, Vulkan sürücüsünün tedarikçi firma tarafından belirtilen sürüm numarasıdır. Belgeleri ve chromium:327457605 sorununu inceleyin.
Hata düzeltmeleri
layout: "auto"
kullanarak eşleşen bindgroup'lar içeren iki ardışık düzen oluşturma, ardından ilk ardışık düzenle bir bindgroup oluşturma ve bunu ikinci ardışık düzende kullanma işlemi artık GPUValidationError hatası veriyor. Bu durum, uygun testler ile düzeltilen bir uygulama hatasıydı. issue dawn:2402 konusuna bakın.
Şafak güncellemeleri
Dawn API'de, wgpuDeviceSetUncapturedErrorCallback
ile ayarlanan yakalanmayan hata geri çağırma işlevi, GPU cihaz kaybolduktan sonra artık çağrılmaz. Bu düzeltme, Dawn'u JavaScript API spesifikasyonu ve Blink'in uygulamasıyla uyumlu hale getirir. issue dawn:2459 konusuna bakın.
Bu, önemli noktalardan 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 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 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() 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 arabellek 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