Começar a usar a Vulkan

Este documento descreve como começar a usar a biblioteca de gráficos Vulkan, com o download, a compilação e a execução de um app de exemplo Khronos©.

Pré-requisitos

Antes de começar, verifique se você tem o hardware e a versão de plataforma corretos. Use um dispositivo ou um emulador com Android 7.0 (Nougat), API de nível 24 ou versões mais recentes e que tenha suporte à Vulkan.

Para confirmar sua versão do Android, acesse o menu Configurações e selecione Sobre o dispositivo > Versão do Android. Depois de confirmar que tem você está usando o hardware e a versão de plataforma corretos, faça o download do software necessário.

Fazer o download

Antes de começar, você precisa fazer o download de diversas ferramentas e outros softwares. Em um host do Windows, é recomendável evitar uma hierarquia de caminho de arquivo profunda para as ferramentas e o código-fonte. O objetivo é contornar os limites de caminho de arquivo em algumas versões do sistema operacional Windows.

  1. Se você ainda não tem o Android Studio, faça o download dele. Isso inclui o SDK mais recente do Android.
  2. Instale o NDK e o CMake pelo Android Studio ou faça o download e a instalação separadamente.
  3. Crie e execute o exemplo Hello JNI (link em inglês) para garantir que o Android Studio está funcionando corretamente.
  4. Instale o python3 e os outros componentes listados em build.md (link em inglês) para sua plataforma de host.

Importar

Nesta seção, você vai fazer o download do repositório de exemplos do Khronos© e da Vulkan© (link em inglês), criar um projeto Android para Gradle e abrir esse projeto com o ambiente de desenvolvimento integrado do Android Studio.

  1. Configure as variáveis de ambiente a seguir:
    export ANDROID_HOME=/path/to/sdk-directory
    export ANDROID_NDK_HOME=$ANDROID_HOME/ndk/{your-ndk-version-dir}
    
  2. Adicione o CMake ao $PATH, que é usado para gerar scripts de build do Android:
    export PATH=$PATH:$ANDROID_HOME/cmake/{your-cmake-version}/bin
    
  3. Abra um terminal e faça o download do código-fonte para o diretório de desenvolvimento:
    cd dev-directory
    git clone --recursive https://github.com/KhronosGroup/Vulkan-Samples.git
    
  4. Siga estas instruções, disponíveis na página em inglês do Build.md, para gerar o projeto Android de exemplo:
    cd Vulkan-Samples
    ./scripts/generate.py android
    
  5. Abra o Android Studio. Escolha File > Open e selecione Vulkan-Samples/build/android_gradle/build.gradle. Depois que o Android Studio carregar o projeto, você verá uma tela como esta:
    Importação do projeto de exemplo para o Studio.

    Figura 1. Projeto de exemplo no Android Studio.

Compilar

Todos os exemplos neste repositório ficam organizados em um projeto Android. Para compilar o projeto, siga uma destas instruções:

  • Para compilar as origens, use o menu Build > Make Project ou use as teclas de atalho Ctrl + F9.
  • Para gerar o APK de exemplo, selecione o menu Build > Build Bundle(s)/APK(s) > Build APK(s).

A mensagem de êxito do build será mostrada na janela Build do Android Studio. Se algum erro aparecer, corrija e faça a compilação novamente.

Compilação de um projeto de exemplo no Studio.

Figura 2. Build de exemplo compilado corretamente.

Executar

Antes de executar o projeto de exemplo, verifique se o Android Studio reconhece o dispositivo Vulkan conectado ou o Android Emulator. Você verá uma tela como esta:

Conectando o dispositivo de teste ao Studio.

Figura 3. Conexão do dispositivo de teste ao Android Studio.

Para executar o projeto, faça o seguinte:

  1. Use o menu Run > Run vulkan_sample ou clique no botão de execução na barra de ferramentas e aguarde até que o exemplo seja instalado e iniciado no dispositivo conectado.
  2. No dispositivo Android conectado, autorize as solicitações de acesso necessárias.
    • Ative a opção Acesso para gerenciar todos os arquivos e toque no botão "Voltar" para retornar à tela inicial do exemplo.
    • Permita o acesso ao disco.
      Permissão de acesso ao disco.

      Figura 4. Permissão de acesso ao disco.

  3. A tela do menu principal de exemplos será mostrada, como na imagem abaixo:
    Menu principal de exemplos.

    Figura 5. Menu principal de exemplos.

  4. Navegue pela lista de exemplos e selecione algumas opções para execução. Se você não tem experiência no desenvolvimento com Vulkan, comece com os da guia "API". Por exemplo, ao tocar em "Hello Triangle", um triângulo renderizado será mostrado, como o seguinte:
    Triângulo

    Figura 6. Exemplo Hello Triange.

Agora, o sistema de desenvolvimento está configurado para executar exemplos no seu dispositivo de teste.

Os exemplos da Vulkan são desenvolvidos para vários sistemas operacionais, incluindo sistemas de computadores e dispositivos móveis. Alguns exemplos nas categorias Performance, Extensions e Tooling podem apresentar instabilidade e travar no dispositivo. Isso pode acontecer por vários motivos, como os seguintes:

  • Alguns recursos específicos da Vulkan não foram projetados para Android.
  • Não há suporte para a versão do SO Android usada.
  • A capacidade de GPU da plataforma de hardware.

Analisar

A seção Java do exemplo Vulkan é derivada da classe NativeActivity. Ela transmite ao código C/C++ eventos de ciclo de vida típicos do app, como criação, início, parada e destruição. Na seção C/C++ do exemplo, há um framework que implementa a funcionalidade de alternância do subexemplo de ambiente de execução. Em um nível muito alto, os eventos ou as mensagens do sistema Android passam pelo seguinte caminho para alcançar o código Vulkan do app de exemplo:

  • Seção NativeSampleActivity do Java
  • Seção NativeSampleActivity do C/C++
  • Código android_native_glue
  • android_main
  • Framework do exemplo
  • Código do subexemplo individual

android_main é a ponte entre a NativeSampleActivity e o código do app, que pode ser o ponto de partida para você acompanhar o código de exemplo. Caso prefira se concentrar apenas em origens específicas da Vulkan, você pode analisar o código em Vulkan_Samples\samples, que contém o seguinte:

  • Exemplos da categoria "API"
  • Exemplos da categoria "Performance"
  • Exemplos da categoria "Extensions"
  • Exemplos da categoria "Tooling"

Todos os sombreadores se encontram em Vulkan_Samples\shaders.

Você pode começar a navegar pelos exemplos da categoria "API" para se familiarizar com o uso básico da Vulkan e o framework de exemplo. Depois, você pode passar para as categorias "Performance" e "Extenstions". Para o código do sombreador, você pode usar a visualização Project no Android Studio.

Sombreador triangular.

Figura 7. Análise do sombreador com o Studio.

Outros recursos

Existem algumas versões diferentes da API Vulkan, o que significa que ela está em desenvolvimento. O comitê de padrões e a comunidade da Vulkan criaram um extenso conjunto de materiais sobre essa API, que demonstram o uso e as práticas recomendadas. A lista a seguir contém alguns recursos para o desenvolvimento de aplicativos com a Vulkan: