WebGPU'daki (Chrome 126) Yenilikler

François Beaufort
François Beaufort

maxTextureArrayLayers sınırını artır

Bir 2D dokunun derinliği veya katman sayısı için izin verilen maksimum değer varsayılan olarak 256'dır. Desteklendiğinde artık maxTextureArrayLayers sınırını kullanarak 2048'e kadar istekte bulunabilirsiniz. Aşağıdaki örneği inceleyin ve 42241514 numaralı sorunu inceleyin.

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

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

Hızlı yol optimizasyonu, arabelleğin belleğinin ana makinenin görünür olmasını ve üzerinde beklemede olan GPU işlemi olmamasını gerektirir. 42242084 numaralı sorunu inceleyin.

Gölgelendirici derleme süresi 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 makine kodu 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, bunu kullanan yeniden tasarlanmış arka uçlarla birlikte yeni bir ara temsil (IR) kullanıma sunuluyor. Bu değişikliğin amacı, gölgelendirici derlemenin daha hızlı bir şekilde derlenmesidir.

İşleme ardışık düzeni oluşturma işlemi, WGSL&#39;nin Ton derleyicisi ile SPIR-V&#39;ye ve ardından Sürücü derleyicisi ile ISA&#39;ya dönüştürülmesini içerir.
ChromeOS'te ardışık düzen oluşturma işlemi gerçekleştirin.

Halihazırda Android'den erişilebilen bu iyileştirmeler, kademeli olarak Vulkan arka ucuna sahip WebGPU'yu destekleyen ChromeOS cihazları da kapsayacak şekilde genişletilmektedir. 42250751 numaralı sorunu inceleyin.

Gönderilen komut arabellekleri benzersiz olmalıdır

submit() yöntemiyle GPUQueue'ya gönderilen her 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.

Dawn ile ilgili güncellemeler

C++ sarmalayıcısı webgpu_cpp.h artık yalnızca başlık niteliğindedir. Bu sayede kullanımı basitleştirir ve alternatif C++ sarmalayıcılarıyla daha kolay entegrasyon sağlar. 40195122 numaralı sorunu inceleyin.

webgpu.h C API'si artık Swapchain nesneleri kavramını göstermemektedir. Bu değişiklik, JavaScript API'si ile yakından uyum sağlamak amacıyla yapılmıştır. Dahili yapılandırma artık yeni wgpu::Surface nesnesinin Configure() yöntemiyle yapılıyor. Bu yöntem, ileride başka değişiklikler de yapılabilir. WebGPU ile uygulama derleme dokümanındaki bir örneğe göz atın. 42241264 numaralı sorunu inceleyin.

Kayıtların kapsamlı listesine göz atın.

WebGPU'daki Yenilikler

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

Chrome 126

Chrome 125

Chrome 124

Chrome 123

Chrome 122

Chrome 121

Chrome 120

Chrome 119

Chrome 118

Chrome 117

Chrome 116

Chrome 115

Chrome 114

Chrome 113