WebGPU'da Yenilikler (Chrome 135)

François Beaufort
François Beaufort

Yayınlanma tarihi: 26 Mart 2025

Boş bağlama grubu düzeniyle işlem hattı düzeni oluşturmaya izin verme

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 durum rahatsız ediciydi. Boş bağlama grubu düzenlerine artık izin verildiğinden ve işlem hattı düzeni oluşturulurken bu düzenler yoksayıldığından bu artık gerekli değildir. Bu, geliştirme sürecini 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ı soruna bakın.

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 verme

Görüntü alanlarının oluşturma hedefi sınırlarının ötesine geçmesine 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 çıkabilen 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 ve dawn:389876644 numaralı soruna bakın.

// 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 adresinde uyumluluk modu adaptör bilgileri.

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

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 öğesinin 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 ada sahip olan ve kapsamlı maxInterStageShaderVariables odaklanabilirler.

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

Dawn ile ilgili güncellemeler

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ı soruna bakın.

Aşağıdaki yapılar yeniden adlandırıldı. 42240793 numaralı soruna bakın.

  • 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. Debugging Dawn 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 tüm konuların listesi.

Chrome 143

Chrome 142

Chrome 141

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