Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este artículo se describe cómo el Windows Display Driver Model (WDDM) admite la detección y recuperación ante tiempo de espera (TDR). Proporciona información general sobre el proceso de TDR, explica cómo funciona la detección de tiempo de espera en WDDM y describe los pasos realizados para recuperarse de un tiempo de espera.
El público de este artículo es desarrolladores de controladores gráficos y de visualización.
Para obtener más información sobre TDR en WDDM, consulte los siguientes artículos:
- Cambios de TDR en Windows 8 y versiones posteriores
- Sincronización de subprocesos y TDR
- Pruebas y depuración de TDR
Información general
TDR es una característica de Windows que detecta cuándo la tarjeta gráfica tarda más de lo esperado en completar una operación. A continuación, restablece la tarjeta gráfica para evitar que todo el sistema deje de responder.
Uno de los problemas de estabilidad más comunes en los gráficos se produce cuando un equipo parece "colgar" o estar completamente "inmovilizado" mientras está procesando realmente un comando o una operación del usuario final. Muchos usuarios esperan unos segundos y luego deciden reiniciar el equipo. La apariencia congelada del ordenador se produce con frecuencia porque la GPU está ocupada procesando operaciones gráficas intensivas, normalmente durante la reproducción de juegos, y por lo tanto, no actualiza la pantalla. Las TDR permiten al sistema operativo detectar que la interfaz de usuario no responde.
En la ilustración siguiente se muestra el proceso de TDR.
El sistema operativo intenta detectar situaciones en las que los equipos parecen estar "congelados". A continuación, el sistema operativo intenta recuperarse dinámicamente de las situaciones inmovilizadas para que los escritorios vuelvan a responder, lo que reduce la situación en la que los usuarios finales reinician innecesariamente sus sistemas.
De forma predeterminada, el sistema operativo realiza un chequeo de fallos en el equipo cuando en la sexta GPU (o más) se produce un bloqueo, al detectar que cinco (5) o más GPU se bloquean (0x117) y las recuperaciones posteriores se producen dentro de un minuto (1). Para obtener más información, vea TdrLimitCount y TdrLimitTime.
Como nota al margen, los tiempos de espera del motor de procesamiento (0x141) no contribuyen al recuento de bloqueos de GPU, aunque el sistema operativo podría escalar un tiempo de espera del motor a un bloqueo de GPU si el tiempo de espera del motor no se resuelve. En el caso de los tiempos de espera del motor (0x141), el número máximo es uno menor que para los tiempos de espera del adaptador (0x117). El proceso de restablecimiento del motor bloquea el acceso a la GPU para el proceso que está causando dicho timeout, y el sistema registra 0x142 para indicar ese hecho. De este modo, el proceso defectuoso no realiza una comprobación de errores en el sistema.
Detección de tiempo de espera en WDDM
El programador de GPU, que forma parte del subsistema de kernel gráficos de DirectX (Dxgkrnl.sys), detecta cuándo la GPU tarda más del tiempo permitido en ejecutar una tarea determinada. A continuación, el programador de GPU intenta adelantar esta tarea en particular. La operación de prerregistro tiene un tiempo de espera, que es el tiempo de espera real de TDR. El período de tiempo de espera predeterminado en Windows es de dos segundos. Si la GPU no puede completar o interrumpir la tarea actual dentro del período de espera de TDR, el sistema operativo diagnostica que la GPU está congelada.
Para evitar que se produzca la detección de tiempo de espera, los proveedores de hardware deben asegurarse de que las operaciones de gráficos (es decir, finalización del búfer DMA) no tarden más de dos segundos en escenarios de usuario final, como la productividad y el juego.
Preparación para la recuperación
El programador de GPU llama a la función DxgkDdiResetFromTimeout del controlador de miniport de pantalla para informar al controlador de que el sistema operativo detectó un timeout. A continuación, el controlador debe reinicializarse y restablecer la GPU. Además, el controlador debe dejar de acceder a la memoria y no debe tener acceso al hardware. El sistema operativo y el controlador recopilan hardware y otra información de estado que puede ser útil para el diagnóstico posterior a la recuperación.
Para obtener más información, consulta TDR en Windows 8 y versiones posteriores.
Recuperación de escritorio
El sistema operativo restablece el estado adecuado de la pila de gráficos. El administrador de memoria de vídeo, que también forma parte de Dxgkrnl.sys, purga todas las asignaciones de la memoria de vídeo. El controlador de miniporte de pantalla restablece el estado de hardware de GPU. La pila de gráficos realiza las acciones finales y restaura el escritorio al estado responsivo.
El único artefacto visible desde la detección de bloqueos hasta la recuperación es un parpadeo de pantalla. Este parpadeo se produce cuando el sistema operativo restablece algunas partes de la pila de gráficos, lo que hace que se vuelva a dibujar una pantalla. El controlador de miniporte de pantalla puede eliminar este rediseño cuando cumple con WDDM 1.2 y versiones posteriores (consulte Proporcionar transiciones de estado sin problemas en WDDM 1.2 y versiones posteriores).
Cuando el sistema operativo recupera correctamente el escritorio, completa las siguientes acciones:
- Muestra un mensaje informativo al usuario final, que indica "El controlador de pantalla ha dejado de responder y se ha recuperado".
- Registra el mensaje anterior en el Visor de Eventos y recopila información para diagnóstico en formato de informe de depuración. Si el usuario final opta por proporcionar comentarios, el sistema operativo devuelve este informe de depuración a Microsoft a través del mecanismo de Análisis de Errores en Línea (OCA).
Algunas aplicaciones de DirectX heredadas podrían simplemente mostrar una pantalla negra al final de esta recuperación, lo que requiere que el usuario final reinicie estas aplicaciones. Las aplicaciones bien escritas de DirectX 9Ex y DirectX 10 y posteriores que manejan la tecnología de eliminación de dispositivos siguen funcionando correctamente. Una aplicación debe liberar y luego recrear su dispositivo Microsoft Direct3D y todos los objetos del dispositivo.
Sincronización de subprocesos y TDR
Consulte Sincronización de subprocesos y TDR para obtener más información.
Pruebas y depuración de TDR
Para obtener más información, consulte Pruebas y depuración de TDR.