Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este artigo descreve melhorias de depuração de TDR (detecção e recuperação de time-out) disponíveis a partir do Windows 11, versão 24H2 (WDDM 3.2). Os desenvolvedores de driver de gráficos devem estar familiarizados com a detecção e recuperação de tempo limite de GPU no Windows, conforme descrito na Detecção e Recuperação de Tempo Limite e TDR no Windows 8 e posterior.
Alterações de DDI
DxgkddiCollectDbgInfo2
Para auxiliar a análise de TDR, o sistema operacional historicamente chamou o retorno de chamada DxgkddiCollectDbgInfo do driver no modo kernel (KMD) para permitir que o driver escreva sua própria carga útil no relatório TDR que o sistema carrega do computador do cliente.
DxgkddiCollectDbgInfo2 é adicionado como uma extensão de depuração de TDR. Esse callback permite que o sistema operacional passe informações mais detalhadas ao KMD sobre a causa raiz do TDR. Então, o KMD pode salvar um estado relevante para a seção da GPU responsável pelo TDR.
DxgkddiCollectDbgInfo2 é um superconjunto para o DxgkddiCollectDbgInfo existente.
Um driver WDDM 3.2 não é necessário para implementar DxgkddiCollectDbgInfo2, nesse caso, o sistema operacional chama DxgkddiCollectDbgInfo.
Se o KMD implementar DxgkddiCollectDbgInfo2, o sistema operacional o invocará em vez de DxgkddiCollectDbgInfo em todos os casos.
A estrutura DRIVER_INITIALIZATION_DATA é estendida para incluir um ponteiro para DxgkddiCollectDbgInfo2.
DXGKARG_COLLECTDBGINFO2
O sistema operacional passa a estrutura de DXGKARG_COLLECTDBGINFO2 adicionada para DxgkddiCollectDbgInfo2.
O layout de DXGKARG_COLLECTDBGINFO2 é retrocompatível com a estrutura DXGKARG_COLLECTDBGINFO existente para permitir que a implementação DxgkDdiCollectDbgInfo2 reutilize os auxiliares DxgkDdiCollectDbgInfo conforme necessário. Por esse motivo, os campos Reason, pBuffer, BufferSize e pExtension têm a mesma semântica.
Os outros campos a seguir estão em DXGKARG_COLLECTDBGINFO2, mas não em DXGKARG_COLLECTDBGINFO.
- TdrType
- TdrPayloadSize
- TdrPayload
Para alguns tipos de TDR, o sistema operacional fornece informações adicionais no buffer TdrPayload com TdrPayloadSize bytes. Pode ser NULL, e espera-se que o driver lide com esse caso sem falhar.
Quando o payload não é NULL, ele pode ser convertido para uma estrutura que corresponde ao tipo TDR. O sistema operacional pode aumentar essas estruturas de maneira compatível com versões anteriores, adicionando novos campos no final. O driver deve verificar TdrPayloadSize antes de acessar os campos TdrPayload para garantir que o Sistema Operacional implemente a versão de conteúdo desejada ou posterior.
A memória que TdrPayload aponta só é válida durante a chamada DxgkddiCollectDbgInfo2. O driver não deve armazenar um ponteiro para TdrPayload após concluir a chamada DxgkddiCollectDbgInfo2.
A partir do WDDM 3.2, as estruturas de conteúdo a seguir são adicionadas como cargas possíveis para o TdrPayload apontar.
DXGK_TDR_PAYLOAD_ENGINE_TIMEOUT para um payload de tempo limite do motor (TdrType é igual a DXGK_TDR_TYPE_ENGINE_TIMEOUT).
DXGK_TDR_PAYLOAD_VSYNC_TIMEOUT para um payload de tempo limite de VSync (TdrType é igual a DXGK_TDR_TYPE_VSYNC_TIMEOUT).