Опубликовано: 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 требуется 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и перезапустите Chrome.
- Установите Node.js и запустите - npx servez --ssl, чтобы обслуживать папку по протоколу https с поддельным сертификатом. Предупреждение в Chrome всё равно будет появляться, но его можно обойти, нажав «Дополнительно», а затем «Перейти к...».
- Откройте доступ к своему локальному веб-серверу из Интернета с помощью ngrok . 
 
Адаптер графического процессора — нулевой
 Ниже приведен пример ошибки JavaScript, которую вы можете получить, когда адаптер, полученный в результате вызова requestAdapter() равен null:
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 без заголовка .
- Аппаратное обеспечение графического процессора (GPU) специально занесено в список заблокированных устройств. Если на - chrome://gpuотображается сообщение «WebGPU отключен через список заблокированных устройств или командную строку», вы можете отключить список заблокированных устройств WebGPU, включив флаг- chrome://flags/#enable-unsafe-webgpuи перезапустив Chrome. Вы также можете переопределить список встроенного программного рендеринга, включив флаг- chrome://flags/#ignore-gpu-blocklistи перезапустив Chrome.
- Для параметров, переданных в - requestAdapter(), не существует соответствующего графического адаптера. Попробуйте вызвать- requestAdapter()с другими параметрами .
- Для WebGPU требуется графический процессор (аппаратный или с программной эмуляцией). Проверить, обнаруживает ли Chrome графический процессор, можно на сайте - chrome://gpu.
- Процесс графического процессора несколько раз аварийно завершался. Вы можете перезагрузить страницу или перезапустить Chrome. Подробнее см. в рекомендациях по устранению потери данных с WebGPU. 
WebGPU медленнее, чем WebGL
- Откройте - chrome://gpuи убедитесь, что вы видите надпись «WebGPU: Аппаратное ускорение». Если вы видите надпись «WebGPU: Только программное обеспечение, аппаратное ускорение недоступно», возможно, вам необходимо обновить драйверы видеокарты.
- Прямая реализация концепций WebGL в WebGPU может не в полной мере использовать уникальные возможности оптимизации WebGPU. Подробнее об отличиях WebGL от WebGPU можно узнать в статье «От WebGL к WebGPU» . 
Ограничения, специфичные для Windows
При использовании WebGPU на устройствах Windows помните о следующих ограничениях:
- Chrome не поддерживает одновременное использование нескольких графических адаптеров. См. issue chromium:329211593 . 
- Chrome всегда использует тот же графический адаптер, который был выделен для других рабочих нагрузок Chrome. На ноутбуках это, как правило, интегрированная видеокарта из-за энергопотребления (т.е. энергосбережения). Это означает, что параметр - powerPreferenceне влияет на вызов- requestAdapter(). Вы можете принудительно использовать высокопроизводительный графический процессор (если он доступен), включив флаг- chrome://flags/#force-high-performance-gpuи перезапустив Chrome.
