Bu dokümanda, WebGPU'nun neden Chrome tarayıcıda çalışamaması veya beklendiği gibi çalışmayabileceği açıklanmakta ve mümkün olduğunda sorunları çözmek için net adımlar yer almaktadır.
navigator.gpu tanımsız
Aşağıdaki örnekte, navigator
içinde gpu
kullanılamadığında karşılaşabileceğiniz bir JavaScript hatası gösterilmektedir:
const adapter = await navigator.gpu.requestAdapter();
cancel Uncaught TypeError: Cannot read properties of undefined (reading 'requestAdapter')
Bunun nedeni aşağıdakilerden biri olabilir. İlgili sıralamaya göre sıralananlara göz atın:
WebGPU; ChromeOS, macOS, Windows ve Android cihazlarda Chrome 121 veya sonraki sürümlerinde Chrome 113 veya sonraki sürümlerin kullanılmasını gerektirir. Sürümünüzü
chrome://version
adresinden kontrol edin ve gerekirse güncelleyin.WebGPU yalnızca güvenli bağlamlarda erişilebilir. Kodunuzu güvenli olmayan bir protokol (örneğin,
http:
,file:
) üzerinden sunuyorsanız güvenlihttps:
protokolünü kullanın veya web uygulamanızı geliştirirken aşağıdaki yöntemlerden birini kullanarak bu sorunu giderin:Kodunuzu
http://localhost
veyahttp://127.0.0.1
üzerinde şu komutlardan biriyle yerel olarak sunun:npx http-server
veyapython3 -m http.server
.Kaynağı "Güvenli olarak kabul edilen güvenli olmayan kaynaklar"a ekleme
chrome://flags/#unsafely-treat-insecure-origin-as-secure
listesini yapıp Chrome'u yeniden başlatın.Klasörünüzü sahte bir sertifikayla https üzerinden sunmak için Node.js'yi yükleyin ve
npx servez --ssl
komutunu çalıştırın. Chrome'da uyarı almaya devam edeceksiniz. "Gelişmiş"i tıklayarak atlayabilirsiniz. ardından "Devam et..." seçeneğini tıklayın.ngrok ile yerel web sunucunuzu internete sunun.
GPU adaptörü boş
Aşağıda, requestAdapter()
çağrısından aldığınız bağdaştırıcının null olması durumunda karşılaşabileceğiniz bir JavaScript hatasının örneği verilmiştir:
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();
cancel Uncaught TypeError: Cannot read properties of undefined (reading requestDevice)
Bunun nedeni aşağıdakilerden biri olabilir. İlgili sıralamaya göre sıralananlara göz atın:
WebGPU, "Kullanılabilir olduğunda grafik hızlandırmayı kullan" ayarını kapattığında devre dışı bırakılır
chrome://settings/system
içinde. Bu ayarın kapalı olup olmadığını kontrol edin ve tekrar açınWebGPU henüz bu platformda desteklenmiyor.
chrome://flags/#enable-unsafe-webgpu
işaretini etkinleştirip Chrome'u yeniden başlatabilirsiniz. Linux deneysel desteği içinchrome://flags/#enable-vulkan
işaretini de etkinleştirmeniz gerekir. Daha fazla bilgi edinmek için Gözetimsiz Chrome'da WebGPU desteği sayfasına göz atın.GPU donanımı özel olarak engellenenler listesine eklendi. "WebGPU, engellenenler listesi veya komut satırı aracılığıyla devre dışı bırakıldı" mesajını görüyorsanız
chrome://gpu
içinde,chrome://flags/#enable-unsafe-webgpu
işaretini etkinleştirip Chrome'u yeniden başlatarak WebGPU bağdaştırıcıları engellenenler listesini devre dışı bırakabilirsiniz.requestAdapter()
içinde iletilen seçenekler için eşleşen GPU adaptörü yok. Farklı seçeneklerlerequestAdapter()
numaralı telefonu aramayı deneyin.WebGPU, GPU gerektirir (donanım veya yazılım emülasyonu).
chrome://gpu
adresini ziyaret ederek Chrome'un GPU algılayıp algılamadığını kontrol edebilirsiniz.
WebGPU, WebGL'den daha yavaştır
chrome://gpu
uygulamasını açın ve "WebGPU: Donanım hızlandırmalı" yazısını okuduğunuzdan emin olun. "WebGPU: Yalnızca yazılım, donanım hızlandırma kullanılamıyor" mesajını görürseniz GPU sürücülerinizi güncellemeniz gerekebilir.WebGL kavramlarını doğrudan WebGPU'ya çevirmek, WebGPU'nun benzersiz optimizasyonlarından tam anlamıyla yararlanmıyor olabilir. Bazı farkları öğrenmek için WebGPU'dan WebGPU'ya başlıklı makaleye bakın.
Windows'a özgü sınırlamalar
Windows cihazlarda WebGPU kullanırken aşağıdaki sınırlamalara dikkat edin:
Chrome, aynı anda birden çok GPU adaptörünün kullanılmasını desteklemez. Chromium:329211593 hatası konusuna bakın.
Chrome her zaman diğer Chrome iş yükleri için ayrılan GPU adaptörünü kullanır. Güç kullanımından (ör. güç tasarrufu) dolayı dizüstü bilgisayarlar için genellikle entegre grafik kartı kullanılır. Bu durumda,
requestAdapter()
çağrılırkenpowerPreference
seçeneğinin herhangi bir etkisi yoktur.