A versão 3.0 do DXVK foi lançada em 25 de junho de 2024 pelo desenvolvedor doitsujin (Philip Rebohle). O update traz um novo compilador de shaders, adoção padrão da extensão Vulkan VK_EXT_descriptor_heap, aprimoramentos no suporte ao Direct3D 9 e diversas correções de bugs que impactam jogos populares no Linux.
Compilador de shaders baseado em dxbc-spirv
- O DXVK passa a usar o dxbc-spirv para a compilação de shaders, substituindo o antigo tradutor legado para todos os modelos de shader suportados.
- Benefícios:
- Correção de falhas de renderização em títulos como Postal: Brain Damaged e Snowrunner (issues #3488 e Mesa #13251).
- Código SPIR‑V mais compacto, reduzindo o consumo de memória em até 1 GiB em jogos como Overwatch e God of War.
- Compilação totalmente delegada a worker threads, diminuindo tempos de inicialização e stutter em jogos como Days Gone e Final Fantasy XIV.
- Cache de shaders intermediários armazenado em
AppData/Localdo prefixo Wine; caminho configurável viaDXVK_SHADER_CACHE_PATH.
Importante para desenvolvedores: ao modificar o compilador, desative o cache com
DXVK_SHADER_CACHE=0para evitar o carregamento de shaders obsoletos.Nota: fora de casos extremos, o novo compilador não traz ganho de performance geral.
Uso padrão do descriptor heap (VK_EXT_descriptor_heap)
- A extensão VK_EXT_descriptor_heap passa a ser a implementação padrão nos drivers que a suportam, substituindo o modelo baseado em VK_EXT_descriptor_buffer introduzido na 2.7.
- Resultados esperados:
- Desempenho de CPU comparável ao modelo anterior.
- Redução da penalidade de desempenho GPU observada em placas Nvidia.
- Compatibilidade: drivers Nvidia >= 595.84; versões anteriores mantêm o modelo antigo por regressões de performance.
- Mensagem de log indica o uso:
info: Binding model: Descriptor heap.
Melhorias específicas para D3D9
Pipeline de função fixa
- Implementação de ubershaders para o pipeline fixo, com variantes otimizadas compiladas em background. Elimina stutter em jogos como Unreal Tournament 2004 (PR #5192).
Otimizações de upload de buffers
- Buffers agora são enviados sob demanda, limitando memória “in‑flight” e corrigindo falhas de endereço em jogos 32‑bit D3D9. Beneficia títulos sem Resizable BAR, como GTA IV (PR #5350).
Estado de multisampling
- Quando as extensões
VK_EXT_sample_locationseVK_EXT_extended_dynamic_state3estão disponíveis,D3DRS_MULTISAMPLEANTIALIASfunciona corretamente, permitindo rasterização single‑sample em alvos multisampled. Corrige UI em Anno 1701, Men of War Assault Squad e outros.
Outras mudanças relevantes
Recursos compartilhados
- Compatibilidade com a implementação upstream do Wine, dispensando patches específicos do Proton (PR #5257). O caminho legado será mantido temporariamente.
Controle de taxa de quadros
- Variável de ambiente
DXVK_FRAME_RATEfoi removida. Recomenda‑se usar limitadores externos como Gamescope ou MangoHUD. O limitador interno ainda pode ser ativado viadxvk.maxFrameRate = nno arquivo de configuração.
Correções de bugs e otimizações gerais
- Diversas validações Vulkan foram ajustadas.
- Correções de processamento de vértices em D3D8/9 para jogos como Vietcong e The I of the Dragon (PR #5656).
- Ajustes de cálculo de neblina fixa em D3D8/9 (affecting Sea Dogs).
- Uso da extensão
VK_EXT_border_color_swizzlepara formatos de textura D3D9 problemáticos (PR #5390). - Redução de sincronizações GPU desnecessárias, beneficiando passes de renderização independentes e shaders de computação, especialmente em GPUs com
VK_KHR_unified_image_layouts. - A fila de transferência assíncrona é empregada de forma mais agressiva (PR #5713).
- Suporte ao recurso Class Linkage do D3D11, embora ainda não haja jogos conhecidos que o utilizem.
- Otimizações de caminhos D3D9 comuns, reduzindo carga de CPU em Resident Evil 6.
- Redução de uploads de constantes de shader D3D9, diminuindo uso de memória e melhorando desempenho (PR #5686, #5689).
Correções específicas de jogos
- Bioshock Infinite: fim do esgotamento do sampler pool que causava flickering (PR #5376).
- Borderlands 2: correção de grama tremendo com filtragem anisotrópica (PR #5549).
- Colin McRae Rally 3: renderização correta com SilentPatch (PR #5213).
- Fallout New Vegas: resolução de profundidade em mods específicos (PR #5665).
- Insurgency & CS:GO: contorno de bug que removia texturas (PR #5602).
- Max Payne: correção de crash ao usar múltiplos monitores (PR #5221).
- Total War : Pharaoh: solução para flicker no menu principal e problema de desempenho com MSAA (PR #5517).
- Entre outros títulos listados no changelog completo.
Requisitos de driver
A partir desta versão, o DXVK exige suporte às extensões introduzidas no Vulkan 1.4. Em prática, isso significa que drivers capazes de executar Vulkan 1.4 são necessários. Usuários devem garantir que seus drivers não estejam desatualizados por vários anos.
Aviso para GPUs AMD RDNA 1/2 no Windows
- Embora a versão funcione, drivers Windows para RDNA 1/2 não recebem mais atualizações de recursos, permanecem no modelo de binding legado e apresentam quedas de desempenho significativas. Recomenda‑se permanecer na série 2.x do DXVK ou migrar para Linux.
Como obter a versão 3.0
A release está disponível na página oficial do projeto no GitHub: https://github.com/doitsujin/dxvk/releases/tag/v3.0. O pacote inclui arquivos binários, notas de release detalhadas e instruções de instalação para usuários de Wine/Proton.
Para quem já utiliza versões anteriores, recomenda‑se limpar o cache de shaders (DXVK_SHADER_CACHE_PATH) e revisar as configurações de descriptor heap conforme a GPU e driver em uso.
Este artigo foi elaborado com base nas notas de lançamento oficiais do DXVK 3.0, preservando links e referências técnicas relevantes.