Ferramentas e recursos avançados

Depuradores

Como depurar com a camada de validação

O Vulkan foi projetado para alto desempenho e baixa sobrecarga do motorista. Para isso, ela inclui apenas recursos muito limitados de verificação e depuração de erros por padrão. Se você fizer algo errado, o driver geralmente falhará em vez de retornar um código de erro ou, pior ainda, parecerá funcionar na sua placa gráfica, mas falhará completamente em outras.

Para permitir verificações extensas durante o desenvolvimento, a Vulkan fornece camadas de validação, partes de código que podem ser inseridas entre a API e o driver gráfico para realizar verificações extras em parâmetros de função e rastrear problemas de gerenciamento de memória. É possível ativar as camadas de validação durante o desenvolvimento e desativá-las completamente ao liberar o aplicativo sem sobrecarga.

As camadas de validação podem ser escritas por qualquer pessoa, mas o Khronos fornece um único conjunto padrão chamado VK_LAYER_KHRONOS_validation. Consulte Camadas de validação da Vulkan no Android na página do Android NDK para ativar a camada de validação no seu app.

RenderDoc

O RenderDoc é outra ferramenta de código aberto avançada que permite capturar um frame para inspeção e análise. É uma ferramenta muito eficiente usada por programadores gráficos para depurar as cenas renderizadas. Ele oferece suporte ao Vulkan no Android, embora seu app precise ser definido como depurável para funcionar.

Para informações sobre como configurar e usá-lo no seu app Android, consulte Como usar o RenderDoc no Android.

Bibliotecas de captura / repetição

Reconstrução de GFX

O GFXRebuilder é um projeto de código aberto que oferece ferramentas para capturar e reproduzir chamadas de API gráficas executadas por um aplicativo. O rastro gravado pode ser reproduzido mais tarde para reconstruir o comportamento específico de gráficos do aplicativo capturado. Uma das principais vantagens do GFXRebuilder é que ele permite que ele seja usado no app lançado, mesmo com android:debuggable desativado.

Para mais informações, visite o repositório do projeto. As informações de configuração e uso do Vulkan no Android estão disponíveis em Captura e reprodução da API GFXRebuilder para Android.

Os arquivos de rastreamento não são portáteis, o que significa que não é possível capturar o arquivo em um dispositivo e reproduzi-lo em outro (com diferentes versões do SO, chipsets ou até mesmo versões do driver).

Criadores de perfil

Android GPU Inspector (AGI)

O Android GPU Inspector (AGI) é um criador de perfil gráfico criado para Android que inclui um perfil de sistema e um Frame Profiler. Ela fornece informações de alto nível de criação de perfil que permitem entender o perfil de desempenho do jogo e identificar gargalos.

Para fazer o download do AGI e aprender a usá-lo, confira o site do Android GPU Inspector.

Criador de perfil do Android Studio

O Android Studio Profiler é uma ferramenta útil para criar o perfil de desempenho do seu aplicativo. No entanto, ele não é voltado especificamente para criação de perfis gráficos. Ele consiste no CPU Profiler, Memory Profiler, Network Profiler, Energy Profiler, Power Profiler e Event Monitor.

Para saber mais sobre como configurar e usar o Android Studio Profiler, consulte Criar perfil de desempenho do app.

Criadores de perfil de OEM

As ferramentas desta seção são específicas de OEM e podem não funcionar em dispositivos executados em outros chips.

ARM Performance Studio para dispositivos móveis

Arm Performance Studio para dispositivos móveis é o novo nome do Arm Mobile Studio. É um pacote de ferramentas que inclui o Graphics Analyzer e o Frame Advisor para ajudar a identificar e corrigir problemas de desempenho em GPUs ARM.

Para mais informações, consulte o site Arm Performance Studio para dispositivos móveis.

GPUs ARM PerfDoc para Mali

O PerfDoc é uma camada do Vulkan desenvolvida para validar aplicativos de acordo com as práticas recomendadas da GPU Mali da ARM. Desde então, ela foi mesclada em VK_LAYER_KHRONOS_validation e é essencialmente parte das camadas de validação padrão do Vulkan.

Para saber mais sobre como usá-la, consulte a seção Depuração com a camada de validação.

Criador de perfil do Qualcomm Snapdragon

O Qualcomm Snapdragon Profiler é um software de criação de perfil desenvolvido pela Qualcomm para os desenvolvedores de aplicativos analisarem o desempenho de CPU, GPU, DSP, memória, energia, térmica e rede para identificar gargalos nos chipsets.

Para mais informações, consulte o Snapdragon Profiler na Qualcomm Developer Network.

GPUWatch da Samsung

O GPUWatch da Samsung é uma ferramenta para observar a atividade da GPU em dispositivos Samsung. Ao contrário das outras ferramentas, essa ferramenta pode ser usada diretamente no dispositivo móvel. Por isso, é muito útil verificar o desempenho do aplicativo imediatamente, mesmo quando você não tiver acesso a outro computador host.

Para mais informações sobre como ativar, consulte o Guia do usuário.

PVRTune

O PVRTune da Imagination Technologies permite que os desenvolvedores criem perfis de aplicativos no hardware PowerVR em tempo real com uma ampla variedade de contadores e métricas. Ele também permite que a sessão seja salva para análise adicional de baixo nível e para detectar gargalos de desempenho.

Para mais informações sobre como usar o PVRTune, consulte o Manual.

Ferramentas de migração

Conversão de sombreadores de GLSL para SPIR-V

A API do Vulkan espera que os programas de shader sejam fornecidos no formato intermediário binário SPIR-V. Essa convenção é diferente do OpenGL ES, em que você pode enviar o código-fonte escrito na OpenGL Shading Language (GLSL) como strings de texto.

O NDK r12 e versões mais recentes incluem uma biblioteca de execução para compilar sombreadores GLSL em SPIR-V, que podem ser usados pelo Vulkan. O compilador shaderc pode ser usado para compilar programas de sombreador escritos em GLSL para SPIR-V. Se o jogo usa HLSL, o DirectXShaderCompiler oferece suporte à saída SPIR-V.

Normalmente, você precisa compilar programas de sombreador off-line como parte do processo de criação de recursos do jogo e incluir os módulos SPIR-V como parte dos recursos de execução.

Para saber mais sobre o processo de compilação de sombreadores para seu app Vulkan, consulte Compiladores de sombreador do Vulkan no Android na seção do Android NDK.

Recursos avançados

Integrar o Android Frame Pacing ao renderizador Vulkan

A biblioteca Android Frame Pacing, também conhecida como Swappy, ajuda os jogos Vulkan a ter uma renderização uniforme e a corrigir o ritmo para manter o loop de renderização do jogo sincronizado com o subsistema de exibição do SO e o hardware de exibição.

O ritmo correto elimina artefatos visuais conhecidos como rasgos, otimiza o consumo de energia pela sincronização entre as atualizações da tela e a apresentação de frames, além de eliminar as instabilidades ao estabilizar o frame rate. Para saber mais sobre a importância do ritmo de frames, confira a seção Biblioteca Frame Pacing do AGDK.

Para saber mais sobre como integrar o ritmo de frames ao seu jogo, consulte Integrar a Android Frame Pacing ao renderizador Vulkan.

Processar a orientação do dispositivo com pré-rotação do Vulkan

O manuseio da rotação da superfície fora do aplicativo pode não ser livre. Mesmo em alguns dispositivos mais sofisticados com a unidade de processamento de tela (DPU, na sigla em inglês) dedicada, provavelmente haverá uma penalidade de desempenho mensurável a ser paga, e o impacto dependerá do limite da CPU ou da GPU do aplicativo.

O Vulkan fornece aos desenvolvedores o poder de especificar muito mais informações para os dispositivos sobre o estado de renderização em comparação com o OpenGL. Uma dessas informações é a orientação do dispositivo e a relação dela com a orientação da superfície de renderização. Esse recurso permite implementar a pré-rotação para aproveitar ao máximo o Vulkan no Android.

Para saber mais sobre como processar a rotação de dispositivos de forma eficiente no aplicativo Vulkan, consulte Processar a orientação do dispositivo com a pré-rotação do Vulkan e o aplicativo de demonstração complementar.

Otimizar com precisão reduzida

O formato numérico dos dados gráficos e dos cálculos de shader pode ter um impacto significativo no desempenho do jogo. A maioria dos cálculos e dados em gráficos 3D modernos usa números de ponto flutuante. O Vulkan no Android usa números de ponto flutuante com 32 ou 16 bits de tamanho. Um número de ponto flutuante de 32 bits é chamado de precisão única ou precisão total. Embora o tipo de ponto flutuante de 64 bits seja definido no Vulkan, ele não é comumente compatível e o uso não é recomendado.

Confira Otimizar com precisão reduzida para ver informações sobre como otimizar seu aplicativo Vulkan para ter o melhor desempenho em sua aritmética.