Vulkan (Português)
De acordo com a Wikipédia:
- Vulkan é uma API de computação e gráficos 3D multiplataforma e de baixo overhead anunciada inicialmente na GDC 2015 pela Khronos Group.
Saiba mais no website da Vulkan.
Instalação
Para executar um aplicativo Vulkan, você precisará instalar o pacote vulkan-icd-loader (e o lib32-vulkan-icd-loader do repositório multilib se você também deseja executar aplicativos de 32 bits), bem como os drivers Vulkan para sua(s) placa(s) gráfica(s). Existem diversos pacotes que provêm um vulkan-driver ou um lib32-vulkan-driver:
- AMD: vulkan-radeon (ou lib32-vulkan-radeon)
- Intel: vulkan-intel (ou lib32-vulkan-intel)
-
NVIDIA: existem duas implementações:
- nvidia-utils (ou lib32-nvidia-utils) - driver proprietário da NVIDIA
-
vulkan-nouveau (ou lib32-vulkan-nouveau) - NVK (parte do projeto Mesa) Note Habilitar o driver NVK requer configurações adicionais do sistema, veja Nouveau#Using the Mesa NVK Vulkan Driver para mais detalhes.
Os drivers a seguir são rasterizadores em software, que podem ser utilizados em dispositivos sem suporte a Vulkan.
- Lavapipe: vulkan-swrast (ou lib32-vulkan-swrast)
- SwiftShader: swiftshader-gitAUR
Para o desenvolvimento de aplicativos Vulkan, instale o pacote vulkan-headers, e opcionalmente os pacotes vulkan-validation-layers, vulkan-man-pagesAUR e vulkan-tools (você pode encontrar as ferramentas vulkaninfo e vkcube aqui).
Verificação
Para ver quais implementações Vulkan estão instaladas atualmente em seu sistema, use o seguinte comando:
$ ls /usr/share/vulkan/icd.d/
Para garantir que Vulkan está funcionando com seu hardware, instale o pacote vulkan-tools e use o comando vulkaninfo para obter informações relevantes sobre o seu sistema. Se você obtiver informações sobre sua placa gráfica, saberá que o Vulkan está funcionando.
$ vulkaninfo
Selecionando
Selecionando entre dispositivos
Em sistemas com múltiplas GPUs pode ser necessário forçar o uso de uma GPU específica. O pacote vulkan-mesa-implicit-layers é necessário para que isso funcione. Definindo MESA_VK_DEVICE_SELECT como ID da marca:ID do dispositivo permite a escolha da GPU desejada.
Para listar os candidatos, execute:
$ MESA_VK_DEVICE_SELECT=list vulkaninfo
Adicionando ! ao final do valor especificado força o uso do dispositivo escolhido. Leia Vulkan mesa device select layer environment variables para mais informações.
Renderização em software
Você pode instalar o rasterizador Vulkan em software conhecido como lavapipe para, por exemplo, depurar problemas de hardware: vulkan-swrast (ou lib32-vulkan-swrast para aplicativos de 32 bits).
O exemplo a seguir mostra a execução da ferramenta vulkaninfo com as variáveis de ambiente necessárias para forçar a renderização completa em software para Vulkan e OpenGL (com __GLX_VENDOR_LIBRARY_NAME=mesa garantindo que o comando também funciona para usuários PRIME):
$ LIBGL_ALWAYS_SOFTWARE=1 __GLX_VENDOR_LIBRARY_NAME=mesa VK_DRIVER_FILES=/usr/share/vulkan/icd.d/lvp_icd.json vulkaninfo
Vulkan Hardware Database
O Vulkan Hardware Database fornece combinações de GPU/driver relatadas pelo usuário. Fornecer informações próprias é possível usando vulkan-caps-viewer-waylandAUR ou vulkan-caps-viewer-x11AUR. .
Solução de problemas
Nvidia - vulkan não está funcionando e não pode inicializar
Variáveis de ambiente
Variáveis de ambiente inválidas ou contraditórias podem fazer com que a Vulkan falhe, e valores inapropriados podem resultar no uso de uma GPU diferente da esperada em máquinas com múltiplas GPUs. Definir as variáveis corretamente também pode ajudar a manter uma GPU secundária desligada quando não estiver sendo utilizada.
Verifique se você tem qualquer outro driver vulkan instalado, isso pode impedir que o driver Vulkan da Nvidia seja detectado.
Alternativamente, defina a variável de ambiente VK_DRIVER_FILES como /usr/share/vulkan/icd.d/nvidia_icd.json.
GSP firmware
Veja NVIDIA/Troubleshooting#GSP firmware.
Nenhum dispositivo para a GPU de exibição encontrado. Os drivers intel-mesa estão instalados?
Tente listar as configurações intel_icd e primus_vk_wrapper em VK_DRIVER_FILES
export VK_DRIVER_FILES=/usr/share/vulkan/icd.d/intel_icd.json:/usr/share/vulkan/icd.d/nv_vulkan_wrapper.json
AMDGPU - ERROR_INITIALIZATION_FAILED após vulkaninfo
Se estiver executando vulkaninfo em uma placa AMD das famílias GCN1 ou GCN2 e encontrar uma mensagem de erro como:
ERROR at /build/vulkan-tools/src/Vulkan-Tools-1.2.135/vulkaninfo/vulkaninfo.h:240:vkEnumerateInstanceExtensionProperties failed with ERROR_INITIALIZATION_FAILED
Cheque se você habilitou o suporte para este modelo de placa de vídeo corretamente (AMDGPU#Enable Southern Islands (SI) and Sea Islands (CIK) support).
Uma possibilidade para checar se os drivers da GPU foram carregados corretamente é executar lspci -k e checar o driver do kernel para a sua GPU. O driver deve ser amdgpu.
$ lspci -k
... 01:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Curacao PRO [Radeon R7 370 / R9 270/370 OEM] Subsystem: Gigabyte Technology Co., Ltd Device 226c Kernel driver in use: amdgpu Kernel modules: radeon, amdgpu ...
Algumas postagens no fórum sobre este problema: [3] [4]
AMDGPU - Aplicativos Vulkan abrindo com lentidão
Se você instalar o pacote cuda, pode se deparar com aplicativos Vulkan, como por exmeplo Chromium, abrindo com lentidão. Isto acontece porque o pacote nvidia-utils provém um driver Vulkan e a API Vulkan tenta carregar os drivers da NVIDIA antes dos drivers Radeon. Para resolver isto, define a variável de ambiente VK_DRIVER_FILES como /usr/share/vulkan/icd.d/radeon_icd.json.