WebGPU: Sorun giderme ipuçları ve düzeltmeleri

François Beaufort
François Beaufort

Yayınlanma tarihi: 7 Şubat 2024, Son güncelleme tarihi: 17 Ekim 2025

Bu belgede, WebGPU'nun Chrome tarayıcıda neden çalışmayabileceği veya beklendiği gibi çalışmadığı açıklanmakta ve mümkün olan durumlarda sorunları çözmek için net adımlar verilmektedir.

Aşağıdaki örnekte, gpu işlevi navigator içinde kullanılamadığında alabileceğ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. Bu adımları şu sırayla uygulayın:

  1. WebGPU, ChromeOS, macOS ve Windows'da Chrome 113 veya sonraki bir sürümü, Android'de ise Chrome 121 veya sonraki bir sürümü gerektirir. Sürümünüzü chrome://version adresinden kontrol edin ve gerekirse güncelleyin.

  2. WebGPU'ya yalnızca güvenli bağlamlarda erişilebilir. Kodunuzu güvenli olmayan bir protokol üzerinden yayınlıyorsanız (örneğin, http:, file:) güvenli https: protokolünü kullanın veya web uygulamanızın geliştirilmesi sırasında bu sorunu aşağıdaki yöntemlerden biriyle çözün:

    • Aşağıdaki komutlardan birini kullanarak kodunuzu http://localhost veya http://127.0.0.1 üzerinde yerel olarak yayınlayın: npx http-server veya python3 -m http.server.

    • Kaynağı chrome://flags/#unsafely-treat-insecure-origin-as-secure "Güvenli olarak kabul edilen güvenli olmayan kaynaklar" listesine ekleyin ve Chrome'u yeniden başlatın.

    • Node.js'yi yükleyin ve sahte sertifikayla klasörünüzü https üzerinden sunmak için npx servez --ssl komutunu çalıştırın. Chrome'da yine bir uyarı alırsınız. Bu uyarıyı "Gelişmiş"i, ardından "Şuraya git..."i tıklayarak atlayabilirsiniz.

    • ngrok ile yerel web sunucunuzu internete açın.

GPU bağdaştırıcısı boş

Aşağıda, requestAdapter() çağrısından aldığınız bağdaştırıcı null olduğunda alabileceğiniz bir JavaScript hatası ö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)

Bu durum aşağıdaki nedenlerden biriyle oluşur. Bu adımları şu sırayla uygulayın:

  1. WebGPU, kullanıcı chrome://settings/system bölümünde "Kullanılabilir olduğunda grafik hızlandırmayı kullan" ayarını kapattığında devre dışı bırakılır. Bu ayarın devre dışı olup olmadığını kontrol edin ve devre dışıysa tekrar etkinleştirin.

  2. WebGPU henüz bu platformda desteklenmiyor. chrome://flags/#enable-unsafe-webgpu işaretini etkinleştirip Chrome'u yeniden başlatabilirsiniz. Linux deneysel desteği için chrome://flags/#enable-vulkan işaretini de etkinleştirmeniz gerekir. Daha fazla bilgi edinmek için Başsız Chrome'da WebGPU desteği başlıklı makaleyi inceleyin.

  3. GPU donanımı özel olarak engellenmiştir. chrome://gpu bölümünde "WebGPU, engelleme listesi veya komut satırı aracılığıyla devre dışı bırakıldı" mesajını görüyorsanız chrome://flags/#enable-unsafe-webgpu işaretini etkinleştirip Chrome'u yeniden başlatarak WebGPU bağdaştırıcıları engelleme listesini devre dışı bırakabilirsiniz. Ayrıca chrome://flags/#ignore-gpu-blocklist işaretini etkinleştirip Chrome'u yeniden başlatarak yerleşik yazılım oluşturma listesini geçersiz kılabilirsiniz.

  4. requestAdapter() içinde iletilen seçenekler için eşleşen bir GPU bağdaştırıcısı yok. requestAdapter() ile farklı seçenekleri kullanarak aramayı deneyin.

  5. WebGPU için GPU (donanım veya yazılımla emüle edilmiş) gerekir. Chrome'un GPU'yu algılayıp algılamadığını chrome://gpu adresini ziyaret ederek kontrol edebilirsiniz.

  6. GPU işlemi birkaç kez kilitlendi. Sayfayı yeniden yükleyebilir veya Chrome'u yeniden başlatabilirsiniz. Daha fazla bilgi edinmek için WebGPU Cihaz Kaybı ile ilgili en iyi uygulamalar başlıklı makaleyi inceleyin.

WebGPU, WebGL'den daha yavaş

  1. chrome://gpu adresini açın ve "WebGPU: Donanım hızlandırmalı" ifadesini okuyabildiğinizden emin olun. "WebGPU: Yalnızca yazılım, donanım hızlandırma kullanılamıyor" mesajını görüyorsanız GPU sürücülerinizi güncellemeniz gerekebilir.

  2. WebGL kavramlarını doğrudan WebGPU'ya çevirmek, WebGPU'nun benzersiz optimizasyonlarından tam olarak yararlanmanızı engelleyebilir. Bazı farklılıkları hakkında bilgi edinmek için WebGL'den WebGPU'ya başlıklı makaleyi inceleyin.

Windows'a özel sınırlamalar

Windows cihazlarda WebGPU'yu kullanırken aşağıdaki sınırlamaları göz önünde bulundurun:

  • Chrome, birden fazla GPU bağdaştırıcısının aynı anda kullanılmasını desteklemez. issue chromium:329211593 adresine bakın.

  • Chrome, diğer Chrome iş yükleri için ayrılan GPU bağdaştırıcısını her zaman kullanır. Dizüstü bilgisayarlarda bu, güç kullanımı (ör. güç tasarrufu) nedeniyle genellikle entegre grafik kartıdır. Bu, requestAdapter() çağrılırken powerPreference seçeneğinin herhangi bir etkisi olmadığı anlamına gelir. chrome://flags/#force-high-performance-gpu işaretini etkinleştirip Chrome'u yeniden başlatarak varsa yüksek performanslı GPU'nun kullanılmasını zorlayabilirsiniz.