Configuração da Vulkan

Este documento explica como começar a usar a biblioteca de gráficos Vulkan, abordando o download, a compilação e a execução de diversos apps de amostra.

Antes de começar, verifique se você tem o hardware e a versão de plataforma corretos. Você precisa usar um dispositivo que seja compatível com Vulkan e que execute a API do Android nível 24 ou mais recente.

Você pode confirmar sua versão do Android acessando o menu Config. e selecionando Sobre o <dispositivo> > Versão do Android. Depois de confirmar que você tem 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 disso é 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 pelo Android Studio ou faça o download dele manualmente.

Importar

Nesta seção, você fará o download do repositório LunarG Vulkan ©, gerará projetos do Android Studio para amostras de API e, em seguida, importará esses projetos para o ambiente de desenvolvimento integrado:

  1. 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/LunarG/VulkanSamples.git
    
  2. Siga as instruções em Criar no Android para gerar os projetos de amostra para Android:

    cd VulkanSamples/API-Samples
    cmake -DANDROID=ON -DABI_NAME=abi
    cd android
    python3 compile_shaders.py
    

    As ABIs compatíveis incluem:

    • armeabi-v7a
    • arm64-v8a
    • x86
    • x86_64
  3. Defina as variáveis de ambiente para especificar o caminho para o Android NDK e o SDK:

    export ANDROID_SDK_ROOT=/path/to/sdk-directory
    export ANDROID_NDK_HOME=/path/to/ndk-directory
    

    A versão atual do targetSdk para as amostras é 26. Portanto, talvez seja necessário atualizar suas ferramentas com o SDK Manager.

  4. Abra o Android Studio. Escolha File > Open e selecione VulkanSamples/API-Samples/android/build.gradle.

O painel Project se parece com a janela mostrada na Figura 1.

Painel Project depois de importar amostras para o Android Studio

Figura 1. Painel Project exibindo amostras depois da importação.

Compilar

É possível compilar seu projeto no Android Studio ou na linha de comando.

Android Studio

  1. Selecione File > Project Structure. Selecione SDK Location e verifique se os locais do SDK e do NDK estão definidos.
  2. Selecione seu projeto no painel Project do Android Studio.
  3. No menu Build, escolha Make Module <module-name> ou selecione Build APK para gerar o APK.
  4. Resolva eventuais problemas de dependência e compile. Como exibido na Figura 2, você pode escolher projetos individuais para compilar selecionando-os no menu suspenso de configuração.
  5. Seleção do projeto de cubo de desenhos no menu suspenso de configuração

    Figura 2. Seleção de um projeto individual para compilar.

Linha de comando

Use os seguintes comandos para criar os projetos na linha de comando. Você precisa estar no diretório VulkanSamples/API-Samples/android:

./gradlew build

Executar

Para executar seu projeto, escolha um APK para execução selecionando Run > Run <nome do projeto>.

Para depurar um APK, escolha Run > Debug <nome do projeto>. Por exemplo, para o cubo de desenhos, execute 15-draw_cube.

A maioria das amostras tem funcionamento simples para demonstrar a forma de usar uma API específica, e a maioria é interrompida automaticamente após a execução. O exemplo do cubo de desenhos é um dos mais interessantes visualmente. Ao executá-lo, ele deve exibir a imagem da Figura 3

. Execução bem-sucedida exibe um cubo multicolorido

Figura 3. O programa compilado executa e produz uma tela.

Usar o carregador dinâmico

As amostras usam uma função auxiliar de carregador dinâmico definida em vulkan_wrapper.h/cpp para recuperar ponteiros da API Vulkan dlopen() e dlsym(). Isso é feito em vez da vinculação estática com vulkan.so.

Usar esse carregador permite que o código se vincule à API de nível 23 e a versões anteriores da plataforma. Essas versões anteriores não incluem a biblioteca compartilhada vulkan.so, mas podem ser executadas em dispositivos compatíveis com a API Vulkan.

O snippet a seguir mostra como usar o carregador dinâmico.

#include "vulkan_wrapper.h" // Include Vulkan_wrapper and dynamically load symbols.
...
// Before any Vulkan API usage,
InitVulkan();

Outros recursos

  • Especificação da Vulkan

    O Grupo Khronos mantém a especificação da Vulkan. Consulte a página inicial da Vulkan (link em inglês) para ver a especificação completa, o treinamento e os tutoriais.

  • Shaderc

    O código Shaderc no NDK está descendente em relação ao repositório Shaderc (link em inglês). Caso você precise do Shaderc mais recente, consulte Compiladores do Shaderc.