WebGPU: Sugerencias y soluciones para la solución de problemas

François Beaufort
François Beaufort

Fecha de publicación: 7 de febrero de 2024; última actualización: 17 de octubre de 2025

En este documento, se explica por qué es posible que WebGPU no funcione o no funcione como se espera en el navegador Chrome, y se proporcionan pasos claros para resolver los problemas cuando sea posible.

En el siguiente ejemplo, se muestra un error de JavaScript que puedes recibir cuando gpu no está disponible en navigator:

const adapter = await navigator.gpu.requestAdapter();
cancel Uncaught TypeError: Cannot read properties of undefined (reading 'requestAdapter')

Esto puede deberse a uno de los siguientes motivos: Verifica los que se encuentran en este orden específico:

  1. WebGPU requiere Chrome 113 o una versión posterior en ChromeOS, macOS y Windows, y Chrome 121 o una versión posterior en Android. Verifica tu versión en chrome://version y actualízala si es necesario.

  2. WebGPU solo es accesible para contextos seguros. Si publicas tu código a través de un protocolo no seguro (por ejemplo, http: o file:), usa el protocolo seguro https: o aborda este problema durante el desarrollo de tu app web de una de las siguientes maneras:

    • Publica tu código de forma local en http://localhost o http://127.0.0.1 con cualquiera de estos comandos: npx http-server o python3 -m http.server.

    • Agrega el origen a la lista "Orígenes no seguros tratados como seguros" de chrome://flags/#unsafely-treat-insecure-origin-as-secure y reinicia Chrome.

    • Instala Node.js y ejecuta npx servez --ssl para entregar tu carpeta a través de HTTPS con un certificado falso. Aun así, recibirás una advertencia en Chrome que puedes omitir haciendo clic en "Avanzado" y, luego, en "Ir a…".

    • Expón tu servidor web local a Internet con ngrok.

El adaptador de GPU es nulo

A continuación, se muestra un ejemplo de un error de JavaScript que puedes recibir cuando el adaptador que obtienes al llamar a requestAdapter() es nulo:

const adapter = await navigator.gpu.requestAdapter();
const device = await adapter.requestDevice();
cancel Uncaught TypeError: Cannot read properties of undefined (reading requestDevice)

Esto sucede por uno de los siguientes motivos. Verifica los que se encuentran en este orden específico:

  1. WebGPU se inhabilita cuando el usuario desactiva “Usar la aceleración de gráficos cuando esté disponible” en chrome://settings/system. Comprueba si este parámetro de configuración está desactivado y vuelve a activarlo.

  2. WebGPU aún no es compatible con esta plataforma. Puedes habilitar la marca chrome://flags/#enable-unsafe-webgpu y reiniciar Chrome. Para la compatibilidad experimental con Linux, también deberás habilitar la marca chrome://flags/#enable-vulkan. Consulta Compatibilidad con WebGPU en Headless Chrome para obtener más información.

  3. El hardware de la GPU se agregó específicamente a la lista de bloqueo. Si ves el mensaje "WebGPU has been disabled via blocklist or the command line" en chrome://gpu, puedes inhabilitar la lista de bloqueo de adaptadores de WebGPU habilitando la función experimental chrome://flags/#enable-unsafe-webgpu y reiniciando Chrome. También puedes anular la lista de renderización de software integrada habilitando la marca chrome://flags/#ignore-gpu-blocklist y reiniciando Chrome.

  4. No hay un adaptador de GPU que coincida con las opciones que se pasaron en requestAdapter(). Intenta llamar a requestAdapter() con diferentes opciones.

  5. WebGPU requiere una GPU (ya sea de hardware o emulada por software). Para verificar si Chrome detecta una GPU, visita chrome://gpu.

  6. El proceso de la GPU falló varias veces. Puedes volver a cargar la página o reiniciar Chrome. Consulta las prácticas recomendadas para la pérdida del dispositivo WebGPU para obtener más información.

WebGPU es más lento que WebGL

  1. Abre chrome://gpu y asegúrate de poder leer "WebGPU: Hardware accelerated". Si ves el mensaje "WebGPU: Software only, hardware acceleration unavailable", es posible que debas actualizar los controladores de la GPU.

  2. Traducir directamente los conceptos de WebGL a WebGPU podría no aprovechar al máximo las optimizaciones únicas de WebGPU. Consulta De WebGL a WebGPU para obtener información sobre algunas de sus diferencias.

Limitaciones específicas de Windows

Ten en cuenta las siguientes limitaciones cuando uses WebGPU en dispositivos Windows:

  • Chrome no admite el uso de varios adaptadores de GPU de forma simultánea. Consulta el problema chromium:329211593.

  • Chrome siempre usa el mismo adaptador de GPU que se asignó para otras cargas de trabajo de Chrome, que, en el caso de las laptops, suele ser la tarjeta gráfica integrada, debido al aspecto del uso de energía (es decir, el ahorro de energía). Esto significa que la opción powerPreference no tiene ningún impacto cuando se llama a requestAdapter(). Puedes forzar el uso de la GPU de alto rendimiento si está disponible. Para ello, habilita la marca chrome://flags/#force-high-performance-gpu y reinicia Chrome.