WebGPU'daki (Chrome 126) Yenilikler

François Beaufort
François Beaufort

maxTextureArraylayers sınırını artır

2D bir dokunun derinliği veya katman sayısı için izin verilen maksimum değer varsayılan olarak 256'dır. Desteklendiğinde maxTextureArrayLayers sınırı kullanılarak 2048'e kadar istek gönderilebilir. Aşağıdaki örneğe ve 42241514 numaralı soruna bakın.

const adapter = await navigator.gpu.requestAdapter();
if (adapter.limits.maxTextureArrayLayers < 30) {
  // When the desired limit isn't supported, take action to either fall back to
  // a code path that does not require the higher limit or notify the user that
  // their device does not meet minimum requirements.
}

// Request highest limit of max texture array layers attributes.
const device = await adapter.requestDevice({
  requiredLimits: { maxTextureArrayLayers: 2048 }
});

Vulkan arka ucu için arabellek yükleme optimizasyonu

Vulkan arka ucu için GPUQueue'nun writeBuffer() yöntemi çağrılırken artık hızlı bir yol kullanılabilir. Veriler artık doğrudan hedef arabelleğe yazılabilir. Böylece ek kopya ve senkronizasyon ihtiyacı ortadan kalkar. Bu optimizasyon, GPU'ya veri yüklemek için gereken bellek trafiğini azaltır.

Hızlı yol optimizasyonu için arabelleğin belleğinin ana makine tarafından görünür olması ve üzerinde beklemede GPU işlemi olmaması gerekir. 42242084 numaralı sorunu inceleyin.

Gölgelendirici derleme zamanı iyileştirmeleri

Chrome ekibi, WebGPU gölgelendirici dilinin derleyicisi olan Tint'in verimliliğini artırıyor. Tonlama, şu anda bazı platformlarda yoğun kaynak kullanan bir işlem olan makine kodunu oluşturmadan önce gölgelendirici kodunun soyut söz dizimi ağacını (AST) birden çok kez değiştirmektedir. Bunu optimize etmek için, yeni bir ara gösterim (IR) ve bunu kullanan yeniden tasarlanmış arka uçlar kullanıma sunuluyor. Bu değişikliğin amacı, gölgelendirici derleme işlemini hızlandırmaktır.

Ardışık düzen oluşturma işlemi için Tint derleyicisi kullanılarak WGSL&#39;nin SPIR-V&#39;ye ve ardından Sürücü derleyicisi aracılığıyla ISA&#39;ya dönüştürülmesi gerekir.
ChromeOS'te ardışık düzen oluşturma.

Android'den erişilebilen bu iyileştirmeler, Vulkan arka ucuyla WebGPU'yu destekleyen ChromeOS cihazlara kademeli olarak genişletiliyor. 42250751 numaralı sorunu inceleyin.

Gönderilen komut arabellekleri benzersiz olmalıdır

GPUQueue'ye submit() yöntemiyle gönderilen her bir GPUCommandBuffer benzersiz olmalıdır, aksi takdirde doğrulama hatası oluşturulur. Bu bir spesifikasyon hatasıdır. 42241492 numaralı sorunu inceleyin.

const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();

const commandEncoder = device.createCommandEncoder();
const commandBuffer = commandEncoder.finish();

device.queue.submit([commandBuffer, commandBuffer]);
// ⚠️ Validation fails because command buffers are not unique.

Şafak güncellemeleri

C++ sarmalayıcı webgpu_cpp.h artık yalnızca başlıktan yararlanarak kullanımını basitleştiriyor ve alternatif C++ sarmalayıcılarıyla daha kolay entegrasyona olanak tanıyor. 40195122 numaralı sorunu inceleyin.

webgpu.h C API'si artık Swapchain nesneleri kavramını açıklamamaktadır. Bu değişiklik, JavaScript API ile uyumlu bir şekilde yapmak amacıyla yapılmaktadır. Dahili yapılandırma artık yeni wgpu::Surface nesnesinin Configure() yöntemi kullanılarak gerçekleştiriliyor. Bu yöntem ileride değişiklikler yapılabilir. WebGPU ile uygulama oluşturma dokümanındaki bir örneğe göz atın. 42241264 numaralı sorunu inceleyin.

Taahhütlerin kapsamlı listesini inceleyin.

WebGPU'daki Yenilikler

WebGPU'daki Yenilikler serisinde ele alınan her şeyin listesi.

Chrome 127 sürümü

Chrome 126

Chrome 125 sürümü

Chrome 124 sürümü

Chrome 123

Chrome 122

Chrome 121

Chrome 120

Chrome 119 sürümü

Chrome 118 sürümü

Chrome 117 sürümü

Chrome 116

Chrome 115 sürümü

Chrome 114 sürümü

Chrome 113