Yang Baru di WebGPU (Chrome 136)

François Beaufort
François Beaufort

Dipublikasikan: 23 April 2025

Atribut isFallbackAdapter GPUAdapterInfo

Atribut boolean isFallbackAdapter GPUAdapterInfo menunjukkan apakah GPUAdapter memiliki batasan performa yang signifikan dengan mengorbankan kompatibilitas yang lebih luas, perilaku yang lebih dapat diprediksi, atau privasi yang lebih baik. Penambahan ini diperlukan karena library yang menggunakan objek GPUDevice yang disediakan pengguna tidak dapat mengakses informasi ini melalui atribut adapterInfo di GPUDevice. Lihat contoh berikut dan masalah 403172841.

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

if (adapter?.info.isFallbackAdapter) {
  // The returned adapter is a software-backed fallback adapter, which
  // may have significantly lower performance and fewer features.
}

Karena Chrome belum mengirimkan dukungan untuk adaptor penggantian, isFallbackAdapter saat ini selalu salah di perangkat pengguna. Kami sedang menyelidiki apakah atribut isFallbackAdapter GPUAdapter dapat dihentikan penggunaannya dan dihapus. Lihat niat untuk mengirim.

Peningkatan waktu kompilasi shader di D3D12

Tim Chrome terus meningkatkan Tint, compiler bahasa shader WebGPU, dengan menambahkan representasi perantara (IR) untuk perangkat yang mendukung WebGPU dengan backend D3D12. IR ini, yang diposisikan di antara hierarki sintaksis abstrak (AST) Tint dan penulis backend HLSL, akan membuat compiler lebih efisien dan dapat dikelola, yang pada akhirnya menguntungkan developer dan pengguna. Pengujian awal menunjukkan bahwa Tint versi baru hingga 10 kali lebih cepat saat menerjemahkan shader WGSL Unity ke HLSL.

Diagram alir menunjukkan proses konversi kode shader WGSL menjadi petunjuk GPU tingkat rendah.
Pembuatan pipeline render di Windows.

Peningkatan ini—yang sudah dapat diakses di Android, ChromeOS, dan macOS—secara bertahap diperluas ke perangkat Windows yang mendukung WebGPU dengan backend D3D12. Lihat masalah 42251045.

Menyimpan dan menyalin gambar kanvas

Pengguna Chrome kini dapat mengklik kanan kanvas WebGPU dan mengakses opsi menu konteks Simpan Gambar Sebagai… atau Salin Gambar. Lihat masalah 40902474.

[Panduan
Pengguna memilih menu konteks "Save Image As…".

Pembatasan mode kompatibilitas Lift

Fitur "core-features-and-limits" eksperimental, jika tersedia di GPUDevice, akan menghapus semua batasan mode kompatibilitas (fitur dan batas) saat tanda chrome://flags/#enable-unsafe-webgpu diaktifkan. Lihat masalah 395855517.

Meminta GPUAdapter dengan opsi featureLevel: "compatibility" akan memberi tahu browser untuk memilih mode kompatibilitas WebGPU eksperimental. Jika berhasil, adaptor yang dihasilkan adalah "default kompatibilitas". Jika tidak, nilainya adalah "core-defaulting", yang sama dengan menggunakan opsi featureLevel: "core". Selain itu, memanggil requestDevice() tanpa requiredFeatures dan requiredLimits akan meminta GPUDevice dengan kemampuan default GPUAdapter.

Adaptor default core selalu mendukung fitur "core-features-and-limits" dan diaktifkan secara otomatis di GPUDevices yang dibuat darinya. Untuk adaptor yang menetapkan kompatibilitas secara default, fitur "core-features-and-limits" mungkin didukung dan dapat diminta di GPUDevices yang dibuat darinya. Kedua jenis adaptor juga dapat mendukung fitur seperti "float32-blendable", yang bersifat opsional dalam mode inti dan kompatibilitas.

Contoh berikut adalah untuk aplikasi yang memerlukan "float32-blendable" dan mendukung penggunaan fitur inti jika tersedia, tetapi hanya menggunakan fitur kompatibilitas jika fitur inti tidak tersedia.

const adapter = await navigator.gpu.requestAdapter({ featureLevel: "compatibility" });

if (!adapter || !adapter.features.has("float32-blendable")) {
  throw new Error("32-bit float textures blending support is not available");
}

const requiredFeatures = [];
if (adapter.features.has("core-features-and-limits")) {
  requiredFeatures.push("core-features-and-limits");
}

const device = await adapter.requestDevice({ requiredFeatures });

if (!device.features.has("core-features-and-limits")) {
  // Compatibility mode restrictions validation rules will apply.
}

Atribut GPUAdapter featureLevel dan isCompatibilityMode eksperimental telah dihapus dan digantikan dengan fitur "core-features-and-limits". Lihat masalah 395855516.

Update fajar

Enum status callback InstanceDropped telah diganti namanya menjadi CallbackCancelled untuk memperjelas bahwa callback dibatalkan, tetapi pemrosesan latar belakang yang terkait dengan peristiwa, seperti kompilasi pipeline, mungkin masih berjalan. Nama baru ini lebih umum berlaku, jika mekanisme pembatalan lain ditambahkan nanti. Lihat masalah 520.

Enum wgpu::PopErrorScopeStatus::EmptyStack yang menunjukkan bahwa stack cakupan error tidak dapat dikeluarkan telah diganti namanya menjadi wgpu::PopErrorScopeStatus::Error (yang juga lebih umum berlaku). Callback kini juga menyertakan pesan penjelasan error yang sesuai untuk membantu proses debug. Lihat masalah 369.

Bagian ini hanya membahas beberapa sorotan utama. Lihat daftar commit yang lengkap.

Yang Baru di WebGPU

Daftar semua yang telah dibahas dalam seri Yang Baru di WebGPU.

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