Что происходит в момент DEVICE_HUNG
Игра отправляет видеокарте пакеты команд: построить сцену, наложить текстуры, посчитать освещение. Windows следит, чтобы видеокарта не застревала на одном пакете. Механизм называется обнаружением и восстановлением после тайм-аута, TDR. По документации Microsoft, если графический процессор не выполнил и не прервал задачу за две секунды, система считает его зависшим, сбрасывает драйвер и очищает видеопамять. Рабочий стол возвращается, а Windows сообщает, что видеодрайвер перестал отвечать и был восстановлен.
Для игры такой сброс означает потерю всего, что лежало в видеопамяти. Код DXGI_ERROR_DEVICE_HUNG, 0x887A0006, она получает, когда устройство отказало из-за команд, которые Microsoft называет неправильно сформированными. Аккуратно написанная игра может пересоздать устройство и продолжить, но многие просто показывают ошибку и закрываются. Если сбросы идут часто, срабатывает защита: при пяти и более зависаниях за минуту Windows останавливается синим экраном.
Система или железо? Формулировка Microsoft рассчитана на разработчиков и указывает на ошибку в игре, и так действительно бывает: сбой появляется после патча, в одной сцене, у многих игроков сразу. Но видеокарта, которая перегрелась, недополучает питание или работает за пределами стабильного разгона, тоже перестаёт укладываться во время, и Windows видит ту же картину. Различают эти случаи по тому, одна ли игра падает и зависит ли сбой от нагрузки и температуры. Отдельный случай — ноутбук: там видеокарта и процессор часто делят одну систему охлаждения, и перегрев одного быстро становится бедой обоих.
