Yayınlanma tarihi: 8 Ocak 2025
Doku görünümü kullanımı
GPU doku görünümleri şu anda kaynak GPU dokusundaki tüm kullanım işaretlerini devralır. Bazı görünüm biçimleri belirli kullanımlarla uyumlu olmadığından bu durum sorunlara yol açabilir. Bu sorunu çözmek için, isteğe bağlı usage
üyesiyle createView()
işlevini çağırdığınızda, kaynak dokunun kullanım işaretlerinin seçilen görünüm biçimiyle uyumlu bir alt kümesini açıkça belirtebilirsiniz.
Bu değişiklik, önceden doğrulama ve görünümün nasıl kullanıldığı üzerinde daha ayrıntılı kontrol sağlar. Ayrıca, kullanım işaretlerinin görünüm oluşturmada yaygın parametreler olduğu diğer grafik API'leriyle de uyumludur ve optimizasyon fırsatları sunar.
Aşağıdaki snippet'i, chromestatus girişini ve 363903526 numaralı sorunu inceleyin.
const texture = myDevice.createTexture({
size: [4, 4],
format: "rgba8unorm",
usage:
GPUTextureUsage.RENDER_ATTACHMENT |
GPUTextureUsage.TEXTURE_BINDING |
GPUTextureUsage.STORAGE_BINDING,
viewFormats: ["rgba8unorm-srgb"],
});
const view = texture.createView({
format: 'rgba8unorm-srgb',
usage: GPUTextureUsage.RENDER_ATTACHMENT, // Restrict allowed usage.
});
32 bit kayan noktalı doku karıştırma
32 bit kayan nokta dokular, geniş bir renk değeri aralığını korumak ve renk bantlama artefaktlarını önlemek için HDR oluşturmada gereklidir. Örneğin, bilimsel görselleştirmede.
Yeni "float32-blendable"
GPU özelliği, "r32float"
, "rg32float"
ve "rgba32float"
biçimlerindeki GPU dokularını karıştırılabilir hale getirir. Bu özellik ile GPU cihazı istenirken artık herhangi bir float32 biçimli ekle karıştırma kullanan bir oluşturma işlem hattı oluşturulabilir.
Aşağıdaki snippet'e, chromestatus girişine ve 369649348 numaralı soruna bakın.
const adapter = await navigator.gpu.requestAdapter();
if (!adapter.features.has("float32-blendable")) {
throw new Error("32-bit float textures blending support is not available");
}
// Explicitly request 32-bit float textures blending support.
const device = await adapter.requestDevice({
requiredFeatures: ["float32-blendable"],
});
// ... Creation of shader modules is omitted for readability.
// Create a render pipeline that uses blending for the rgba32float format.
device.createRenderPipeline({
vertex: { module: myVertexShaderModule },
fragment: {
module: myFragmentShaderModule,
targets: [
{
format: "rgba32float",
blend: { color: {}, alpha: {} },
},
],
},
layout: "auto",
});
// Create the GPU texture with rgba32float format and
// send the appropriate commands to the GPU...
GPUDevice adapterInfo
özelliği
Kullanıcı tarafından sağlanan GPUDevice
nesneleri alan kitaplıkların, fiziksel GPU ile ilgili bilgilere erişmesi önemlidir. Bu kitaplıkların, GPU mimarisine göre optimizasyon yapması veya geçici çözümler uygulaması gerekebilir. Bu bilgilere GPUAdapter
nesnesi üzerinden erişmek mümkün olsa da yalnızca GPUDevice
nesnesinden doğrudan almak mümkün değildir. Bu durum, kullanıcıların GPUDevice
ile birlikte ek bilgiler sağlamasını gerektirebileceğinden rahatsız edici olabilir.
Bu sorunu çözmek için GPUAdapterInfo
artık GPUDevice
adapterInfo
özelliği üzerinden kullanıma sunuluyor. Bu özellikler, mevcut GPUAdapter
info
özelliğine benzer.
Aşağıdaki snippet'i, chromestatus girişini ve 376600838 numaralı sorunu inceleyin.
function optimizeForGpuDevice(device) {
if (device.adapterInfo.vendor === "amd") {
// Use AMD-specific optimizations.
} else if (device.adapterInfo.architecture.includes("turing")) {
// Optimize for NVIDIA Turing architecture.
}
}
Geçersiz biçimdeki tuval bağlamını yapılandırma JavaScript hatası veriyor
Daha önce, GPU tuval bağlamının configure()
yöntemiyle geçersiz bir doku biçimi kullanıldığında GPU doğrulama hatası oluşuyordu. Bu, JavaScript TypeError
oluşturacak şekilde değiştirildi. Bu, GPU tuval bağlamı yanlış yapılandırılmış olmasına rağmen getCurrentTexture()
'ın geçerli bir GPU dokusu döndürdüğü senaryoları önler. Daha fazla bilgiye 372837859 numaralı sorundan ulaşabilirsiniz.
Doku üzerindeki filtreleme örnekleyici kısıtlamaları
"sint"
, "uint"
ve "depth"
biçimindeki dokuların filtreleme örnekleriyle kullanılmasına daha önce izin veriliyordu. Artık filtreleme örnekleyiciyle "sint"
veya "uint"
biçiminde doku kullanılması doğru şekilde engelleniyor. Şu anda, gelecekte izin verilmeyeceği için filtreleme örnekleyici içeren bir "depth"
" dokusu kullanırsanız uyarı verildiğini unutmayın. 376497143 numaralı sorunu inceleyin.
Bu kısıtlamalar, filtreleme içermeyen bir örnekleyiciyle derinlik dokusu kullanmanın bağlama grubu düzenlerinin manuel olarak oluşturulmasını gerektirdiği anlamına gelir. Bunun nedeni, "otomatik" olarak oluşturulan bağlama grubu düzenlerinin bu kombinasyonu henüz desteklememesidir. Spec issue 4952, bu sınırlamayı gelecekte gidermek için değerlendirilen bir öneri içerir.
Genişletilmiş alt grup denemesi
Başlangıçta Chrome 131'de sona ermesi planlanan alt grup denemesi, Chrome 133'e kadar uzatıldı ve 16 Nisan 2025'te sona erecek. İlk kaynak denemesi performansa odaklanmış olsa da önemli taşınabilirlik korumaları eksikti. Bu güvenlik önlemleri artık eklenecek ve mevcut kodda hatalara neden olabilecek.
Geliştirici deneyimini iyileştirme
Windows'da powerPreference
seçeneği requestAdapter()
ile birlikte kullanıldığında artık DevTools'ta bir uyarı gösteriliyor. Chrome, iki farklı GPU'yu nasıl kullanacağını ve sonuçları nasıl birleştireceğini öğrendiğinde bu uyarı kaldırılacak. 369219127 numaralı sorunu inceleyin.
Artık çok büyük bir GPU arabelleği oluşturulurken hata mesajında GPU arabelleğinin boyutu da gösteriliyor. 374167798 numaralı soruna bakın.
16 bit normalleştirilmiş doku biçimleri için deneysel destek
16 bit imzalı normalleştirilmiş ve imzasız normalleştirilmiş doku biçimleri, standartlaştırma için tartışılırken deneysel olarak "chromium-experimental-snorm16-texture-formats"
ve "chromium-experimental-unorm16-texture-formats"
GPU özelliklerinin arkasında kullanıma sunulmuştur.
Bu özellikler; COPY_SRC
, COPY_DST
, TEXTURE_BINDING
, RENDER_ATTACHMENT
kullanımlarıyla 16 bit normalleştirilmiş doku biçimleri, çoklu örnekleme ve çözme özelliklerine destek ekler. Ek biçimler "r16unorm"
, "rg16unorm"
, "rgba16unorm"
, "r16snorm"
, "rg16snorm"
ve "rgba16snorm"
'dır.
Bu deneysel özellikler standartlaştırılana kadar Chrome'da kullanılabilmeleri için chrome://flags/#enable-unsafe-webgpu
adresinde "Unsafe WebGPU Support" (Güvenli Olmayan WebGPU Desteği) işaretini etkinleştirin.
Aşağıdaki snippet'i ve 374790898 numaralı sorunu inceleyin.
const adapter = await navigator.gpu.requestAdapter();
if (!adapter.features.has("chromium-experimental-snorm16-texture-formats")) {
throw new Error("16-bit signed normalized formats support is not available");
}
// Explicitly request 16-bit signed normalized formats support.
const device = await adapter.requestDevice({
requiredFeatures: ["chromium-experimental-snorm16-texture-formats"],
});
// Create a texture with the rgba16snorm format which consists of four
// components, each of which is a 16-bit, normalized, signed integer value.
const texture = device.createTexture({
size: [4, 4],
format: "rgba16snorm",
usage: GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.TEXTURE_BINDING,
});
// Send the appropriate commands to the GPU...
Dawn güncellemeleri
wgpu::Adapter
ve wgpu::Device
'deki EnumerateFeatures(FeatureName * features)
yöntemleri, GetFeatures(SupportedFeatures * features)
kullanımını desteklemek için kullanımdan kaldırıldı. 368672123 numaralı soruna bakın.
webgpu.h C API, tüm char const *
öğelerini UTF-8 kodlu bir dizeye görünümü tanımlayan bir WGPUStringView
yapısıyla değiştirdi. Dizenin verilerine yönelik bir işaretçi gibi davranır ve uzunlukla birlikte kullanılır. Bu sayede, bir dizeyi kopyalamanıza gerek kalmadan dizenin bölümleriyle çalışabilirsiniz. 42241188 numaralı soruna bakı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 her şeyin listesi.
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 kaynak denemesi
- 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 ver
- Görüntü alanlarının, oluşturma hedefi sınırlarının ötesine geçmesine izin ver
- 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 ver
- 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 noktalı doku karıştırma
- GPUDevice adapterInfo özelliği
- Geçersiz biçimdeki tuval bağlamını yapılandırma JavaScript hatası veriyor
- 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 örneklemeyi enterpolasyon yapar ve ardından
- 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ı
- Service worker'lar ve shared worker'lar için destek
- Yeni bağdaştırıcı 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 damgalı 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ı zorlayın
- Derinlik-şablon durumundaki değişiklikler
- Adaptör bilgisi güncellemeleri
- Zaman damgası sorgularının nicemleme işlemi
- 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şleminden kaynaklanan 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 hatlarını önbelleğe alma
- Dawn ile ilgili güncellemeler
Chrome 116
- WebCodecs entegrasyonu
- GPUAdapter
requestDevice()
tarafından döndürülen kayıp cihaz importExternalTexture()
aranı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üçte 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