Lançamento do D9VK 0.40, implementação do Direct3D 9 sobre o Vulkan.

Aconteceu lançamento do projeto D9VK 0.40, que fornece a implementação do Direct3D 9, funcionando através da tradução de chamadas na API gráfica Vulkan. O projeto é baseado na base de código do projeto DXVK, que foi ampliada com suporte ao Direct3D 9. Comparado com a implementação do Direct3D 9 baseada no WineD3D, o D9VK permite alcançar um desempenho mais elevado, pois a tradução do Direct3D 9 através do OpenGL é mais lenta do que a tradução através do Vulkan.

D9VK pode ser usado para executar aplicações e jogos 3D no Linux usando o Wine. Suporta a execução da maioria dos jogos baseados no Direct3D 9, que utilizam a versão 2 ou 3 do Shader Model. O código do projeto é distribuído é licenciado sob a licença Zlib. Para usar o D9VK, é necessário ter drivers com suporte à API Vulkan, como AMD RADV 18.3+, NVIDIA 415.22+, Intel ANV 19.0+ e AMDVLK.

Principais melhorias:

  • Foi implementada a possibilidade de usar mais de 4 GB de memória de vídeo em aplicações de 32 bits, o que resolveu problemas ao executar mods nos jogos Skyrim e Oblivion;
  • Foi incluído o processamento assíncrono da saída do resultado da renderização na tela (etapa de apresentação). Para reduzir latências no fluxo principal de renderização, o processamento da saída é realizado na thread de submissão de comandos;
  • Foram removidos pontos de sincronização desnecessários da thread de comando ao extrair dados solicitados;
  • O código para determinar o tempo interno foi alterado para usar um timer específico da plataforma, o que ajudou a resolver problemas com o comportamento incorreto do high_resolution_clock do MinGW;
  • Foi assegurada a liberação de buffers adiados MANAGED e SYSTEMMEM na fase de execução do PrepareDraw, o que resolveu problemas de desempenho em jogos como Risen e Legend of the Heroes: Trails of the Sky;
  • Suporte adicionado D3DTA_CONSTANT, que possibilitou a implementação correta da renderização do efeito de brilho em jogos como SpinTyres e Mudrunner;
  • Foi melhorada a compatibilidade com DirectX 9Ex (D3D9Ex). Levou-se em conta a especificidade do tratamento de ResetEx e Reset;
  • Foram realizados limpeza e refatoração do código;
  • Foi assegurado o mapeamento direto dos buffers WRITEONLY, o que pode impactar positivamente o desempenho e contornar um erro no jogo
    Counter-Strike: Global Offensive, que leva à continuação da gravação no buffer após sua liberação;
  • Implementado o método SetDialogBoxMode, permitindo o uso de caixas de diálogo em aplicações em tela cheia;
  • Suporte implementado mistura de vértices, incluindo mistura indexada de vértices, necessário para SWVP (SoftWare Vertex Processing);
  • O contador do sampler foi refeito, exibindo-se sobre a imagem atual (heads-up display, HUD);
  • Adicionada a opção d3d9.dialogBoxMode, que pode ser usada para desativar o funcionamento apenas no modo de tela cheia;
  • Foram feitas otimizações de desempenho e resolvidos problemas que se manifestavam ao jogar GTA: San Andreas, The Masquerade Bloodlines, Max Payne 2, The Sims 2, Silent Hunter 3, Senran Kagura Shinovi, Dungeons and Dragons, Crysis, Metal Slug X, ANGLE, Need for Speed: Carbon e Risen 1.

Adicionalmente, pode-se destacar intenção desenvolvedor do projeto DXVK (implementação de DXGI, Direct3D 10 e Direct3D 11 sobre a API Vulkan) se concentrar temporariamente apenas na correção de erros, retardando a expansão da funcionalidade. Tal desejo é causado por preocupações sobre a redução da qualidade da base de código e a dificuldade de manutenção no futuro. Cada atualização da versão 1.4.x gera reclamações sobre mudanças regressivas que não podem ser reproduzidas, localizadas e corrigidas.

Esses problemas exigem análise das causas de sua ocorrência, caso contrário, deixar as falhas não corrigidas enquanto a funcionalidade continua a ser expandida pode apenas agravar a situação e transformar o processo de manutenção em um pesadelo. Entre os planos que o desenvolvedor do DXVK pretende implementar antes de passar para o modo de correção de erros, está a adição de suporte a algumas extensões úteis do Vulkan e a fusão com os desenvolvimentos do projeto D9VK.

Adendo: em andamento formado lançamento corretivo do D9VK 0.40.1, no qual foi corrigido o valor padrão de COLOR0 nos shaders de vértice para vec4(1) e corrigido um erro que fazia com que os bits dos slots para saídas do shader fossem aplicados incorretamente por padrão e, portanto, corrigidos de maneira inadequada pelo backend, levando à sua substituição por vec4(0).

Fonte: opennet.ru

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster