Vulkan é o nome da API antes conhecida como GLnext. Basicamente ela é uma API que interage com OpenCL e busca uma maior integração com o hardware, fazendo o programador ser responsável por detalhes como gerência de memória e outros relaiconados em troca da possibilidade de maior eficiência para a execução das tarefas visuais/computacionais executadas pela GPU. Sua inspiração são as APIs mais novas com este mesmo objetivo, como Metal, DirectX 12 e Mantle.
Table of Contents
|
Versão
A versão atual da biblioteca é a 1.3, datada de 2022. Mas boa parte dos dispositivos móveis tem suporte a versões mais antigas.
Pipeline
Carregador Vulkan
Sdks e drivers vulkan de diferentes vendedores
NVIDIA
Link: https://developer.nvidia.com/Vulkan Seção do site da NVidia orientada especificamente para a API Vulkan
AMD
Xxxx
intel
O SDK da Intel no Linux pode ser achado através de pacotes MESA como o mesa-vulkan-drivers.
TODO: ver o que precisa para Wndows
Qualcomm
Xxx
imagination
Xxx
arm
Xxx
LunarG SDK
Sdk para windows e linux. Inclui diversas ferramentas e uma APi runtime do vulkan. Fornece exemplos de código e documentação também
Link: http://lunarg.com/vulkan-sdk/
Começando a mexer com Vulkan
PC (Windows e Linux)
Para começar a mexer em Vulkan para PC há duas coisas necessárias: o SDK Vulkan e um driver da placa de vídeo que suporte Vulkan.
Os drivers que suportam a API Vulkan podem ser achados no próprio site das fabricantes das placas de vídeo.
Após baixar o SDK do Vullkan configure sua IDE para usar o SDK.
O segundo passo é seguir as amostras ou algum tutorial na internet. Um interessante é o contido em: https://gist.github.com/graphitemaster/e162a24e57379af840d4
Após isso basta compilar. Se o driver da tua placa de vídeo suporta Vulkan as amostras irão executar sem problemas (sem reclamações sobre coisas faltando)
Mac OS X
Para desenvolvimento de OSx há o Molten VK. Molten VK é uma API que expõe a interface Vulkan, mas usa por debaixo dos panos a API Metal da Apple
SpirV
SpirV é o novo formato intermediário binário do khronos para representar instruções para o processador. Ele é utilizado na API opencl também. Para o caso do vulkan ele é utilizado como formato de representação dos shaders.
Há uma extensão para VS 2015 para adicionar suporte a SpirV (https://www.saschawillems.de/?p=2158)
Sincronização
Ferramentas
Basemark GPU Vulkan
Benchmark a ser lançado mirando em medir o desempenho de hardware com suporte a Vulkan
VulkanZ
Simples visualizador de capacidades e extensões para Vulkan
Link: http://www.geeks3d.com/20160217/vk-z-0-1-0-simple-vulkan-api-capabilities-and-extensions-viewer/
VulkanCapsViewer
Visualizador de capacidades e extensões Vulkan
Link: https://github.com/SaschaWillems/VulkanCapsViewer
APIs
GL Overlord
Implementação de OpenGL usando Vulkan
Link: https://github.com/g-truc/glo
Livros
Vulkan Programming Guide: The Official Guide to Learning Vulkan (OpenGL) 1st Edition
Os autores deste livro trabalharam na especificação da API Vulkan. O livro cobre diversos tópicos importantes relativos a esta API
Autores:Graham Sellers, John Kessenich
Link: https://www.amazon.com/Vulkan-Programming-Guide-Official-Learning/dp/0134464540/
Links
Bibliotecas e Frameworks
Anvil: Framework feito pela AMD
vkcpp: Bindings c++ para Vulkan
VulkanMemoryAllocator Biblioteca para auxilio na criação de recursos e uso mais eficiente da memória em aplicações Vulkan
VulkanAfterCrash Biblioteca semelhante à NVIDIA Aftermath.
V-EZ - Vulkan Made Easy. Frameworkan Vulkan voltada para profissionais de indústrias como CAD e Visualização.
https://github.com/liblava/liblava Prototipação e educação com Vulkan e C++
https://github.com/GPUOpen-LibrariesAndSDKs/Cauldron Um framework simples para prototipação rápida em Vulkan ou Direct3D 12
Site oficial do padrão
https://www.khronos.org/vulkan/: Site oficial da Vulkan
https://www.khronos.org/registry/vulkan/: Especificação Vulkan
Tutoriais e amostras de código
https://github.com/LunarG/VulkanSamples: Amostras de código Vulkan
https://www.youtube.com/watch?v=wHt5wcxIPcE: Vídeo tutoriais sobre Vulkan (inglês)
https://gist.github.com/graphitemaster/e162a24e57379af840d4: Tutorial Vulkan
https://github.com/googlesamples/android-vulkan-tutorials: Conjunto de amostras para ilustrar Vulkan no Android
http://ogldev.atspace.co.uk/www/tutorial50/tutorial50.html Mais um tutorial Vulkan (ingles)
https://vulkan-tutorial.com/ Tutorial Vulkan (em inglês)
https://software.intel.com/en-us/articles/practical-approach-to-vulkan-preface Introdução dada pela intel de vulkan. No site (em inglês) há mais alguns artigos sobre a API
Apresentações
http://www.geeks3d.com/forums/index.php/topic,4861.0.html
Ferramentas
https://github.com/igalia/vkrunner Testador de shaders Vulkan
Gerais
https://developer.nvidia.com/Vulkan: Seção do site da NVidia destinada à Vulkan
https://www.phoronix.com/scan.php?page=news_item&px=Vulkan-Ray-Tracing Links para ray-tracing em Vulkan