D8VK, uma implementação Direct3D 8 para DXVK

D8VK

D8VK é uma implementação do Direct3D 8 que permite executar aplicativos 3D no Linux usando o Wine.

Alguns dias atrĆ”s foi anunciado o lanƧamento da primeira versĆ£o estĆ”vel do projeto ā€œD8VK 1.0ā€, que oferece um Implementação da API de grĆ”ficos Direct3D 8 que funciona atravĆ©s da tradução de chamadas API Vulkan e permite que vocĆŖ use Wine ou Proton para executar aplicativos 3D e jogos desenvolvidos para Windows no Linux que estĆ£o vinculados Ć  API Direct3D 8.

Como muitos de vocês sabem, no Linux temos o VKD3D-Proton para a tradução do Direct3D 12 no Vulkan, além disso também temos o Steam Play que usa o DXVK para implementar as APIs do Direct3D 9/10/11 no Vulkan, mas para o antigo implementação do Direct3D 8, não havia nada de concreto.

Ɖ por isso que nasceu o D8VK, que Ć© a implementação da antiga API Microsoft Direct3D 8 sobre Vulkan para melhorar a experiĆŖncia de jogos mais antigos.

D8VK 1.0 é marcado como o primeiro lançamento do projeto, adequado para uso e testado em centenas de jogos. Comparado aos projetos WineD3D e d3d8to9, que usam a tradução Direct3D 8 para OpenGL e Direct3D 9, o projeto D8VK demonstra melhor desempenho, estabilidade e compatibilidade com jogos.

Por exemplo, quando testado no pacote 3DMark 2001 SE, o projeto D8VK obteve 144660 pontos, a combinação de d3d8to9 e dxvk – 118033 e WineD3D – 97134.

O lanƧamento de D8VK 1.0 apresenta d3d8.dll(d3d9 estƔ vinculado estaticamente), bem como um novo processador de lote personalizado para certos jogos com comportamento indefinido.

Além disso, destaca-se também que suporta a substituição da declaração do sombreador de vértice para jogos com comportamento indefinido e que os buffers de vértice agora podem ser armazenados no pool autogerenciado para melhorar o desempenho e evitar problemas de ordem de gravação.

Também é observado que o suporte de compilação é implementado no MSVC, bem como o suporte para consultas GetInfo e os tipos de bloco de status agora são suportados.

Dos demais mudanƧas que se destacam:

  • Tamanhos de descrição de superfĆ­cie corretos com base no formato
  • Permitir preservar a instalação atual do Proton
  • InĆŗmeras configuraƧƵes especĆ­ficas do jogo e recursos e ajustes menores
  • Corrigido um bug em que CreateTexture tentava envolver uma textura nula
  • Backbuffers corrigidos nĆ£o sendo armazenados em cache ou referenciados ao dispositivo proprietĆ”rio
  • Texturas corrigidas, fluxos e Ć­ndices nĆ£o sendo limpos na reinicialização
  • Localização fixa de Direct3DCreate8 em d3d8.def
  • Contagem de referĆŖncia fixa para destinos de renderização, modelos de profundidade e texturas.
  • Corrigidos sombreadores de pixel nulos nĆ£o sendo lembrados
  • Alvos de renderização corrigidos e modelos de profundidade nĆ£o sendo armazenados em cache
  • Corrigido o erro se o cliente tentasse habilitar o SWVP em um dispositivo de hardware
  • Dispositivos corrigidos sem jailbreak
  • Segfault corrigido na liberação do dispositivo com texturas vinculadas

Por fim, se vocĆŖ tiver interesse em saber mais sobre o assunto, pode consultar os detalhes no link a seguir.

Você deve saber que o código do projeto é escrito em linguagem C++ e é distribuído sob a licença Zlib. A base de código do projeto DXVK com a implementação do Direct3D 9, 10 e 11 em cima do Vulkan foi usada como base para o desenvolvimento.

Como instalar o D8VK no Linux?

Para quem tem interesse em poder instalar o D8VK, deve saber que sua implementação é bastante simples e não exige muito. Basta abrir um terminal para poder obter a nova versão. Nele vamos digitar o seguinte comando:

git clone https://github.com/AlpyneDreams/d8vk.git

Ou se preferir baixar do seu navegador (basta descompactar o arquivo e se posicionar em um terminal dentro da pasta) pode fazer clicando em neste link

Feito isso, agora vamos entrar no diretório com:

cd d8vk

E passamos a realizar a implementação do d8vk conforme o caso. Para implementÔ-lo com o Wine, devemos digitar o seguinte:

./setup_d3d8.sh install --no-proton

Ou no caso de querer implementar com Proton, o comando que deve ser digitado Ć© o seguinte:

./setup_d3d8.sh install

Se pretender saber mais sobre a sua utilização ou instalação em casos particulares, pode consultar o seguinte link.