Skip to main content
O Performance Investigator for XBOX (PIX) é uma ferramenta de análise de desempenho e depuração para desenvolvedores de jogos que estão criando títulos DirectX 12. Este tópico apresenta o modo de exibição PIX Checklist (Demonstrações um e dois) e descreve cinco casos de uso de exemplo (Demonstrações três a sete). O novo recurso PIX Checklist é o seu ponto único para otimização de GPU. Ele é uma lista selecionada de práticas recomendadas, com todas as violações marcadas diretamente na captura. Saiba como o PIX automatizou muitas das verificações de desempenho que mais comumente levam a otimizações e melhorias nas revisões rotineiras de desempenho de GPU para jogos.
Estas informações eram atuais em abril de 2022. Vários recursos foram alterados ou atualizados desde então.

Apresentando o PIX Checklist

O PIX Checklist fornece recomendações automatizadas para desempenho e correção da GPU. Os dados de criação de perfil capturados pelo PIX podem ser usados para analisar problemas de desempenho de GPU, CPU, memória e E/S de arquivo. O PIX Checklist foi lançado no Microsoft Game Development Kit with XBOX Extensions (GDKX) de abril de 2021 e foi aprimorado nas versões subsequentes. Se você ainda estiver na versão do GDK de abril de 2021, atualize imediatamente. O PIX Checklist está disponível somente no XBOX Series X|S. O XBOX One X não foi incluído porque isso teria tirado tempo de engenharia do XBOX Series X|S. No entanto, as recomendações de desempenho costumam ser as mesmas para ambas as plataformas.

Benefícios da automação

A automação pode detectar o seguinte:
  • Problemas que você não verifica
  • Pequenos problemas que ocorrem muitas vezes
  • Problemas que exigem conhecimento de toda a captura
O PIX pode detectar coisas que você não verifica. Algumas dessas coisas parecem tão improváveis que talvez você nem pense em verificá-las. Por exemplo, no XBOX Series X, há dois tipos de memória de GPU: ideal e padrão. Há uma tendência de supor que tudo em uma captura de GPU está na memória ideal, mas há momentos em que isso não acontece. Talvez você não verifique isso, mas o PIX pode fazer isso por você. O PIX pode verificar pequenas coisas que ocorrem muitas vezes. Individualmente, essas coisas não fazem muita diferença. No entanto, saber que elas ocorrem tantas vezes pode ser importante. Recentemente, o ATG observou dois casos em que um título redefinia o valor de referência de estêncil em cada desenho. Se você vir isso em um desenho, tudo bem. Se você vir isso em todos os desenhos, torna-se um problema. O PIX detecta esse tipo de repetição. O PIX pode detectar coisas que você só saberia depois de ver a captura inteira. Por exemplo, você pode ter criado um recurso como destino de renderização, mas nunca o associou como destino de renderização. Você teria que examinar cada desenho na captura para verificar isso, mas o PIX pode fazer isso por você.

Demonstração um: localizando e navegando no PIX Checklist

Esta seção descreve o modo de exibição Checklist. Figura 1. Janela de visão geral do PIX. Tela de visão geral do PIX A Figura 1 mostra o local da lista de verificação no layout padrão quando o PIX é aberto no GDK de março de 2022. Figura 2. Modo de exibição PIX Checklist. Modo de exibição PIX Checklist A Figura 2 mostra o modo de exibição PIX Checklist. Uma marca de seleção verde indica que o item foi aprovado na verificação. Ícones vermelhos, laranja ou amarelos significam que a verificação falhou. Por ser uma lista de verificação, ela tem itens ou verificações que o ATG recomenda que você revise. Por exemplo, o item Use Async Compute Queue. A Figura 2 mostra que isso foi feito e tem uma marca de seleção verde, portanto a verificação foi aprovada. Figura 3. Exemplo de dica de ferramenta Collected when running analysis do PIX. Exemplo de dica de ferramenta do PIX Qualquer coisa diferente de uma marca de seleção verde significa que o problema precisa da sua atenção. Um ícone vermelho, laranja ou amarelo avisa que o item da lista de verificação falhou. Uma ampulheta significa que a verificação requer uma ação que você ainda não executou. As dicas de ferramenta informam o que fazer. Na figura 3, a dica de ferramenta é Collected when running analysis. Isso indica que você precisa executar uma análise. Figura 4. Exemplo de dica de ferramenta Collected when opening the Resources tab do PIX. Outro exemplo de dica de ferramenta do PIX A Figura 4 mostra a dica de ferramenta Collected when opening the Resources tab. Figura 5. Modo de exibição Events do PIX. Modo de exibição Events do PIX Os itens que falham podem ser abertos. Dependendo do item, o PIX fornece informações e links úteis. A Figura 5 mostra um item da Checklist com um link que faz referência à Global ID 4477. Selecionar o link leva você a um evento no visualizador Events para a Global ID 4477. Há um componente da Checklist integrado ao modo de exibição Events. Aqui, a coluna Queue ID mais à esquerda tem o mesmo ícone vermelho que aparece no modo de exibição Checklist. Os itens no modo de exibição Events também têm links. Quando você seleciona um ícone vermelho no modo de exibição Events, o item aparece no modo de exibição Checklist.

Por que as tentativas de automação falham

Para fazer a coisa certa, precisamos que você entenda o que deu errado nas tentativas anteriores. A mais óbvia são os falsos positivos. Se a lista de verificação informar que você está fazendo algo errado, e você não estiver, trata-se de um bug que precisa ser corrigido. No entanto, às vezes problemas sutis não são falsos positivos, mas estão relacionados a eles. São casos de verdadeiros positivos, em que a lista de verificação está correta, há uma falha, mas por um motivo ou outro você não pode ou não vai corrigi-la. Chamamos esses problemas de _Sim, mas_s. Os exemplos incluem:
  • A Checklist diz Prefer GPU Optimal Memory for Graphics Resources. Sim, mas - A memória ideal da GPU acabou e o PIX Checklist está pedindo que você corrija o impossível.
  • A Checklist diz Avoid consecutive calls to ResourceBarrier. Sim, mas - Houve apenas algumas ocorrências. Não vale a pena fazer a correção porque ela não trará nenhuma economia substancial.
  • A Checklist diz Use the 2nd hardware display plane. Sim, mas - você não quer bifurcar o código para PC, XBOX One X e XBOX Series X|S.
Uma maneira de lidar com esses tipos de problemas é com uma filtragem robusta. Você não os verá se não forem necessários. As falhas de automação também ocorrem por causa de comentários e iteração. A sobrevivência do recurso de lista de verificação não está garantida. Houve alguns bons resultados até agora, mas ainda há excesso de relatórios de problemas sem importância.

Demonstração dois: filtrando o modo de exibição Checklist

Esta seção descreve como filtrar no modo de exibição Checklist. Figura 6. Filtragem do PIX por status de aprovação/falha no modo de exibição Checklist. Filtragem do PIX por status de aprovação/falha no modo de exibição Checklist A Figura 6 mostra a lista de verificação filtrada pelo status de aprovação/falha depois que o botão verde Hide rules with no violations foi selecionado. As regras são ordenadas por gravidade. O ATG atribui uma classificação de gravidade de 1 a 4 para cada regra. Figura 7. Filtragem do PIX por gravidade no modo de exibição Checklist. Filtragem do PIX por gravidade no modo de exibição Checklist Se você quiser ver apenas os avisos mais graves, poderá limitar a lista de verificação à Gravidade 1 ou à Gravidade 2. A Figura 7 mostra a lista de verificação filtrada pelas regras de Gravidade 1. Figura 8. Desabilitação manual de uma regra do PIX no modo de exibição Checklist. Desabilitação manual de uma regra do PIX no modo de exibição Checklist Se houver uma regra que você não queira ver, clique com o botão direito do mouse na regra e selecione Disable this rule. A Figura 8 mostra a filtragem da lista de verificação pela desabilitação de uma regra. Figura 9. Modo de exibição Checklist do PIX sem filtro. Modo de exibição Checklist do PIX sem filtro Você também pode selecionar Show disabled rules à esquerda do ícone verde Hide rules with no violations. Tudo o que você desabilitou anteriormente é habilitado e fica visível. A Figura 9 mostra a lista de verificação sem filtro. Figura 10. Filtragem do PIX por texto no modo de exibição Checklist. Filtragem do PIX por texto no modo de exibição Checklist Se você quiser encontrar um aviso e souber parte do texto dele, digite o texto na caixa de pesquisa da lista de verificação. A lista de verificação exibe as regras que correspondem ao texto no título do aviso ou na descrição longa. A Figura 10 mostra a lista de verificação filtrada por texto. Os exemplos nas seções a seguir mostram avisos que você pode ver na lista de verificação. Eles se baseiam em uma amostra de oito títulos. Esses títulos já foram lançados e estão otimizados. É muito mais difícil encontrar algo errado neles. A lista de verificação funciona melhor no início da produção, quando ainda há problemas que você precisa encontrar.

Demonstração três: descompactação de profundidade desnecessária

Esta seção descreve o aviso Use Texture Compatibility on Compressed Resources e usa uma descompactação de profundidade desnecessária no exemplo. Figura 11. Modo de exibição PIX Checklist com o aviso Use Texture Compatibility on Compressed Resources. Modo de exibição PIX Checklist com o aviso Use Texture Compatibility on Compressed Resources No primeiro exemplo, a figura 11 exibe um aviso Use Texture Compatibility on Compressed Resources. Observe que você pode ler a descrição na parte inferior da janela para obter detalhes adicionais sobre o aviso. Selecione o link Global ID #337 para continuar investigando o problema. Figura 12. Modo de exibição Events do PIX com descompactação de profundidade. Modo de exibição Events do PIX com descompactação de profundidade Selecionar o link leva você ao modo de exibição Events e a uma chamada ResourceBarrier, como mostrado na figura 12. Depth Decompress está abaixo da chamada ResourceBarrier. No entanto, no XBOX Series X|S, há um recurso de compatibilidade de textura que permite ignorar uma Depth Decompress e ler nativamente o formato compactado. Descompactadores de profundidade geralmente não aparecem neste ponto. Você não espera ver uma Depth Decompress. E ela leva 0,116 milissegundo. A lista de verificação informa onde houve uma violação. Figura 13. Modo de exibição API Objects do PIX e o sinalizador de compatibilidade de textura. Modo de exibição API Objects do PIX e o sinalizador de compatibilidade de textura Investigar isso mais a fundo leva você ao modo de exibição API Objects e ao objeto mostrado. A Figura 13 confirma que o objeto #35073 foi criado como um buffer de estêncil de profundidade, mas não especificou a compatibilidade de textura. Esse aviso surgiu em ambos os títulos de exemplo. Para um deles, foi uma boa descoberta. O outro disse sim, mas, isso foi tentado e não era importante. Portanto, foi razoável ignorar a Depth Decompress, apesar de perder desempenho em outro lugar.

Demonstração quatro: compactação delta de cores (DCC)

Esta seção descreve o aviso Use Delta Color Compression for Pre-cleared Color Textures. Figura 14. Delta Color Compression do PIX. Delta Color Compression do PIX A Figura 14 mostra o aviso Use Delta Color Compression for Pre-cleared Color Textures. A maioria dos destinos de renderização no XBOX Series X|S usa DCC. Ela oferece suporte à compatibilidade de textura, portanto esse aviso está vinculado ao exemplo da Demonstração três. Selecionar o link Global ID #1311 leva você a um evento selecionado. Figura 15. Aviso Fast Clear Eliminate do PIX. Aviso Fast Clear Eliminate do PIX A Figura 15 mostra um aviso Fast Clear Eliminate depois que o link é selecionado no modo de exibição Checklist. Isso é incomum porque a DCC não tem Fast Clear Eliminate. Normalmente, você não esperaria esse tipo de aviso em uma captura do XBOX Series X|S. Fast Clear Eliminate é o tipo de compactação usado no XBOX One. Um aviso disparado em Fast Clear Eliminate indica que a compactação cmask foi usada em vez da DCC. Quando você usa DCC, verá DCC Eliminate. Quando você usa DCC e compatibilidade de textura, não verá nada aqui e economizará o custo da DCC Eliminate. Figura 16. Velocity Buffer do PIX. Velocity Buffer do PIX A textura pode ser uma boa candidata para DCC. A Figura 16 mostra o destino de renderização como um Velocity Buffer, que frequentemente é compactável. Neste caso, o destino de renderização é quase inteiramente preto, e as partes restantes têm quase a mesma cor cinza. Em um título, dois dos desenvolvedores disseram que esse aviso poderia ser um erro. No início do desenvolvimento, eles tiveram bugs com a DCC. Em outro título, a equipe também desativou a DCC em alguns casos por causa de bugs não resolvidos. Outros títulos também relataram ter encontrado o aviso Fast Clear Eliminate. Algumas dessas ocorrências foram vitórias, embora outras não. Isso pode ser algo que o ATG precisa investigar mais a fundo, ou pode ter sido corrigido desde que as decisões foram tomadas pela primeira vez.

Demonstração cinco: destino de renderização não associado

Esta seção descreve o aviso Remove Unbound RTVs from Shader/PSO e um destino de renderização não associado. Figura 17. Destino de renderização não associado do PIX. Destino de renderização não associado do PIX A Figura 17 mostra o aviso Remove Unbound RTVs from Shader/PSO. Selecionar o link Global ID #4474 leva ao evento vinculado que disparou o aviso. Figura 18. Evento vinculado do PIX no modo de exibição Pipeline. Evento vinculado do PIX no modo de exibição Pipeline A Figura 18 mostra o modo de exibição Pipeline para o evento vinculado. Há dois destinos de renderização: RTV 0 e RTV 1. RTV 0 está em preto, indicando que a verificação foi aprovada. No entanto, RTV 1 está em vermelho, indicando que houve um problema. Figura 19. Linha de exportação do PIX para mrt1. Linha de exportação do PIX para mrt1 A Figura 19 mostra a linha de código que exporta para mrt1 na parte inferior da janela. A captura não tinha símbolos, portanto apenas as instruções de GPU estão disponíveis para o sombreador de pixel (PS). Rastreando o registro de volta, você pode ver como a exportação para RTV 1 foi calculada. A expectativa era que RTV 1 estivesse associado, mas não estava. Figura 20. Realce de sintaxe do PIX. Realce de sintaxe do PIX Usando o realce de sintaxe no PIX, você pode ver o quanto o cálculo dessa exportação é caro na figura 20. Há duas coisas erradas neste cenário.
  • Exportar algo que não é necessário e o custo de desempenho relacionado.
  • O cálculo para computar o valor exportado é um custo desperdiçado.
Ambos os títulos de exemplo tinham um aviso Remove Unbound RTVs from Shader/PSO. Um título disse que valia a pena corrigir. O outro disse que não. Ele não foi corrigido por causa de uma combinação de dois fatores.
  • Isso aconteceu apenas brevemente.
  • Corrigi-lo exige um novo PS, o que adiciona memória e complexidade.
Ambas as reações foram razoáveis.

Demonstração seis: exportações de VS não utilizadas

Esta seção descreve o aviso The VS Exports Only Parameters which are Needed by the PS. Figura 21. Aviso de exportações de VS não utilizadas do PIX. Aviso de exportações de VS não utilizadas do PIX A Figura 21 mostra o aviso The VS Exports Only Parameters which are Needed by the PS. Esse aviso é complementar ao aviso Remove Unbound RTVs from Shader/PSO. Nele, o PS exportava coisas que não eram necessárias. No aviso The VS Exports Only Parameters which are Needed by the PS, o sombreador de vértice (VS) também exportava coisas que não eram necessárias. A ocorrência selecionada na figura 22 diz que o VS tem dois parâmetros, mas o PS importou zero. Você pode selecionar o link para ver por que o PS importou apenas 0. Figura 22. Chamadas de desenho do PIX no modo de exibição Pipeline. Chamadas de desenho do PIX no modo de exibição Pipeline A Figura 22 mostra as chamadas de desenho no modo de exibição Pipeline. Selecionar o link leva você às chamadas de desenho no modo de exibição Pipeline. Figura 23. Sombreador de pixel não associado do PIX. Sombreador de pixel não associado do PIX A Figura 23 mostra que o PS não está associado e que esse evento é somente de profundidade. As últimas coisas no VS são exportações para o parâmetro 0 e o parâmetro 1. Qualquer coisa, exceto a posição, gravada pelo VS é desperdiçada porque não há PS para recebê-la. Se você rastrear essas exportações de volta, verá que há cálculos substanciais por trás delas. Elas não estão exportando uma constante. Há dois problemas com o cenário.
  • Exportar parâmetros que não precisam ser exportados ocupa espaço no cache de parâmetros.
  • Os parâmetros exportados eram o resultado de um cálculo potencialmente longo que também é desperdiçado.
Em um caso, a equipe quis corrigir isso porque era uma renderização somente de profundidade. A equipe relatou que corrigiu isso no PC e funcionou bem para eles. Eles querem tentar isso no XBOX. Outra equipe tinha uma ocorrência diferente, em que não estava renderizando. Eles acharam que corrigir esse problema não valeria a pena. E isso é razoável, porque envolve bifurcar o VS, ter mais instâncias do VS e os custos associados. Outros títulos também recebem esse aviso, e as consequências no desempenho variam.

Demonstração sete: wave64 quase vazia

Esta seção descreve o aviso Use Wave32 for threadgroups of size 32 or less e uma wave64 quase vazia.
Desde então, esse aviso foi expandido para abranger mais casos, e seu nome foi alterado de acordo.
Figura 24. Wave64 quase vazia do PIX. Wave64 quase vazia do PIX A Figura 24 mostra o aviso Use Wave32 for threadgroups of size 32 or less. Figura 25. Dispatch do PIX dentro de uma passagem. Dispatch do PIX dentro de uma passagem A Figura 25 mostra que selecionar uma das ocorrências no modo de exibição Checklist leva você a um dispatch dentro de uma passagem. No entanto, algo estranho ocorre. De acordo com as colunas de contadores, essa passagem tem 123 grupos de threads, 123 waves e 123 threads. E tudo nela é um dispatch(1,1,1). Essa passagem tem apenas dispatches de um grupo de threads, contendo uma wave, contendo uma thread. Todas as outras threads são desperdiçadas. O aviso informa que, em vez de desperdiçar 63 de cada 64 threads em uma Wave64, talvez você queira desperdiçar apenas 31 de cada 32 threads. Embora você possa fazer isso, isso não tornará a situação menos terrível do que já é. O aviso ainda é valioso porque informa que você está fazendo algo estranho.

Conclusão

O PIX Checklist está em desenvolvimento ativo

A equipe do PIX está desenvolvendo ativamente o PIX Checklist. Seus comentários são importantes. A equipe do ATG usa o PIX Checklist ao fazer revisões de desempenho, observando falsos positivos e aprendendo onde estão os pontos problemáticos. A equipe do PIX ainda atualiza a Checklist e continua sugerindo novos avisos. Recomendamos que você continue a usá-la.

Nossas solicitações para você

O desenvolvimento do PIX Checklist é influenciado pelos seus comentários.
  1. Execute o PIX Checklist em suas capturas.
  2. Envie-nos comentários sobre recursos úteis e não úteis por meio do botão de comentários do PIX, dos fóruns ou de seus contatos da Microsoft. Os desenvolvedores tendem a enviar comentários quando as coisas dão errado. As equipes do PIX também precisam de comentários sobre o que está funcionando bem, para saber em que continuar trabalhando.
  3. Solicite novos testes. Agora que você viu quais tipos de testes são possíveis, envie suas ideias de testes adicionais úteis.

Planos futuros

Aqui estão alguns recursos que a equipe do PIX considerou para o futuro.
  • Limites de aviso configuráveis pelo usuário: por exemplo, se você tiver um aviso, ele pode ser útil apenas se houver 100 ocorrências dele. No entanto, outro desenvolvedor pode precisar de um limite de aviso de apenas cinco ocorrências.
  • Expandir o modo de exibição Checklist para outros tipos de capturas: por exemplo, um aviso do System Monitor que detecta quando você está abaixo da taxa de quadros desejada por um determinado número de quadros. Isso criaria uma GPU Capture.
  • Modo de exibição Checklist para Timing Capture: forneceria avisos que indicam falhas em uma PIX Timing Capture.

Próximas etapas

Para revisar informações dos materiais de apresentação relacionados a esta visão geral, baixe os seguintes arquivos do XBOX Developer Download Secure Data Storage (SDS).
  • Apresentação de slides: GR01_A Tour of the New PIX Checklist - GPU Performance Made Easy.pptx em Xfest 2022 Graphics Track PowerPoints (Xfest2022GfxPPTs.ZIP)
  • Apresentação em vídeo: GR01.mp4 em Xfest 2022 Graphics Track Videos (Xfest2022GfxVids.ZIP)

Baixar as apresentações e os vídeos do Microsoft PowerPoint

  1. Acesse Downloads do Game Development Kit (GDK).
  2. Em Select file type, selecione Conference Materials e, em seguida, selecione Confirm.
  3. Em Select build/version number, escolha uma das seguintes apresentações de gráficos.
    • Xfest 2022 Graphics Track PowerPoints
    • Xfest 2022 Graphics Track Videos
  4. Selecione Download Now e aguarde a conclusão do download do arquivo .zip.
  5. Acesse sua pasta Downloads local e descompacte (extraia) os arquivos da pasta compactada.

Confira também

PIX
Last modified on October 6, 2026