Foi lançada uma versão experimental da implementação open-source da Win32 API — Wine 11.17. Desde o lançamento da versão 11.16, 44 relatórios de erros foram fechados e 387 alterações foram feitas.
As alterações mais importantes:
- Foi adicionada a suporte inicial para emulação de modos de tela, permitindo que aplicativos e jogos em tela cheia sejam executados com sua resolução virtual, que ao ser renderizada leva em conta a DPI do monitor presente. Por exemplo, um jogo antigo pode usar a resolução de 640×480, mas ser exibido em uma tela com maior resolução mantendo as proporções.
- Foi adicionada a suportes para as funções RtlGetSystemPreferredUILanguages e RtlGetUserPreferredUILanguages, que obtêm a lista de idiomas preferidos na interface, configurados no registro para todo o sistema e para usuários individuais, sendo gerados por padrão com base nas configurações de localidade. Também foram adicionadas as funções RtlGetProcessPreferredUILanguages, SetProcessPreferredUILanguages, RtlGetSetThreadPreferredUILanguages e SetThreadPreferredUILanguages para determinar e definir a lista de idiomas preferidos em níveis de processos e threads.
- O pacote embutido Vkd3d com a implementação do Direct3D 12 foi atualizado para a versão 2.1.
- Relatórios de erros relacionados ao funcionamento de aplicativos foram fechados: certmgr.exe, Signtools, Advanced SystemCare 6.4, Autodesk 3ds Max 9, SketchUp 2021, Nokia S60 5th Edition SDK 1.0, PDFCreator, SafeDisc v2.05.030, Bigrats, PTC Pro Engineer Wildfire V5, VisualSubSync 1.0.2.1, PS4 Remote Play 2.x, MigrosBank EBanking 8.2.x, Sparda Bank SecureApp 1.x, MSXML 6.0, Sennheiser Wireless Systems Manager 4.4, Netscape Navigator 3.04, xEdit.
- Relatórios de erros relacionados ao funcionamento de jogos foram fechados: GTA: Vice City, GTA: San Andreas, Tetris JR, Worms Blast, Horizon Chase Turbo, Star Wars: Knights of the Old Republic I/II, GunBound, Marathon, Ground Control, Ankh — Anniversary Edition, Clive Barker’s Jericho.
Além disso, podem ser observados novos lançamentos de projetos relacionados ao Wine:
- Foi formado o lançamento do projeto Wine Staging 11.17, que oferece compilações avançadas do Wine, incluindo patches não totalmente prontos ou arriscados, ainda inadequados para serem aceitos na ramificação principal do Wine. Em comparação com o Wine, o Wine Staging oferece 279 patches adicionais. No novo lançamento do Wine Staging, houve sincronização com a base de código do Wine 11.17 e o código do vkd3d foi atualizado. O patch que implementa a função SetThreadpoolTimerEx na biblioteca kernel32.dll foi transferido para o núcleo do Wine.
- Foi publicada a versão do pacote vkd3d 2.1 com uma implementação do Direct3D 12 que opera através da tradução de chamadas para a API gráfica Vulkan. O pacote inclui as bibliotecas libvkd3d com a implementação do Direct3D 12, libvkd3d-shader com um tradutor de modelos de shaders e libvkd3d-utils com funções para simplificar a portabilidade de aplicações Direct3D 12, além de um conjunto de exemplos demonstração, incluindo a portabilidade do glxgears para Direct3D 12. A biblioteca libvkd3d suporta a maioria das funcionalidades do Direct3D 12, incluindo ferramentas para gráficos e computação, filas e listas de comandos, descritores e descritores de pilha, assinaturas raiz, acesso não ordenado, Samplers, assinaturas de comando, constantes raiz, renderização indireta, métodos Clear*() e Copy*(). No libvkd3d-shader, a tradução de bytecode de modelos de shaders para a representação intermediária SPIR-V foi implementada.
Na nova versão do vkd3d:
- Foi adicionada ao suporte do HLSL a capacidade de realizar operações aritméticas com o tipo 'half' ao usar os modelos de shaders 4 e 5.
- No compilador de shaders HLSL, foram aprimoradas as verificações de dados de entrada e saída, implementada uma passagem para remover variáveis globais (uniform) não utilizadas nos modelos de shaders 1-3.
- No backend para a linguagem de shaders GLSL (OpenGL Shading Language), foi implementado o suporte para endereçamento indireto de registradores de entrada, operações atômicas de comparação e adição inteira, operações bitwise e barreiras, operações de carregamento/salvamento para UAV (Unordered Access View) e memória compartilhada de grupos de threads.
- Apoio aprimorado para o antigo formato binário de shaders Direct3D. Foram implementadas as instruções 'sub' e 'break_cmp', modificadores de instruções '_x2', '_x4', '_x8', '_d2', '_d4' e '_d8', assim como modificadores de operandos '_bias', '_x2' e '_bx2'.
- Ao converter para a representação intermediária de shaders SPIR-V, foi adicionado suporte a operações de conversão de números de ponto flutuante para inteiros de 64 bits.
- No libvkd3d-utils, o suporte para a API de reflexão de shaders foi expandido. Interfaces ID3D10ShaderReflection, ID3D10ShaderReflection1 e ID3D11ShaderReflection foram implementadas, assim como a maioria dos métodos das interfaces ID3D12ShaderReflection e ID3D12ShaderReflectionType.
- No vkd3d-compiler, foi adicionada a opção '—allow-half-globals', e no libvkd3d-shader, a flag VKD3D_SHADER_COMPILE_OPTION_BACKCOMPAT_ALLOW_HALF_GLOBALS para compilar variáveis globais com o tipo 'half' em uma representação com o tipo 'float'.
- Foi lançado o DXVK 3.1, que fornece uma implementação do DXGI (DirectX Graphics Infrastructure), Direct3D 8, 9, 10 e 11, funcionando por meio da tradução de chamadas para a API Vulkan. Para usar o DXVK, é necessário ter drivers com suporte à API Vulkan 1.4, como NVIDIA 575.51.02, Mesa AMD RADV 25.0, NVIDIA 25.1 e Intel ANV 25.1. O DXVK pode ser utilizado para rodar aplicativos e jogos 3D no Linux usando o Wine, atuando como uma alternativa de alto desempenho às implementações Direct3D integradas no Wine, que rodam sobre OpenGL.
Na nova versão:
- Adicionada a suporte para renderização incremental no DXGI, implementada por meio da extensão Vulkan VK_KHR_incremental_present, permitindo atualizar apenas as áreas alteradas na tela. Esta nova funcionalidade resolveu problemas de renderização no VirtualDJ e em diversos lançadores de jogos, como o Ubisoft Connect.
- Adicionada a suporte para criação de views de objetos de renderização (render target view) diretamente em buffers, o que resolveu problemas com a aparição de artefatos na renderização de nuvens em alguns jogos com o motor Frostbite, como Battlefield 3.
- Implementado o carregamento de bibliotecas para suporte a extensões específicas de GPU Intel (vendor extensions).
- Resolvidos problemas em jogos como Mabinogi, The Witcher 1, Ghost Recon Breakpoint, Mirrors Edge, RaceRoom Racing Experience.
- Lançada a versão 2.2 do projeto D7VK, que desenvolve a implementação das APIs gráficas Direct3D 3, 5, 6 e 7, propostas pela Microsoft em 1996, 1997, 1998 e 1999. O D7VK funciona através da tradução de chamadas para a API Vulkan e permite executar jogos retro vinculados às APIs Direct3D 3, 5, 6 e 7 no Linux usando o Wine. O código do projeto é escrito em C++ e é distribuído sob a licença Zlib. A base do desenvolvimento é o código do backend d3d9 do projeto DXVK — o D7VK converte as APIs Direct3D 3, 5, 6 e 7 em chamadas para Direct3D 9, que são então traduzidas para a API Vulkan. O desenvolvedor não tem intenção de integrar o D7VK ao DXVK, como foi feito com as implementações do Direct3D 8 e Direct3D 9 sobre Vulkan.
Na nova versão, houve a transição para funcionar sobre a versão DXVK 3.1, a verificação de buffers executáveis D3D3 foi reestruturada e o gerenciamento de referências (refcounting) para dispositivos D3D3 foi aprimorado, além de melhorias no processamento de texturas para D3D5/3. Foram feitas correções que melhoram o suporte a jogos: Palantírs in The Lord of the Rings, Resident Evil 2 e Frogger.
Fonte: opennet.ru
