Salt okuma ve okuma-yazma depolama dokuları
Depolama doku bağlama türü, gölgelendiricilerin TEXTURE_BINDING
kullanımını eklemeden depolama dokularından okumasına ve belirli biçimlerde karma okuma ve yazma işlemleri gerçekleştirmesine olanak tanır. "readonly_and_readwrite_storage_textures"
WGSL dil uzantısı navigator.gpu.wgslLanguageFeatures
içinde mevcut olduğunda, bir bağlama grubu düzeni oluştururken artık GPUStorageTexture
erişimini "read-write"
veya "read-only"
olarak ayarlayabilirsiniz. Daha önce bu işlem "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ıma sunulmuştur.
Taşınabilirlik potansiyelini belirtmek için WGSL gölgelendirici kodunuzun en üstünde requires readonly_and_readwrite_storage_textures;
ile bir requires-directive yönergesini kullanmanız önerilir. Aşağıdaki örneği inceleyin ve issue dawn:1972'yi inceleyin.
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.
Service Worker'lar ve paylaşılan çalışan desteği
Chrome'daki WebGPU, artık hem hizmet çalışanları hem de paylaşılan çalışanlar için destek sunarak web çalışanları desteğini bir üst seviyeye taşıyor. Arka plan görevlerini ve çevrimdışı özellikleri geliştirmek için Service Worker'ları, komut dosyaları arasında verimli kaynak paylaşımı için de paylaşılan çalışanları kullanabilirsiniz. Sorun chromium:41494731 bölümüne bakın.
Uzantı hizmet çalışanında WebGPU'nun nasıl kullanılacağını görmek için Chrome uzantı ö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
adresinde "WebGPU Geliştirici Özellikleri" işaretini etkinleştirdiyse requestAdapterInfo()
çağrılırken standart olmayan d3dShaderModel
ve vkDriverVersion
bağdaştırıcı bilgisi özellikleri artık kullanılabilir. Desteklendiğinde:
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. Dokümanlara ve issue şawn:1254'e göz atın.vkDriverVersion
, Vulkan sürücüsünün satıcı tarafından belirtilen sürüm numarasıdır. Belgelere ve chromium:327457605 sorunlarını inceleyin.
Hata düzeltmeleri
layout: "auto"
kullanarak eşleşen bağlantı gruplarına sahip iki ardışık düzen oluşturmak, ardından ilk ardışık düzen ile bir bağlama grubu oluşturmak ve bunu ikinci ardışık düzende kullanmak artık GPUValidationError'u oluşturur. Bu hatanın verilmesi bir uygulama hatasıydı ve uygun testlerle düzeltildi. issue dawn:2402'yi inceleyin.
Dawn ile ilgili güncellemeler
Dawn API'de wgpuDeviceSetUncapturedErrorCallback
ile belirlenmiş yakalanmamış hata geri çağırması artık GPU cihazı kaybolduktan sonra çağrılmamaktadır. Bu düzeltme, Dawn'ı JavaScript API spesifikasyonuyla ve Blink'in uygulamasıyla uyumlu hale getirir. issue dawn:2459'a bakın.
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