Alt gruplarla deneme yapma
Alt gruplar özelliği, SIMD düzeyinde paralelliği etkinleştirerek bir gruptaki iş parçacıklarının iletişim kurmasına ve toplu matematik işlemleri (ör. 16 sayının toplamını hesaplama) gerçekleştirmesine olanak tanır. Bu, iş parçacıkları arası veri paylaşımının son derece verimli bir biçimidir.
Alt gruplar önerisinin minimum düzeyde uygulanmış hali, chrome://flags/#enable-unsafe-webgpu adresindeki "Unsafe WebGPU Support" (Güvenli Olmayan WebGPU Desteği) işaretinin arkasında yerel test için kullanılabilir.
Ayrıca kaynağı denemeye kaydolarak sitenizdeki alt grupları gerçek kullanıcılarla deneyebilirsiniz. Sitenizi kaynak denemelerini kullanmaya hazırlama talimatları için Kaynak denemelerini kullanmaya başlama başlıklı makaleyi inceleyin. Kaynak denemesi, Chrome 128'den 131'e kadar (19 Şubat 2025'te sona erecek) devam edecektir. Deneme Yapma Amacı başlıklı makaleyi inceleyin.
"subgroups" özelliği GPUAdapter içinde kullanılabildiğinde, WGSL'de alt grup desteği almak için bu özelliği içeren bir GPUDevice isteyin ve minSubgroupSize ile maxSubgroupSize sınırlarını kontrol edin.
Ayrıca, enable subgroups; ile bu uzantıyı WGSL kodunuzda açıkça etkinleştirmeniz gerekir. Bu ayar etkinleştirildiğinde aşağıdaki ek özelliklere erişebilirsiniz:
subgroup_invocation_id: Alt gruptaki mesaj dizisinin dizini için yerleşik bir değer.subgroup_size: Alt grup boyutu erişimi için yerleşik bir değer.subgroupBallot(value):subgroup_invocation_id'ye karşılık gelen bitin, söz konusu etkin çağırma içinvaluedoğruysa 1, aksi takdirde 0 olduğu bir bit alanı kümesi döndürür.subgroupBroadcast(value, id):subgroup_invocation_idile eşleşenidile çağırmadan gelenvalue, alt gruptaki tüm çağırmalara yayınlar. Not:idderleme zamanı sabiti olmalıdır.
subgroupAdd, subgroupAll, subgroupElect, subgroupShuffle gibi daha fazla yerleşik işlev gelecekte eklenecektir. 354738715 numaralı soruna bakın.
Alt gruplar işlemlerinde f16'ya izin vermek için "subgroups", "subgroups-f16" ve "shader-f16" özellikleriyle GPUDevice isteğinde bulunun, ardından enable f16, subgroups, subgroups_f16; ile WGSL kodunuzda etkinleştirin.
Aşağıdaki kod snippet'i, alt grupların potansiyelini keşfetmek ve denemek için bir temel sağlar.
const adapter = await navigator.gpu.requestAdapter();
if (!adapter.features.has("subgroups")) {
throw new Error("Subgroups support is not available");
}
// Explicitly request subgroups support.
const device = await adapter.requestDevice({
requiredFeatures: ["subgroups"],
});
const shaderModule = device.createShaderModule({ code: `
enable subgroups;
var<workgroup> wgmem : u32;
@group(0) @binding(0)
var<storage, read> inputs : array<u32>;
@group(0) @binding(1)
var<storage, read_write> output : array<u32>;
@compute @workgroup_size(64)
fn main(@builtin(subgroup_size) subgroupSize : u32,
@builtin(subgroup_invocation_id) id : u32,
@builtin(local_invocation_index) lid : u32) {
// One thread per workgroup writes the value to workgroup memory.
if (lid == 0) {
wgmem = inputs[lid];
}
workgroupBarrier();
var v = 0u;
// One thread per subgroup reads the value from workgroup memory
// and shares that value with every other thread in the subgroup
// to reduce local memory bandwidth.
if (id == 0) {
v = wgmem;
}
v = subgroupBroadcast(v, 0);
output[lid] = v;
}`,
});
// Send the appropriate commands to the GPU...
Çizgiler ve noktalar için derinlik önyargısı ayarını kullanımdan kaldırma
Bir WebGPU spesifikasyon değişikliği, oluşturma işlem hattının topolojisi bir çizgi veya nokta türü olduğunda depthBias, depthBiasSlopeScale ve depthBiasClamp değerlerinin sıfır olmayan bir değere ayarlanmasını doğrulama hatası haline getirir. Geliştiricilere kodlarını güncellemek için yeterli süre tanımak amacıyla, DevTools Konsolu'nda bu yaklaşan doğrulama hakkında bir uyarı gösterilir. Ayrıca, bu durumlarda değerler 0'a zorlanır. 352567424 numaralı soruna bakın.
preventDefault kullanılıyorsa yakalanmamış hata DevTools uyarısını gizleme
uncapturederror için bir etkinlik işleyici kaydedilmişse ve etkinlik işleyici geri aramasında Etkinlik preventDefault() yöntemi çağrılmışsa artık DevTools Konsolu'nda uncapturederror etkinlikleriyle ilgili uyarılar gösterilmez. Bu davranış, JavaScript'teki etkinlik işleme ile eşleşir. Aşağıdaki örneğe ve 40263619 numaralı soruna bakın.
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();
device.addEventListener("uncapturederror", (event) => {
// Prevents browser warning to show up in the DevTools Console.
event.preventDefault();
// TODO: Handle event.error
});
WGSL, önce örnekleme interpolasyonu ve ardından
WGSL interpolate özelliği, kullanıcı tanımlı G/Ç verisi enterpolasyonunu yönetmenize olanak tanır. Yeni enterpolasyon örnekleme parametreleri first (varsayılan) ve either artık size ek kontrol imkanı sunuyor: first, ilkelin ilk köşe noktasındaki değeri kullanırken either, ilk veya son köşe noktasını kullanmanıza olanak tanır. 340278447 numaralı soruna bakın.
Dawn ile ilgili güncellemeler
Eşzamansız işlemleri işlemek için Dawn'ın WGPUFuture'ı uygulama işlemi tamamlandı. Fırsatçı etkinlik işleme için wgpuInstanceProcessEvents ve geri çağırma konumlarını tanımlamak için WGPUCallbackMode temel kavramlar arasındadır. WGPUFuture, sınırsız kullanım ömrüne sahip tek seferlik etkinlikleri ifade eder. wgpuInstanceWaitAny ise gelecekteki herhangi bir etkinliğin tamamlanmasını veya zaman aşımını bekler. 42240932 numaralı soruna bakın.
CompositeAlphaMode::Auto değeri artık Surface::GetCapabilities() tarafından raporlanmıyor. Hâlâ geçerli ve Surface::GetCapabilities().alphaMode[0] ile eşdeğerdir. 292 numaralı soruna bakın.
OpenGL arka ucu artık her Present() çağrısı için y ekseninde çevrilmiş bir blit ile Surface'ı destekliyor. 344814083 numaralı sorunu inceleyin.
Adapter::GetProperties() yöntemi, Adapter::GetInfo() kullanımı lehine kullanımdan kaldırıldı.
Harici bir katkıda bulunan olan Jaswant, tüm CMake dosyalarını yeniden yazarak güncellemeyi kolaylaştırdı ve önceden derlemeye olanak tanıdı. CMake projelerinde Dawn'ı kullanmak için hızlı başlangıç kılavuzuna göz atın.
Bu özet yalnızca önemli noktalardan 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 143
- Doku bileşeni karıştırması
- bgra8unorm salt okunur depolama dokusu kullanımını kaldırma
- Dawn ile ilgili güncellemeler
Chrome 142
Chrome 141
- Tint IR tamamlandı
- WGSL derleyicisinde tam sayı aralığı analizi
- Vulkan arka ucu için SPIR-V 1.4 güncellemesi
- Dawn ile ilgili güncellemeler
Chrome 140
- Cihaz istekleri adaptörü tüketiyor
- Doku görünümünün kullanıldığı yerlerde doku kullanmak için kısa yol
- WGSL textureSampleLevel, 1 boyutlu dokuları destekler
- bgra8unorm salt okunur depolama dokusu kullanımını kullanımdan kaldırma
- GPUAdapter isFallbackAdapter özelliğini kaldırın
- Dawn ile ilgili güncellemeler
Chrome 139
- BC ve ASTC sıkıştırılmış biçimleri için 3D doku desteği
- Yeni "temel özellikler ve sınırlar" özelliği
- WebGPU uyumluluk modu için deneme süreci
- Dawn ile ilgili güncellemeler
Chrome 138
- Arabellek bağlama kaynağı olarak kullanma için kısa yol
- Oluşturma sırasında eşlenen arabellekler için boyut şartı değişiklikleri
- Yakın tarihli GPU'lar için mimari raporu
- GPUAdapter isFallbackAdapter özelliğinin desteğini sonlandırma
- Dawn ile ilgili güncellemeler
Chrome 137
- externalTexture bağlama için doku görünümünü kullanma
- Arabellekler, ofset ve boyut belirtilmeden kopyalanıyor
- Atomik işaretçi kullanarak WGSL workgroupUniformLoad
- GPUAdapterInfo powerPreference özelliği
- GPURequestAdapterOptions compatibilityMode özelliğini kaldırma
- Dawn ile ilgili güncellemeler
Chrome 136
- GPUAdapterInfo isFallbackAdapter özelliği
- D3D12'de gölgelendirici derleme süresinde iyileştirmeler
- Kanvas görüntülerini kaydetme ve kopyalama
- Artış uyumluluk modu kısıtlamaları
- Dawn ile ilgili güncellemeler
Chrome 135
- Boş bağlama grubu düzeniyle işlem hattı düzeni oluşturmaya izin verme
- Görüntü alanlarının, oluşturma hedefi sınırlarının ötesine geçmesine izin verme
- Android'de deneysel uyumluluk moduna daha kolay erişim
- maxInterStageShaderComponents sınırını kaldırma
- Dawn ile ilgili güncellemeler
Chrome 134
- Alt gruplarla makine öğrenimi iş yüklerini iyileştirme
- Karıştırılabilir olarak kayan filtrelenebilir doku türleri desteğini kaldırma
- Dawn ile ilgili güncellemeler
Chrome 133
- Ek unorm8x4-bgra ve 1 bileşenli köşe biçimleri
- Bilinmeyen sınırların tanımlanmamış değerle istenmesine izin verme
- WGSL hizalama kurallarındaki değişiklikler
- Silme işlemiyle WGSL performansında artış
- Harici dokular için VideoFrame displaySize'ı kullanma
- copyExternalImageToTexture kullanarak varsayılan olmayan yönlere sahip resimleri işleme
- Geliştirici deneyimini iyileştirme
- featureLevel ile uyumluluk modunu etkinleştirme
- Deneysel alt grup özelliklerinde temizleme
- maxInterStageShaderComponents sınırının desteğini sonlandırma
- Dawn ile ilgili güncellemeler
Chrome 132
- Doku görünümü kullanımı
- 32 bit kayan nokta dokularını karıştırma
- GPUDevice adapterInfo özelliği
- Geçersiz biçimle tuval bağlamı yapılandırıldığında JavaScript hatası oluşuyor
- Doku üzerinde filtreleme örnekleyici kısıtlamaları
- Genişletilmiş alt grup denemesi
- Geliştirici deneyimini iyileştirme
- 16 bit normalleştirilmiş doku biçimleri için deneysel destek
- Dawn ile ilgili güncellemeler
Chrome 131
- WGSL'de kırpma mesafeleri
- GPUCanvasContext getConfiguration()
- Nokta ve çizgi temel öğelerinde derinlik önyargısı olmamalıdır
- Alt gruplar için kapsayıcı tarama yerleşik işlevleri
- Çoklu çekme dolaylı desteği (deneysel)
- Shader modülü derleme seçeneği strict math
- GPUAdapter requestAdapterInfo() yöntemini kaldırın
- Dawn ile ilgili güncellemeler
Chrome 130
- Çift kaynaklı karıştırma
- Metal'de gölgelendirici derleme süresinde iyileştirmeler
- GPUAdapter requestAdapterInfo() yönteminin desteğinin sonlandırılması
- Dawn ile ilgili güncellemeler
Chrome 129
Chrome 128
- Alt gruplarla deneme yapma
- Çizgiler ve noktalar için derinlik önyargısı ayarını kullanımdan kaldırma
- preventDefault kullanılıyorsa yakalanmamış hata DevTools uyarısını gizleme
- WGSL, önce örnekleme interpolasyonu
- Dawn ile ilgili güncellemeler
Chrome 127
- Android'de OpenGL ES için deneysel destek
- GPUAdapter info özelliği
- WebAssembly birlikte çalışabilirlik iyileştirmeleri
- Komut kodlayıcı hatalarında iyileştirme
- Dawn ile ilgili güncellemeler
Chrome 126
- maxTextureArrayLayers sınırını artırma
- Vulkan arka ucu için arabellek yükleme optimizasyonu
- Gölgeleyici derleme süresinde iyileştirmeler
- Gönderilen komut arabellekleri benzersiz olmalıdır
- Dawn ile ilgili güncellemeler
Chrome 125
- Alt gruplar (geliştirme aşamasında olan bir özellik)
- 3D dokunun dilimine göre oluşturma
- Dawn ile ilgili güncellemeler
Chrome 124
- Salt okunur ve okuma-yazma depolama dokuları
- Hizmet çalışanı ve paylaşılan çalışan desteği
- Yeni adaptör bilgisi ö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 bileşikleri referanssızlaştırmak için sözdizimi kolaylığı
- Şablon ve derinlik yönleri için ayrı salt okunur durum
- Dawn ile ilgili güncellemeler
Chrome 122
- Uyumluluk moduyla erişimi genişletme (geliştirme aşamasında olan bir özellik)
- maxVertexAttributes sınırını artırma
- Dawn ile ilgili güncellemeler
Chrome 121
- Android'de WebGPU'yu destekleme
- Windows'da gölgelendirici derleme için FXC yerine DXC kullanma
- İşleme ve oluşturma geçişlerindeki zaman damgası sorguları
- Shader modüllerine varsayılan giriş noktaları
- GPUExternalTexture renk alanı olarak display-p3'ü destekleme
- Bellek yığınları bilgileri
- Dawn ile ilgili güncellemeler
Chrome 120
- WGSL'de 16 bitlik kayan nokta değerleri için destek
- Sınırları zorlama
- Derinlik-şablon durumundaki değişiklikler
- Adaptör bilgisi güncellemeleri
- Zaman damgası sorgularının nicelleştirilmesi
- Bahar temizliği özellikleri
Chrome 119
- Filtrelenebilir 32 bit kayan noktalı dokular
- unorm10-10-10-2 köşe biçimi
- rgb10a2uint doku biçimi
- Dawn ile ilgili güncellemeler
Chrome 118
copyExternalImageToTexture()içinde HTMLImageElement ve ImageData desteği- Okuma/yazma ve salt okuma depolama dokusu için deneysel destek
- Dawn ile ilgili güncellemeler
Chrome 117
- Köşe arabelleğini ayarlamayı kaldırma
- Bağlama grubunu kaldırma
- Cihaz kaybolduğunda eşzamansız işlem hattı oluşturma işlemindeki hataları sessize alma
- SPIR-V gölgelendirici modülü oluşturma güncellemeleri
- Geliştirici deneyimini iyileştirme
- Otomatik olarak oluşturulan düzene sahip işlem hattı önbelleğe alma
- Dawn ile ilgili güncellemeler
Chrome 116
- WebCodecs entegrasyonu
- GPUAdapter
requestDevice()tarafından döndürülen kayıp cihaz importExternalTexture()çağrılırsa video oynatmayı sorunsuz tutma- Spesifikasyona uygunluk
- 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ücünde varsayılan olarak ayrı GPU kullanma
- Geliştirici deneyimini iyileştirme
- Dawn ile ilgili güncellemeler
Chrome 114
- JavaScript'i optimize etme
- Yapılandırılmamış tuvalde getCurrentTexture() işlevi InvalidStateError hatası veriyor
- WGSL güncellemeleri
- Dawn ile ilgili güncellemeler
Chrome 113
importExternalTexture()'de WebCodecs VideoFrame kaynağını kullanma