DXVK: Tradução de Direct3D para Vulkan
DXVK: Tradução de Direct3D para Vulkan
Introdução
O DXVK é uma camada de tradução gráfica que converte chamadas da API gráfica Microsoft Direct3D 9, 10 e 11 para a API Vulkan. Desenvolvido originalmente para melhorar a compatibilidade de jogos Windows no Linux via Wine, o DXVK tornou-se um componente central do Proton, framework da Valve para execução de jogos Windows no Steam Deck e em distribuições Linux.
Funcionamento Técnico
O DXVK atua interceptando chamadas Direct3D e mapeando-as para instruções equivalentes em Vulkan. Essa conversão é feita em tempo real (just-in-time), permitindo que aplicações projetadas para Direct3D operem sobre drivers Vulkan nativos do sistema operacional.
Arquitetura
A arquitetura do DXVK pode ser dividida em três camadas principais:
- Interfacing D3D: implementações substitutas de
d3d9.dll
,d3d10.dll
ed3d11.dll
são fornecidas para interceptar chamadas de renderização. - Tradutor para Vulkan: o núcleo do DXVK interpreta os comandos Direct3D e os converte para chamadas Vulkan otimizadas.
- Driver Vulkan: o resultado é repassado ao driver Vulkan do sistema operacional, que executa as instruções na GPU.
Requisitos
- Sistema com suporte a Vulkan 1.1 ou superior.
- Wine ou Proton configurado com DXVK habilitado.
- Drivers atualizados para GPU (NVIDIA, AMD ou Intel com suporte a Vulkan).
Casos de Uso
Linux Gaming com Proton
DXVK é a espinha dorsal do Proton, permitindo que jogos Windows modernos baseados em Direct3D 11 sejam jogáveis em Linux com desempenho próximo ao nativo. Exemplo:
- The Witcher 3, que usa Direct3D 11, é executado via Proton com DXVK com desempenho competitivo em GPUs modernas.
Compatibilidade com Jogos Antigos
A extensão do suporte ao Direct3D 9 amplia a jogabilidade de títulos mais antigos sem exigir wrappers baseados em OpenGL, que costumam ser menos eficientes.
Vantagens
- Desempenho elevado: o uso do Vulkan garante melhor paralelismo e uso eficiente da GPU.
- Compatibilidade ampla: suporta uma grande variedade de jogos D3D9, D3D10 e D3D11.
- Código aberto: o projeto é licenciado sob a zlib/libpng, permitindo contribuições da comunidade.
Desvantagens
- Overhead de tradução: embora pequeno, há um custo computacional na conversão de APIs.
- Falta de suporte para Direct3D 12: o DXVK não cobre D3D12, que requer soluções como vkd3d-proton.
- Depende de suporte sólido ao Vulkan no driver da GPU.
Conclusão
O DXVK é uma solução técnica robusta e madura para execução de jogos Direct3D sobre Vulkan, consolidando-se como um pilar da compatibilidade gráfica entre plataformas. Sua importância no ecossistema Linux, especialmente em conjunto com o Proton, o torna essencial para a viabilidade do gaming fora do Windows.