FFalhas

Quatro falhas diferentes do GameLoop são todas chamadas de erro do DirectX

Failed to initialize DirectX, DXGI_ERROR_DEVICE_HUNG e DXGI_ERROR_DEVICE_REMOVED descrevem três falhas sem relação entre si. Ler a mensagem define a correção; chutar custa uma noite.

O DirectX é a camada pela qual o GameLoop desenha, então quase tudo o que dá errado entre o emulador e a GPU aparece com DirectX na mensagem. Isso não torna as falhas parentes. Quatro problemas distintos dividem o mesmo rótulo, e o texto da mensagem é a única coisa que os separa.

MensagemO que ela realmente significa
Failed to initialize DirectX 11/12O dispositivo de renderização nunca foi criado — driver, ou uma GPU que não faz o que foi pedido
GetDeviceRemovedReason failed, DXGI_ERROR_DEVICE_HUNGA GPU parou de responder no meio de um quadro e o Windows reiniciou o driver
Your PC does not support DirectX 11Um relato de capacidade, verdadeiro ou falso, vindo do driver
DXGI_ERROR_DEVICE_REMOVEDA GPU desapareceu por completo — travamento de driver, clocks instáveis ou energia

Falhas de inicialização

Esta aparece antes do jogo, e o driver de vídeo costuma ser a resposta. Pegue o driver no site do próprio fabricante da GPU em vez do Windows Update, instale e reinicie.

Se isso não mudar nada, baixe o modo de renderização do GameLoop de DirectX 12 para DirectX 11 nas configurações de motor. Suporte a DX12 em hardware anterior a 2018 costuma existir no papel e ser instável na prática, e os gráficos integrados são a vítima mais frequente. O OpenGL é o próximo degrau abaixo.

Rode o dxdiag antes de supor falha de hardware. A aba Sistema informa a versão do DirectX em uso. Se ela disser 12 enquanto o GameLoop insiste que seu PC não dá conta do 11, o hardware está bem e o driver é que não está expondo o feature level direito — remova-o no Gerenciador de Dispositivos e instale a build atual do fabricante do zero.

Device hung e device removed

Vale separar estes dois da inicialização porque acontecem durante o jogo, e nenhum dos dois é realmente um bug do GameLoop.

DEVICE_HUNG é o Timeout Detection and Recovery do Windows fazendo o seu trabalho: a GPU não devolveu um quadro a tempo, então o driver foi reiniciado por baixo da aplicação. Superaquecimento, um overclock instável e uma atualização de driver aplicada pela metade são as três coisas que causam isso com confiabilidade. Volte qualquer offset de clock de núcleo e de memória para o padrão de fábrica, acompanhe as temperaturas sob carga e, se o driver foi atualizado por cima de um antigo, remova-o de forma limpa com o Display Driver Uninstaller — obtido no site do próprio desenvolvedor — em Modo de Segurança antes de reinstalar.

DEVICE_REMOVED é o primo mais grave: a GPU ficou indisponível por completo. As duas mesmas primeiras verificações, mais o fornecimento de energia. O Visualizador de Eventos do Windows, em Logs do Windows e Sistema, registra detalhes em nível de driver nas origens chamadas nvlddmkm na NVIDIA e amdkmdap na AMD. Filtrar por elas em torno do horário do travamento diz mais do que qualquer lista genérica de soluções.

Quando não há mensagem nenhuma

O GameLoop fechando em silêncio depois da tela de carregamento costuma ser a mesma falha de DirectX com a caixa de diálogo suprimida. O log Aplicativo do Visualizador de Eventos, lido no horário exato do travamento, geralmente contém o código de erro real. Antes disso, duas verificações baratas: desative as otimizações de tela cheia na aba Compatibilidade do atalho e repare os Visual C++ Redistributables em Configurações do Windows, Aplicativos, Aplicativos instalados — a compilação de shaders é uma das primeiras coisas a falhar quando um runtime está danificado.

O que não resolve

Reinstalar o DirectX 12. Não há o que reinstalar. É um componente do Windows, não um pacote redistribuível.

A edição de registro TdrDelay. Estender o tempo limite da GPU impede que o Windows reporte o travamento. A GPU travou do mesmo jeito. Isso esconde um problema térmico ou de driver em vez de resolvê-lo e, numa placa genuinamente instável, converte um reset recuperável em uma área de trabalho congelada.

Reinstalar o GameLoop por causa de um erro device-removed. O emulador é o processo que por acaso estava rodando quando a GPU saiu do barramento. Reinstalá-lo não trata nada.

Reverter uma atualização do Windows por reflexo. É uma jogada legítima quando o erro começou um ou dois dias depois de um KB específico e o driver já está atualizado. Como primeira resposta a qualquer mensagem de DirectX, é uma ação grande, disruptiva e de baixa taxa de acerto.