Yang Baru di WebGPU (Chrome 136)

François Beaufort
François Beaufort

Dipublikasikan: 23 April 2025

Atribut GPUAdapterInfo isFallbackAdapter

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

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 pengganti, isFallbackAdapter saat ini selalu salah di perangkat pengguna. Kami sedang menyelidiki apakah atribut GPUAdapter isFallbackAdapter dapat dihentikan 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 antara pohon sintaksis abstrak (AST) Tint dan penulis backend HLSL, akan membuat compiler lebih efisien dan dapat dipertahankan, yang pada akhirnya akan menguntungkan developer dan pengguna. Pengujian awal menunjukkan bahwa Tint versi baru hingga 10 kali lebih cepat saat menerjemahkan shader WGSL Unity ke HLSL.

Diagram alur menunjukkan proses mengonversi 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 progresif 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.

Ruang
Pengguna memilih menu konteks "Simpan Gambar Sebagai…".

Menghapus batasan mode kompatibilitas

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

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

Adaptor core-defaulting selalu mendukung fitur "core-features-and-limits" dan fitur ini otomatis diaktifkan di GPUDevice yang dibuat dari adaptor tersebut. Untuk adaptor compatibility-defaulting, fitur "core-features-and-limits" mungkin didukung dan dapat diminta di GPUDevice yang dibuat dari adaptor tersebut. 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 eksperimental featureLevel dan isCompatibilityMode telah dihapus dan diganti dengan fitur "core-features-and-limits". Lihat masalah 395855516.

Info terbaru Dawn

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

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

Hal ini hanya mencakup beberapa sorotan utama. Lihat daftar commit lengkap.

Yang Baru di WebGPU

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

Chrome 147-148

Chrome 146

Chrome 145

Chrome 144

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