Salt okunur ve salt okunur/yazılabilir 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. 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 özellik "write-only"
ile sınırlıydı.
Böylece, WGSL gölgelendirici kodunuz depolama dokuları için read_write
ve read
erişim niteleyicisini kullanabilir, textureLoad()
ve textureStore()
yerleşik işlevleri buna uygun şekilde 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ışan 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ı için de paylaşılan çalışanları kullanabilirsiniz. chromium:41494731 sorunu bölümüne 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'yi inceleyin.
Şafak güncellemeleri
Dawn API'de, wgpuDeviceSetUncapturedErrorCallback
ile yakalanmamış hata geri çağırma kümesi artık GPU cihazı kaybolduktan sonra çağrılamıyor. Bu düzeltme, Dawn'u JavaScript API spesifikasyonu ve Blink'in uygulamasıyla uyumlu hale getirir. issue dawn:2459 konusuna bakın.
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 deneysel destek
- Shader modülü derleme seçeneği katı matematik
- GPUAdapter requestAdapterInfo() yöntemini kaldırın
- Gün doğumu güncellemeleri
Chrome 130
- İkili 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 sürümü
- 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 sürümü
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şlev 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'yu destekleme
- 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ı 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
- Bağdaştırıcı bilgisi 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 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 arabelleğini ayarlama
- 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ğlayın- Spesifikasyona uygunluk
- Geliştirici deneyimini iyileştirme
- Gün doğumu 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 sürümü
- JavaScript'i optimize edin
- 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