Dokumen ini menjelaskan alasan WebGPU mungkin tidak dapat dioperasikan atau tidak berfungsi seperti yang diharapkan di browser Chrome, disertai langkah-langkah yang jelas untuk menyelesaikan masalah jika memungkinkan.
navigator.gpu tidak ditentukan
Contoh berikut menunjukkan error JavaScript yang mungkin Anda dapatkan saat gpu
tidak tersedia di navigator
:
const adapter = await navigator.gpu.requestAdapter();
cancel Uncaught TypeError: Cannot read properties of undefined (reading 'requestAdapter')
Hal ini mungkin terjadi karena salah satu alasan berikut. Lihat yang berikut dalam urutan spesifik:
WebGPU memerlukan Chrome 113 atau yang lebih baru di ChromeOS, macOS, Windows, dan Chrome 121 atau yang lebih baru di Android. Periksa versi Anda di
chrome://version
dan update jika perlu.WebGPU hanya dapat diakses untuk mengamankan konteks. Jika Anda menyajikan kode melalui protokol yang tidak aman (misalnya,
http:
,file:
), gunakan protokolhttps:
yang aman atau atasi hal ini selama pengembangan aplikasi web Anda dengan salah satu cara berikut:Tayangkan kode Anda secara lokal di
http://localhost
atauhttp://127.0.0.1
dengan salah satu perintah berikut:npx http-server
ataupython3 -m http.server
.Menambahkan origin ke "Insecure origin diperlakukan as secure" (Asal tidak aman yang diperlakukan sebagai aman) daftar
chrome://flags/#unsafely-treat-insecure-origin-as-secure
dan mulai ulang Chrome.Instal Node.js dan jalankan
npx servez --ssl
untuk menyalurkan folder Anda melalui HTTPS dengan sertifikat palsu. Anda akan tetap mendapatkan peringatan di Chrome yang dapat diabaikan dengan mengklik "Lanjutan" lalu "Lanjutkan ke...".Ekspos server web lokal Anda ke Internet dengan ngrok.
Adaptor GPU bernilai null
Berikut adalah contoh error JavaScript yang mungkin Anda dapatkan saat adaptor yang Anda dapatkan dari memanggil requestAdapter()
adalah null:
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();
cancel Uncaught TypeError: Cannot read properties of undefined (reading requestDevice)
Hal ini terjadi karena salah satu alasan berikut. Lihat yang berikut dalam urutan spesifik:
WebGPU dinonaktifkan saat pengguna menonaktifkan "Gunakan akselerasi grafis jika tersedia" di
chrome://settings/system
. Periksa apakah setelan ini dinonaktifkan lalu aktifkan kembaliWebGPU belum didukung pada platform ini. Anda dapat mengaktifkan tanda
chrome://flags/#enable-unsafe-webgpu
dan memulai ulang Chrome. Untuk dukungan eksperimental Linux, Anda juga harus mengaktifkan tandachrome://flags/#enable-vulkan
. Lihat dukungan WebGPU di Chrome Headless untuk mempelajari lebih lanjut.Hardware GPU telah masuk daftar yang tidak diizinkan. Jika Anda melihat pesan "WebGPU telah dinonaktifkan melalui daftar yang tidak diizinkan atau command line" di
chrome://gpu
, Anda dapat menonaktifkan daftar adaptor WebGPU yang tidak diizinkan dengan mengaktifkan tandachrome://flags/#enable-unsafe-webgpu
dan memulai ulang Chrome.Tidak ada adaptor GPU yang cocok untuk opsi yang diteruskan dalam
requestAdapter()
. Coba panggilrequestAdapter()
dengan opsi yang berbeda.WebGPU memerlukan GPU (baik yang diemulasikan hardware maupun software). Anda dapat memeriksa apakah Chrome mendeteksi GPU dengan membuka
chrome://gpu
.
WebGPU lebih lambat daripada WebGL
Buka
chrome://gpu
dan pastikan Anda dapat membaca "WebGPU: Hardware Accelerated". Jika Anda membaca "WebGPU: Software only, hardware acceleration available" (Khusus perangkat lunak, akselerasi hardware tidak tersedia), Anda mungkin perlu mengupdate driver GPU.Menerjemahkan konsep WebGL ke dalam WebGPU secara langsung mungkin tidak memanfaatkan sepenuhnya pengoptimalan unik WebGPU. Lihat Dari WebGL ke WebGPU untuk mempelajari beberapa perbedaannya.
Batasan khusus Windows
Perhatikan batasan-batasan berikut saat menggunakan WebGPU di perangkat Windows:
Chrome tidak mendukung penggunaan beberapa adaptor GPU secara bersamaan. Lihat masalah chromium:329211593.
Chrome selalu menggunakan adaptor GPU yang sama yang telah dialokasikan untuk beban kerja Chrome lainnya, yang untuk laptop umumnya merupakan kartu grafis terintegrasi, karena aspek penggunaan daya (yaitu: hemat daya). Artinya, opsi
powerPreference
tidak akan berpengaruh saat memanggilrequestAdapter()
.