Vulkan

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.

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

vulkan_pipeline_block_diagram.png

Carregador Vulkan

high_level_loader.png?raw=true

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

vulkan_sync.png

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

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-Share Alike 2.5 License.