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şturmaya izin verme

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

Örneğin, yalnızca 0 ve 2 numaralı bağlama grubu düzenlerini kullanan bir ardışık düzen oluşturmak isteyebilirsiniz. 1. bağlama grubu düzenini parça verilerine, 2. bağlama grubu düzenini ise köşe verilerine atayabilir ve ardından bir parça gölgelendirici olmadan oluşturma işlemi yapabilirsiniz. 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üleme alanlarının, oluşturma hedefi sınırlarının ötesine geçmesine izin verme

Görüntü alanı doğrulama şartları, görüntü alanlarının oluşturma hedefi sınırlarının ötesine geçmesine izin verecek şekilde gevşetildi. Bu, özellikle mevcut görüntü alanının dışına taşabilecek kullanıcı arayüzü gibi 2D öğeler ç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

chrome://flags/#enable-unsafe-webgpu işareti artık Android'de deneysel WebGPU uyumluluk modu için gereken tüm özellikleri etkinleştiriyor. Böylece, 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 kimlikli 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 bağdaştırıcısı bilgileri

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

Daha önce duyurulduğu gibi, maxInterStageShaderComponents sınırı aşağıdaki faktörlerin bir kombinasyonu nedeniyle kaldırıldı:

  • maxInterStageShaderVariables ile yedeklilik: Bu sınır, gölgelendirici aşamaları arasında aktarılan veri miktarını kontrol ederek zaten benzer bir amaca hizmet etmektedir.
  • Küçük tutarsızlıklar: İki sınırın hesaplanmasında küçük farklılıklar olsa da bu farklılıklar küçüktür ve maxInterStageShaderVariables sınırı dahilinde etkili bir şekilde yönetilebilir.
  • Basitleştirme: maxInterStageShaderComponents kaldırılarak gölgelendirici arayüzü basitleştirilir ve geliştiriciler için karmaşıklık azaltılır. Küçük farklılıkları olan iki ayrı sınırı yönetmek yerine, daha uygun şekilde adlandırılmış ve kapsamlı maxInterStageShaderVariables'ye odaklanabilirler.

Kaldırma amacı ve 364338810 numaralı sorun hakkında bilgi edinin.

Şafak güncellemeleri

Derinlik dokusu örneklemek için filtreleme örnekleyicisi artık kullanılamaz. Derinlik dokusunun yalnızca filtreleme içermeyen veya karşılaştırma örnekleyicisiyle kullanılabileceğini hatırlatmak isteriz. 379788112 numaralı soruna bakın.

WGPURequiredLimits ve WGPUSupportedLimits yapıları WGPULimits olarak düzleştirildi. 374263404 numaralı sorun konusuna bakın.

Aşağıdaki yapıların adları değiştirildi. 42240793 numaralı sorun için bkz.

  • 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.

Artık programınızı DAWN_TRACE_FILE_BASE ortam değişkeniyle çalıştırarak Metal'de Dawn API kullanımını izleyebilirsiniz. Bu değişken, daha sonra XCode'un Metal hata ayıklayıcısına yüklenebilecek bir .gputrace dosyası kaydeder. Debugging Dawn belgelerini inceleyin.

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 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