Partilhar via


Depuração de HLSL

O depurador HLSL, que é uma das ferramentas de Diagnósticos Gráficos em Visual Studio, pode ajudá-lo a entender como o código do sombreador HLSL opera com dados de gráfico que foram gravados em uma sessão de captura de Diagnósticos Gráficos.

Este é o Depurador HLSL:

Depuração usando HLSL Assista e janelas de pilha de chamada.

Entendendo o depurador de HLSL

O depurador HLSL pode ajudá-lo a entender os problemas que ocorrem no código do sombreador.O código de depuração HLSL no Visual Studio lembra o código de depuração escrito em outra linguagem - por exemplo, C++, C# ou Visual Basic.Você pode inspecionar o conteúdo de variáveis, definir os pontos de quebra, avançar no código e ir até a pilha de chamadas, exatamente como você pode quando depura outros idiomas.

No entanto, como o hardware e software da CPU (código do aplicativo) é tão diferente do hardware e software do GPU (código do sombreador), uma experiência de depuração semelhante à CPU não é possível em um GPU a menos que o depurador GPU funcione em uma maneira fundamentalmente diferente.A principal diferença entre os tipos de trabalho das GPUs e das CPUs é que as GPUs difundem o trabalho por centenas de processadores simples e relativamente lentos, que são otimizados para que operações de elementos gráficos tratem de conjuntos de dados muito grandes, mas as CPUs usam uma quantidade de processadores relativamente rápidos e complicados que podem trabalhar cargas de trabalho menores, de propósito geral.Além disso, como um GPU é basicamente um computador independente que gerencia seus próprios trabalhos internos e somente raramente compartilha informações com a CPU, é muito difícil para um depurador executado na CPU saber o que está acontecendo no GPU em um determinado momento.Mesmo se uma CPU pode continuar, o código GPU apenas usa muitos segmentos e produz um número excessivo de dados para que um desenvolvedor escolha.

Para contornar estas dificuldades, o depurador de HLSL recria quadros capturados usando as informações gravadas no registro de elementos gráficos, em vez de tentar monitorar um GPU em tempo real que executa o código do sombreador.Como um log de gráficos contém informações suficientes para recriar qualquer parte da saída e como os Diagnósticos de Gráficos fornecem ferramentas que podem ajudá-lo a encontrar o pixel exato e o evento onde ocorre um erro, o Depurador HLSL só precisará simular a cadeia de sombreamento exata que você está interessado.Isso significa que o trabalho do sombreador pode ser simulado na CPU, onde seu funcionamento interno é no modo de exibição total.Este é o que dá ao depurador HLSL uma experiência de depuração do tipo CPU.

No entanto, o depurador HLSL está atualmente limitado das seguintes maneiras:

  • O depurador HLSL não oferece suporte editar-e-continuar.

  • Não é possível depurar ao mesmo tempo um aplicativo e o código do sombreador.No entanto, você pode alternar entre eles.

  • Você pode adicionar as variáveis e registros à janela do relógio, mas as expressões não são suportadas.

  • Os sombreadores de cálculo não são suportados.

Entretanto, o HLSL Debugger oferece a melhor experiência possível, como em uma CPU.

Consulte também

Tarefas

Passo a passo: Objetos ausentes devido ao sombreamento de vértice

Passo a passo: Depuração de erros devido a sombreamento de processamento