DXVK 2.7: Suporte aprimorado, gerenciamento de descritores otimizado e desfragmentação

DXVK-1

Há poucos dias foi anunciado Lançamento da nova versão do DXVK 2.7, a qual apresenta melhorias para Vulkan tanto em extensões quanto em drivers, bem como melhorias no gerenciamento de VRAM, correções de compatibilidade e muito mais.

Para quem não conhece o DXVK, saiba que pode ser usado para executar aplicativos 3D e jogos no Linux usando Wine, atuando como uma alternativa de alto desempenho à implementação do Direct3D 11 baseada em Wine, executada sobre OpenGL. Em alguns jogos, o desempenho do pacote Wine + DXVK difere da versão para Windows em apenas 10–20%, enquanto ao usar a implementação do Direct3D 11 baseada em OpenGL, o desempenho cai significativamente.

Principais novos recursos do DXVK 2.7

Uma das principais mudanças no DXVK 2.7 é o definindo a extensão VK_KHR_maintenance5 como um requisito obrigatório. Isso implica que Os drivers devem oferecer suporte total ao Vulkan 1.3. Como resultado, O DXVK não funcionará mais com versões mais antigas do driver. O Mesa 25.0 é necessário para GPUs AMD e Intel (RADV e ANV) ou drivers NVIDIA 550.54.14.

Esta mudança Ela afeta especialmente usuários do Windows com placas de vídeo AMD Polaris e Vega., que não são mais oficialmente suportados pela AMD. A partir desta versão, o DXVK assume que o uso da plataforma Windows com drivers AMD é por sua conta e risco.

Outro novo recurso do DXVK 2.7 é o modernização do sistema descritor de sombreamento. Ligado com GPU AMD ou NVIDIA, DXVK habilita a extensão VK_EXT_descriptor_buffer por padrão, uma tecnologia que reduz drasticamente o trabalho que a CPU precisa fazer para gerenciar os recursos gráficos. Essa melhoria se traduz em um aumento tangível de desempenho em jogos exigentesparticularmente em sistemas onde a CPU era o gargaloPara aqueles que preferem desabilitar essa otimização, a opção dxvk.enableDescriptorBuffer está incluída.

DXVK 2.7 Também melhora o uso da memória, em placas Intel Battlemage e Lunar Lake, um recurso de desfragmentação de memória foi habilitado Isso reduz o pico de uso de RAM durante sessões prolongadas de jogo, devolvendo mais recursos ao sistema operacional. Este recurso pode ser controlado usando a opção dxvk.enableMemoryDefrag.

Além disso, em GPUs dedicadas, o DXVK agora aplicará o limite de VRAM informado pelo driver o máximo possível, permitindo uma liberação mais eficiente de recursos não utilizados. Isso resulta em uma jogabilidade mais fluida para jogos como os desenvolvidos com Unity, especialmente em máquinas com memória de vídeo limitada.

Limpeza de código e melhorias direcionadas

Como parte de um esforço para manter um código mais limpo e moderno, recursos obsoletos foram removidos como a opção d3d9.forceSwapchainMSAA e o cache de estado legado, que se tornou obsoleto após a adoção da extensão VK_EXT_graphics_pipeline_library.

Também Otimizações específicas foram incorporadas para melhorar a estabilidade e o desempenho de jogos baseados no mecanismo Source, bem como inicialização mais segura de shaders no Direct3D 11 graças ao preenchimento automático de buffers e variáveis.

Sobre correções de bugs e melhorias:

  • Adicionado suporte para visualizações de saída de vídeo planas.
  • Os shaders D3D11 agora inicializarão com zero todas as variáveis ​​e memória compartilhada em grupos por padrão, para evitar bugs do jogo que causam comportamento indefinido.
  • Otimizou o uso de StretchRect no D3D9 em certos casos de resolução de múltiplas amostras encontrados no Source Engine.
  • Corrigiu um uso inválido do Vulkan no Modulus e possivelmente em outros jogos do Unity Engine que usam a API de vídeo D3D11.
  • O suporte para a interface ID3DDestructionNotifier foi implementado.
  • Dispositivos Vulkan que não possuem os recursos necessários para executar DXVK não serão mais listados como adaptadores DXGI/D3D9.
  • Agora, tentar compilar o DXVK em um ambiente MinGW com o AVX habilitado resultará em um erro de tempo de compilação.

Como adicionar suporte DXVK?

A instalação do DXVK no Linux pode variar um pouco dependendo da distribuição e se você está usando Wine, Proton ou Lutris, mas aqui está um guia para os casos mais comuns.

Instalando o DXVK com o Wine

Você pode baixar o DXVK na página oficial do GitHub. Baixe o arquivo .tar.gz mais recente (neste caso, a versão 2.7).

wget https://github.com/doitsujin/dxvk/releases/download/v2.7/dxvk-2.7.tar.gz

Depois de ter feito o download agora vamos descompactar o pacote que acabamos de obter, isso pode ser feito a partir do seu ambiente de trabalho ou do próprio terminal executando o seguinte comando:

tar -xvf dxvk-2.7.tar.gz cd dxvk-2.7.tar.gz

Instale o DXVK no seu prefixo Wine

Supondo que você esteja usando um prefixo Wine em ~/.wine:

exportar WINEPREFIX=~/.wine ./setup_dxvk.sh instalar

Isso copiará os arquivos DLL necessários (d3d9.dll, d3d10.dll, d3d11.dll, dxgi.dll) para as pastas system32 e syswow64 dentro do seu prefixo.

Instalação com Lutris (mais fácil)

Abra o Lutris e selecione seu jogo:

  1. Clique com o botão direito > Configurar > guia Opções do Runner.
  2. Marque a caixa “Ativar DXVK”.
  3. Você pode escolher sua versão DXVK preferida a partir daí.
  4. Salve as alterações e execute o jogo.

Instalação no Steam (usando Proton)

Se você usa o Steam Play (Proton):

  1. Ative o Steam Play para todos os títulos em:
  2. Steam > Configurações > Compatibilidade > Forçar Steam Play.
  3. Você pode substituir a versão do DXVK incluída no Proton por uma personalizada (não recomendado, a menos que você saiba o que está fazendo).
  4. Ou simplesmente deixe o Proton gerenciar o DXVK automaticamente – ele vem integrado por padrão.

Verifique se o DXVK está funcionando

Para verificar se o DXVK está ativo, você pode iniciar um jogo e verificar a pasta em que ele está sendo executado. Se você vir arquivos como d3d11.log ou dxgi.log, o DXVK está sendo executado corretamente.

Você também pode usar ferramentas como o DXVK HUD para exibir estatísticas na tela:

exportar DXVK_HUD=1

Defina esta variável antes de executar o jogo com Wine ou Lutris.