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üntüleme biçimleri belirli kullanımlarla uyumlu olmadığından bu durum sorun yaratabilir. Bu sorunu çözmek için createView()
işlevini isteğe bağlı usage
üyesiyle çağırmak, kaynak dokudaki kullanım işaretlerinin seçilen görüntü biçimiyle uyumlu alt kümesini açıkça belirtmenize olanak tanır.
Bu değişiklik, önceden doğrulama yapılmasına ve görünümün nasıl kullanıldığı üzerinde daha ayrıntılı kontrol sahibi olmaya olanak tanır. Ayrıca, kullanım işaretlerinin görüntü oluşturmada ortak parametreler olduğu diğer grafik API'leriyle uyumlu olup 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ı dokuların harmanlanması
32 bit kayan noktalı dokular, HDR oluşturma işleminde çok çeşitli renk değerlerini korumak ve renk şeritleri kusurlarını önlemek için gereklidir. Örneğin, bilimsel görselleştirmede.
Yeni "float32-blendable"
GPU özelliği, "r32float"
, "rg32float"
ve "rgba32float"
biçimlerine sahip GPU dokularının karıştırılmasını sağlar. Bu özellikli bir GPU cihazı istediğinizde artık float32 biçiminde herhangi bir ek ile harmanlama kullanan bir oluşturma ardışık düzeni oluşturabilirsiniz.
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
nesnelerini alan kitaplıkların fiziksel GPU hakkındaki bilgilere erişmesi önemlidir. Bunun nedeni, GPU mimarisine göre optimizasyon yapmaları veya geçici çözümler uygulamalarının gerekmesidir. Bu bilgilere GPUAdapter
nesnesi aracılığıyla erişilebilir ancak yalnızca GPUDevice
'ten doğrudan alınamaz. Bu, kullanıcıların GPUDevice
ile birlikte ek bilgi sağlamasını gerektirebileceğinden sakıncalı olabilir.
Bu sorunu gidermek için GPUAdapterInfo
artık GPUDevice
adapterInfo
özelliği aracılığıyla gösteriliyor. Bunlar mevcut GPUAdapter
info
özelliğine benzer.
Aşağıdaki snippet'e, chromestatus girişine ve 376600838 numaralı soruna bakın.
function optimizeForGpuDevice(device) {
if (device.adapterInfo.vendor === "amd") {
// Use AMD-specific optimizations.
} else if (device.adapterInfo.architecture.includes("turing")) {
// Optimize for NVIDIA Turing architecture.
}
}
Tuval bağlamını geçersiz biçimle yapılandırırken JavaScript hatası oluşuyor
Daha önce, GPU tuval bağlamının configure()
yöntemiyle geçersiz bir doku biçimi kullanmak GPU doğrulama hatasına neden oluyordu. Bu, JavaScript TypeError
atacak şekilde değiştirildi. Bu sayede, GPU kanvası bağlamı yanlış yapılandırılmış olmasına rağmen getCurrentTexture()
'in geçerli bir GPU dokusu döndürdüğü senaryolar önlenir. Daha fazla bilgiyi 372837859 numaralı sorunda bulabilirsiniz.
Dokularda filtreleme örnekleyicisi kısıtlamaları
Daha önce, filtreleme örnekleri içeren "sint"
, "uint"
ve "depth"
biçimli dokulara izin veriliyordu. Artık filtreleme örnekleyicisi ile "sint"
veya "uint"
biçimli bir doku kullanılmasına doğru şekilde izin verilmiyor. Gelecekte izin verilmeyeceği için şu anda "depth"
filtreleme örnekleyicisi içeren bir doku" kullanırsanız uyarı gösterildiğini unutmayın. 376497143 numaralı soruna bakın.
Bu kısıtlamalar, filtreleme yapmayan bir örnekleyiciyle derinlik dokusu kullanılması durumunda bağlama grubu düzenlerinin manuel olarak oluşturulması gerektiği anlamına gelir. Bunun nedeni, "otomatik" olarak oluşturulan bağlama grubu düzenlerinin henüz bu kombinasyonu desteklememesidir. 4952 numaralı spesifikasyon sorunu, gelecekte bu sınırlamayı gidermek için üzerinde çalışılan bir öneri içerir.
Genişletilmiş alt grup denemeleri
Başlangıçta Chrome 131'de sona ereceği planlanan alt grup denemesi, Chrome 133'e kadar uzatıldı ve 16 Nisan 2025'te sona erecek. İlk kaynak denemesi performansa odaklanırken önemli taşıma önlemleri içermiyordu. Bu önlemler eklenecek ve mevcut kodda hatalara neden olabilir.
Geliştirici deneyimini iyileştirme
Windows'ta powerPreference
seçeneği requestAdapter()
ile kullanıldığında DevTools'ta artık bir uyarı gösteriliyor. Chrome, iki farklı GPU'yu nasıl kullanacağını ve aralarındaki sonuçları nasıl birleştireceğini öğrendiğinde bu uyarı kaldırılacaktır. 369219127 numaralı soruna bakın.
Çok büyük bir GPU arabelleği oluşturulurken hata mesajında GPU arabelleğinin boyutu gösterilir. 374167798 numaralı soruna bakın.
16 bit normalleştirilmiş doku biçimleri için deneysel destek
16 bit işaretli normalleştirilmiş ve işaretsiz normalleştirilmiş doku biçimleri, standartlaştırma için tartışılmakta olsa da "chromium-experimental-snorm16-texture-formats"
ve "chromium-experimental-unorm16-texture-formats"
GPU özellikleriyle birlikte deneysel olarak kullanılabilir.
Bu özellikler, COPY_SRC
, COPY_DST
, TEXTURE_BINDING
, RENDER_ATTACHMENT
kullanımları, çok örnekleme ve çözümleme özellikleriyle 16 bit normalleştirilmiş doku biçimleri için destek ekler. Diğer biçimler "r16unorm"
, "rg16unorm"
, "rgba16unorm"
, "r16snorm"
, "rg16snorm"
ve "rgba16snorm"
'dir.
Bu deneysel özellikler standart hale gelene kadar, Chrome'da kullanılabilmesi için chrome://flags/#enable-unsafe-webgpu
adresinde "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...
Şafak güncellemeleri
wgpu::Adapter
ve wgpu::Device
'deki EnumerateFeatures(FeatureName * features)
yöntemleri kullanımdan kaldırılarak yerine GetFeatures(SupportedFeatures * features)
getirilmiştir. 368672123 numaralı soruna bakın.
webgpu.h C API'sinde tüm char const *
, bir görünümü UTF-8 kodlamalı bir dize olarak tanımlayan WGPUStringView
yapısıyla değiştirildi. Bir uzunlukla birlikte dizenin verilerine işaretçi gibi davranır. Bu sayede, bir dizenin kopyasını oluşturmadan dizenin bölümlerini kullanabilirsiniz. 42241188 numaralı soruna 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 132
- Doku görünümü kullanımı
- 32 bit kayan noktalı dokuların harmanlanması
- GPUDevice adapterInfo özelliği
- Tuval bağlamını geçersiz biçimle yapılandırma JavaScript hatası oluşturuyor
- Dokularda filtreleme örnekleyicisi kısıtlamaları
- Genişletilmiş alt grup denemeleri
- Geliştirici deneyimini iyileştirme
- 16 bit normalleştirilmiş doku biçimleri için deneysel destek
- Dawn güncellemeleri
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ölge durumuyla ilgili 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