تاريخ النشر: 7 فبراير 2024، تاريخ آخر تعديل: 17 أكتوبر 2025
يوضّح هذا المستند الأسباب التي قد تؤدي إلى عدم عمل 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، والإصدار 121 من Chrome أو إصدارًا أحدث على 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. يمكنك أيضًا تجاهل قائمة عرض البرامج المضمّنة من خلال تفعيل العلامةchrome://flags/#ignore-gpu-blocklist
وإعادة تشغيل Chrome.ما مِن محوّل لوحدة معالجة الرسومات يتطابق مع الخيارات التي تم تمريرها في
requestAdapter()
. محاولة الاتصال بـrequestAdapter()
باستخدام خيارات مختلفةتتطلّب WebGPU وحدة معالجة رسومات (GPU) (إما أجهزة أو محاكاة برامج). يمكنك التحقّق مما إذا كان Chrome يرصد وحدة معالجة الرسومات من خلال الانتقال إلى
chrome://gpu
.تعطَّلت عملية وحدة معالجة الرسومات عدة مرات. يمكنك إعادة تحميل الصفحة أو إعادة تشغيل Chrome. يمكنك الاطّلاع على أفضل الممارسات بشأن فقدان جهاز WebGPU لمعرفة المزيد.
WebGPU أبطأ من WebGL
افتح
chrome://gpu
وتأكَّد من إمكانية قراءة "WebGPU: تسريع الأجهزة". إذا ظهرت لك الرسالة "WebGPU: البرامج فقط، لا تتوفّر ميزة تسريع الأجهزة"، قد تحتاج إلى تحديث برامج تشغيل وحدة معالجة الرسومات.قد لا يؤدي تحويل مفاهيم WebGL مباشرةً إلى WebGPU إلى الاستفادة الكاملة من عمليات التحسين الفريدة التي توفّرها WebGPU. يمكنك الاطّلاع على من WebGL إلى WebGPU للتعرّف على بعض الاختلافات بينهما.
القيود الخاصة بنظام التشغيل Windows
يُرجى الانتباه إلى القيود التالية عند استخدام WebGPU على أجهزة Windows:
لا يتيح Chrome استخدام عدة محوّلات لوحدة معالجة الرسومات في الوقت نفسه. يُرجى الاطّلاع على issue chromium:329211593.
يستخدم Chrome دائمًا محوّل وحدة معالجة الرسومات نفسه الذي تم تخصيصه لأحمال عمل Chrome الأخرى، وهو عادةً بطاقة الرسومات المدمجة في أجهزة الكمبيوتر المحمولة، وذلك بسبب جانب استهلاك الطاقة (أي توفير الطاقة). هذا يعني أنّ الخيار
powerPreference
ليس له أي تأثير عند الاتصال بـrequestAdapter()
. يمكنك فرض استخدام وحدة معالجة الرسومات العالية الأداء إذا كانت متاحة من خلال تفعيل العلامةchrome://flags/#force-high-performance-gpu
وإعادة تشغيل Chrome.