منتشر شده: ۷ فوریه ۲۰۲۴، آخرین بهروزرسانی: ۱۷ اکتبر ۲۰۲۵
این سند توضیح میدهد که چرا WebGPU ممکن است در مرورگر کروم غیرقابل استفاده باشد یا آنطور که انتظار میرود کار نکند، و در صورت امکان، گامهای روشنی برای حل مشکلات ارائه میدهد.
navigator.gpu تعریف نشده است
مثال زیر یک خطای جاوا اسکریپت را نشان میدهد که ممکن است هنگام عدم وجود gpu در navigator با آن مواجه شوید:
const adapter = await navigator.gpu.requestAdapter();
cancel Uncaught TypeError: Cannot read properties of undefined (reading 'requestAdapter')
این ممکن است به یکی از دلایل زیر باشد. موارد زیر را به ترتیب خاص بررسی کنید:
WebGPU به Chrome 113 یا بالاتر در 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اضافه کنید و کروم را مجدداً راهاندازی کنید.Node.js را نصب کنید و
npx servez --sslاجرا کنید تا پوشه شما از طریق https و با یک گواهی جعلی سرویسدهی شود. همچنان در کروم هشداری دریافت خواهید کرد که میتوانید با کلیک روی «پیشرفته» و سپس «ادامه به...» آن را دور بزنید.سرور وب محلی خود را با ngrok در اینترنت قرار دهید.
آداپتور GPU تهی است
مثال زیر یک خطای جاوا اسکریپت است که ممکن است هنگام تهی بودن آداپتوری که از فراخوانی requestAdapter() دریافت میکنید، دریافت کنید:
const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();
cancel Uncaught TypeError: Cannot read properties of undefined (reading requestDevice)
این اتفاق به یکی از دلایل زیر رخ میدهد. موارد زیر را به ترتیب خاص بررسی کنید:
وقتی کاربر گزینه «استفاده از شتاب گرافیکی در صورت وجود» را در
chrome://settings/systemغیرفعال کرده باشد، WebGPU غیرفعال میشود. بررسی کنید که آیا این تنظیم غیرفعال است یا خیر و آن را دوباره فعال کنید.WebGPU هنوز در این پلتفرم پشتیبانی نمیشود. میتوانید پرچم
chrome://flags/#enable-unsafe-webgpuفعال کرده و کروم را مجدداً راهاندازی کنید. برای پشتیبانی آزمایشی لینوکس، باید پرچمchrome://flags/#enable-vulkanرا نیز فعال کنید. برای کسب اطلاعات بیشتر ، پشتیبانی WebGPU در Chrome بدون سر را بررسی کنید.سختافزار پردازنده گرافیکی (GPU) بهطور خاص در فهرست مسدودسازی قرار گرفته است. اگر در
chrome://gpuبا عبارت "WebGPU از طریق فهرست مسدودسازی یا خط فرمان غیرفعال شده است" مواجه شدید، میتوانید با فعال کردن پرچمchrome://flags/#enable-unsafe-webgpuو راهاندازی مجدد کروم، فهرست مسدودسازی آداپتورهای WebGPU را غیرفعال کنید. همچنین میتوانید با فعال کردن پرچمchrome://flags/#ignore-gpu-blocklistو راهاندازی مجدد کروم، فهرست رندر نرمافزار داخلی را لغو کنید.هیچ آداپتور GPU منطبقی برای گزینههای ارسالی در
requestAdapter()وجود ندارد. فراخوانیrequestAdapter()با گزینههای مختلف امتحان کنید .WebGPU به یک پردازنده گرافیکی (چه سختافزاری و چه نرمافزاری) نیاز دارد. میتوانید با مراجعه به
chrome://gpuبررسی کنید که آیا کروم پردازنده گرافیکی را شناسایی میکند یا خیر.فرآیند GPU چندین بار از کار افتاد. میتوانید صفحه را مجدداً بارگیری کنید یا Chrome را مجدداً راهاندازی کنید. برای کسب اطلاعات بیشتر ، بهترین شیوههای از دست دادن دستگاه WebGPU را بررسی کنید.
WebGPU کندتر از WebGL است
chrome://gpuرا باز کنید و مطمئن شوید که میتوانید عبارت «WebGPU: Hardware accelerator» را بخوانید. اگر عبارت «WebGPU: Software only, hardware acceleration unavailable» را میبینید، ممکن است لازم باشد درایورهای GPU خود را بهروزرسانی کنید.ترجمه مستقیم مفاهیم WebGL به WebGPU ممکن است به معنای بهرهبرداری کامل از بهینهسازیهای منحصر به فرد WebGPU نباشد. برای آشنایی با برخی از تفاوتهای آنها، به مقاله «از WebGL تا WebGPU» مراجعه کنید.
محدودیتهای خاص ویندوز
هنگام استفاده از WebGPU در دستگاههای ویندوزی، از محدودیتهای زیر آگاه باشید:
کروم از استفاده همزمان از چندین آداپتور پردازنده گرافیکی پشتیبانی نمیکند. به شماره chromium:329211593 مراجعه کنید.
کروم همیشه از همان آداپتور GPU که برای سایر بارهای کاری کروم اختصاص داده شده است، استفاده میکند که برای لپتاپها معمولاً کارت گرافیک یکپارچه است، به دلیل جنبه مصرف برق (یعنی: صرفهجویی در مصرف برق). این بدان معناست که گزینه
powerPreferenceهنگام فراخوانیrequestAdapter()هیچ تاثیری ندارد. میتوانید با فعال کردن پرچمchrome://flags/#force-high-performance-gpuو راهاندازی مجدد کروم، استفاده از GPU با کارایی بالا را در صورت وجود، اجباری کنید.