يوضّح هذا المستند الأسباب التي قد تجعل WebGPU غير قابلة للتشغيل أو لا تعمل على النحو المتوقَّع في متصفِّح Chrome، مع خطوات واضحة لحل المشاكل حيثما أمكن.
navigator.gpu غير محدد
يعرض المثال التالي خطأ JavaScript قد يظهر لك عند عدم توفّر gpu
في navigator
:
const adapter = await navigator.gpu.requestAdapter();
cancel Uncaught TypeError: Cannot read properties of undefined (reading 'requestAdapter')
وقد يرجع ذلك إلى أحد الأسباب التالية. تحقق من هذه بالترتيب المحدد:
تتطلّب WebGPU توفُّر الإصدار 113 من Chrome أو الإصدارات الأحدث على أنظمة التشغيل ChromeOS وmacOS وWindows وChrome 121 أو الإصدارات الأحدث على Android. تحقق من الإصدار على
chrome://version
وحدِّثه إذا لزم الأمر.لا يمكن الوصول إلى WebGPU إلا من أجل تأمين السياقات. إذا كنت تعرض رمز تطبيقك باستخدام بروتوكول غير آمن (مثل
http:
أوfile:
)، يمكنك استخدام بروتوكولhttps:
الآمن أو حلّ هذه المشكلة أثناء تطوير تطبيق الويب بإحدى الطرق التالية:يمكنك عرض الرمز محليًا على
http://localhost
أوhttp://127.0.0.1
باستخدام أي من الأمرَين التاليَين:npx http-server
أوpython3 -m http.server
.إضافة المصدر إلى "المصادر غير الآمنة التي يتم التعامل معها على أنّها آمنة" قائمة
chrome://flags/#unsafely-treat-insecure-origin-as-secure
وإعادة تشغيل Chrome.ثبِّت Node.js وشغِّل
npx servez --ssl
لعرض المجلد عبر https باستخدام شهادة مزيفة. سيستمر ظهور تحذير في Chrome يمكنك تجاوزه بالنقر على "إعدادات متقدّمة". ثم "متابعة إلى...".اعرض خادم الويب المحلي على الإنترنت باستخدام ngrok.
محوّل وحدة معالجة الرسومات فارغ
في ما يلي مثال على خطأ JavaScript الذي قد يظهر لك عندما يكون المحوِّل الذي تحصل عليه من استدعاء الدالة requestAdapter()
فارغًا:
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();
cancel Uncaught TypeError: Cannot read properties of undefined (reading requestDevice)
يحدث ذلك لأحد الأسباب التالية. تحقق من هذه بالترتيب المحدد:
يتم إيقاف WebGPU عندما يوقف المستخدم خيار "استخدام تسريع الرسومات عند توفّره". في
chrome://settings/system
. تحقّق ممّا إذا كان هذا الإعداد غير مفعَّل ثم أعِد تفعيله.إنّ وحدة معالجة الرسومات WebGPU غير متاحة على هذا النظام الأساسي بعد. يمكنك تفعيل العلامة
chrome://flags/#enable-unsafe-webgpu
وإعادة تشغيل Chrome. للحصول على الدعم التجريبي لنظام التشغيل Linux، عليك أيضًا تفعيل العلامةchrome://flags/#enable-vulkan
. ويمكنك الاطّلاع على التوافق مع WebGPU في Chrome بلا واجهة مستخدم رسومية لمزيد من المعلومات.تمّت إضافة أجهزة وحدة معالجة الرسومات إلى القائمة المحظورة بشكل خاص. في حال ظهور الرسالة "تم إيقاف WebGPU من خلال القائمة المحظورة أو سطر الأوامر". في
chrome://gpu
، يمكنك إيقاف القائمة المحظورة لمحوّلات WebGPU من خلال تفعيل العلامةchrome://flags/#enable-unsafe-webgpu
وإعادة تشغيل Chrome.ما مِن محوّل وحدة معالجة رسومات مطابِق للخيارات التي تم ضبطها في
requestAdapter()
. حاوِل الاتصال بالرقمrequestAdapter()
مع تقديم خيارات مختلفة.تتطلب واجهة برمجة التطبيقات WebGPU وحدة معالجة رسومات (إما أجهزة أو برامج في وضع المحاكاة). يمكنك التحقّق مما إذا رصد Chrome وحدة معالجة رسومات من خلال الانتقال إلى
chrome://gpu
.
WebGPU أبطأ من WebGL.
افتح
chrome://gpu
وتأكَّد من أنّه يمكنك قراءة النص "WebGPU: Accelerated Accelerated" (تسريع الأجهزة). في حال قراءة "WebGPU: البرامج فقط، تسريع الأجهزة غير متاح"، قد تحتاج إلى تحديث برامج تشغيل وحدة معالجة الرسومات.قد لا تستفيد ترجمة مفاهيم WebGL مباشرةً إلى WebGPU من التحسينات الفريدة لـ WebGPU. يمكنك الانتقال إلى الصفحة من WebGL إلى WebGPU للتعرف على بعض الاختلافات.
القيود الخاصة بنظام التشغيل Windows
انتبِه إلى القيود التالية عند استخدام WebGPU على أجهزة Windows:
لا يتيح Chrome استخدام عدة محوّلات لوحدة معالجة رسومات في آنٍ واحد. يُرجى الاطّلاع على issue chromium:329211593.
يستخدم Chrome دائمًا محول وحدة معالجة الرسومات نفسه الذي تم تخصيصه لأعباء العمل الأخرى في Chrome، والذي يمثل بشكل عام بطاقة الرسومات المدمجة لأجهزة الكمبيوتر المحمولة، وذلك بسبب جانب استخدام الطاقة (أي: توفير الطاقة). وهذا يعني أنّ الخيار
powerPreference
لن يحدث أي تأثير عند الاتصال بالرقمrequestAdapter()
.