WebGPU'da Yenilikler (Chrome 135)

François Beaufort
François Beaufort

Yayınlanma tarihi: 26 Mart 2025

Boş bağlama grubu düzeniyle ardışık düzen oluşturulmasına izin ver

Daha önce, boş bir bağlama grubu düzeni oluşturmak için sıfır bağlama içeren bir bağlama grubu eklemek gerekiyordu ve bu da zahmetliydi. Boş bağlama grubu düzenlerine artık izin verildiği ve ardışık düzen düzeni oluşturulurken bu düzenler yoksayıldığı için bu artık gerekli değildir. Bu, geliştirmeyi kolaylaştırır.

Örneğin, yalnızca bağlama grubu düzenleri 0 ve 2'yi kullanan bir işlem hattı oluşturmak isteyebilirsiniz. Bağlama grubu düzeni 1'i parça verilerine, bağlama grubu düzeni 2'yi ise köşe verilerine atayabilir ve ardından bir parça gölgelendiricisi olmadan oluşturabilirsiniz. 377836524 numaralı sorunu inceleyin.

const bgl0 = myDevice.createBindGroupLayout({ entries: myGlobalEntries });
const bgl1 = myDevice.createBindGroupLayout({ entries: myFragmentEntries });
const bgl2 = myDevice.createBindGroupLayout({ entries: myVertexEntries });

// Create a pipeline layout that will be used to render without a fragment shader.
const myPipelineLayout = myDevice.createPipelineLayout({
  bindGroupLayouts: [bgl0, null, bgl2],
});

Görüntü alanlarının, oluşturma hedefi sınırlarının ötesine geçmesine izin ver

Görüntü alanlarının oluşturma hedefi sınırlarının dışına çıkmasına izin vermek için görüntü alanı doğrulama şartları gevşetildi. Bu özellik, özellikle mevcut görüntü alanının dışına çıkabilecek kullanıcı arayüzü gibi 2D öğeleri çizerken kullanışlıdır. 390162929 numaralı soruna bakın.

const passEncoder = myCommandEncoder.beginRenderPass({
  colorAttachments: [
    {
      view: myColorTexture.createView(),
      loadOp: "clear",
      storeOp: "store",
    },
  ],
});

// Set a viewport that extends past the render target's bounds by 8 pixels
// in all directions.
passEncoder.setViewport(
  /*x=*/ -8,
  /*y=*/ -8,
  /*width=*/ myColorTexture.width + 16,
  /*height=*/ myColorTexture.height + 16,
  /*minDepth=*/ 0,
  /*maxDepth=*/ 1,
);

// Draw geometry and complete the render pass as usual.

Android'de deneysel uyumluluk moduna daha kolay erişim

Artık yalnızca chrome://flags/#enable-unsafe-webgpu işareti, Android'de deneysel WebGPU uyumluluk modu için gereken tüm özellikleri etkinleştiriyor. Bu sayede, featureLevel: "compatibility" seçeneğiyle uyumluluk modunda bir GPUAdapter isteyebilir ve hatta Vulkan desteği olmayan cihazlarda OpenGL ES arka ucuna erişebilirsiniz. Aşağıdaki örneğe bakın ve dawn:389876644 sorununu inceleyin.

// Request a GPUAdapter in compatibility mode.
const adapter = await navigator.gpu.requestAdapter({ featureLevel: "compatibility" });
WebGPU rapor sayfasında, Android cihazda uyumluluk modunda bir GPUAdapter gösteriliyor.
webgpureport.org adresindeki uyumluluk modu bağdaştırıcı bilgileri.

maxInterStageShaderComponents sınırını kaldırma

Daha önce duyurulduğu gibi, maxInterStageShaderComponents sınırı çeşitli faktörler nedeniyle kaldırıldı:

  • maxInterStageShaderVariables ile yedeklilik: Bu sınır, gölgelendirici aşamaları arasında aktarılan veri miktarını kontrol ederek benzer bir amaca hizmet eder.
  • Küçük tutarsızlıklar: İki sınırın hesaplanma şekli arasında küçük farklılıklar olsa da bu farklılıklar önemsizdir ve maxInterStageShaderVariables sınırı içinde etkili bir şekilde yönetilebilir.
  • Basitleştirme: maxInterStageShaderComponents simgesinin kaldırılması, gölgelendirici arayüzünü basitleştirir ve geliştiriciler için karmaşıklığı azaltır. Küçük farklılıklar içeren iki ayrı sınırı yönetmek yerine, daha uygun bir şekilde adlandırılmış ve kapsamlı olan maxInterStageShaderVariables odaklanabilirler.

Kaldırma amacı ve 364338810 numaralı sorunu inceleyin.

Dawn güncellemeleri

Derinlik dokusunu örneklemek için artık filtreleme örnekleyici kullanılamaz. Derinlik dokusunun yalnızca filtreleme yapmayan veya karşılaştırma örnekleyiciyle kullanılabileceğini hatırlatırız. 379788112 numaralı soruna bakın.

WGPURequiredLimits ve WGPUSupportedLimits yapıları WGPULimits olarak düzleştirildi. 374263404 numaralı sorunu inceleyin.

Aşağıdaki yapılar yeniden adlandırıldı. 42240793 numaralı sorunu inceleyin.

  • WGPUImageCopyBuffer, WGPUTexelCopyBufferInfo olarak değiştirilmiştir
  • WGPUImageCopyTexture, WGPUTexelCopyTextureInfo olarak değiştirilmiştir
  • WGPUTextureDataLayout, WGPUTexelCopyBufferLayout olarak değiştirilmiştir

subgroupMinSize ve subgroupMaxSize üyeleri, WGPUAdapterInfo yapısına eklendi. webgpu-headers PR'ye bakın.

Programınızı DAWN_TRACE_FILE_BASE ortam değişkeniyle çalıştırırken Metal'de Dawn API kullanımını izlemek artık mümkün. Bu değişken, daha sonra Xcode'un Metal hata ayıklayıcısına yüklenebilen bir .gputrace dosyası kaydeder. Dawn'da hata ayıklama belgelerine 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

Chrome 139

Chrome 138

Chrome 137

Chrome 136

Chrome 135

Chrome 134

Chrome 133

Chrome 132

Chrome 131

Chrome 130

Chrome 129

Chrome 128

Chrome 127

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