يوضّح هذا المستند الأسباب التي قد تجعل 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 في Headless Chrome للاطّلاع على مزيد من المعلومات.تمّت إضافة أجهزة وحدة معالجة الرسومات إلى القائمة المحظورة بشكل خاص. إذا ظهرت لك الرسالة "تم إيقاف WebGPU من خلال قائمة الحظر أو سطر الأوامر" في
chrome://gpu
، يمكنك إيقاف قائمة حظر محولات WebGPU من خلال تفعيل العلامةchrome://flags/#enable-unsafe-webgpu
وإعادة تشغيل Chrome.لا يتوفّر محوِّل وحدة معالجة الرسومات مطابق للخيارات التي تم تمريرها في
requestAdapter()
. جرِّب الاتصال برقمrequestAdapter()
باستخدام خيارات مختلفة.تتطلّب WebGPU وحدة معالجة رسومات (إما أجهزة أو محاكاة برامج). يمكنك التحقّق مما إذا كان Chrome يرصد وحدة معالجة رسومات من خلال الانتقال إلى
chrome://gpu
.تعطّلت عملية وحدة معالجة الرسومات عدة مرات. يمكنك إعادة تحميل الصفحة أو إعادة تشغيل Chrome. اطّلِع على أفضل الممارسات المتعلّقة بفقدان جهاز WebGPU للتعرّف على مزيد من المعلومات.
WebGPU أبطأ من WebGL.
افتح
chrome://gpu
وتأكَّد من أنّه يمكنك قراءة "WebGPU: تسريع الأجهزة". إذا ظهرت لك الرسالة "WebGPU: برنامج فقط، ميزة تسريع الأجهزة غير متاحة"، قد تحتاج إلى تحديث برامج تشغيل وحدة معالجة الرسومات.قد لا تستفيد بشكل كامل من تحسينات WebGPU الفريدة عند ترجمة مفاهيم WebGL مباشرةً إلى WebGPU. اطّلِع على المقالة من WebGL إلى WebGPU للتعرّف على بعض الاختلافات بينهما.
القيود الخاصة بنظام التشغيل Windows
يُرجى مراعاة القيود التالية عند استخدام WebGPU على أجهزة Windows:
لا يتيح Chrome استخدام عدة محولات لوحدات معالجة الرسومات في الوقت نفسه. يُرجى الاطّلاع على issue chromium:329211593.
يستخدم Chrome دائمًا محوِّل وحدة معالجة الرسومات نفسه الذي تم تخصيصه لأعمال Chrome الأخرى، والذي يكون عادةً بطاقة الرسومات المدمجة في أجهزة الكمبيوتر المحمول، وذلك بسبب جانب استخدام الطاقة (مثل توفير الطاقة). يعني ذلك أنّ خيار
powerPreference
ليس له أي تأثير عند الاتصال بالرقمrequestAdapter()
.