Uma versão experimental da implementação open-source da API Win32 — Wine 10.20 foi publicada. Desde o lançamento da 10.19, 31 relatórios de erros foram fechados e 337 alterações foram feitas.
As alterações mais importantes:
- O pacote embutido Vkd3d com a implementação do Direct3D 12 foi atualizado para a versão 1.18.
- Uma janela de diálogo foi adicionada para exibir o progresso da digitalização de documentos.
- Continuação da implementação do mecanismo Reparse Point, que permite anexar dados adicionais a arquivos e diretórios, identificados através de tags. Suporte ao Reparse Point foi adicionado nas funções CreateHardLink(), SetFileAttributes(), FindNextFile(), MoveFileWithProgress().
- O refatoramento da implementação do Common Control foi continuado após a divisão da biblioteca COMCTL32 em módulos separados para as versões 5 e 6.
- Problema de encerramento inesperado de muitos jogos (como Syberia 2) ao usar o modo WoW64 em sistemas com GPU NVIDIA foi resolvido.
- Resolvendo o problema de lentidão na resposta ao pressionar teclas de controle de cursor em alguns jogos, como Might and Magic VI.
- Problema de travamento ou incapacidade de iniciar algumas versões do Windows de aplicativos que usam a biblioteca GTK, como Meld e Geany, foi resolvido.
- Relatórios de erros relacionados ao funcionamento de aplicativos foram fechados: SQL Server 2012/2014, instalador do MS Office 365, QuarkXPress 2024, TomTom MyDrive Connect 4.x, Spine, GenLauncher, grepwinNP3, PlayOnline Viewer, tlReader 10.1.0.2004, cmd.exe, CLM Explorer, HiveMQ CE 2025.5.
- Relatórios de erros relacionados ao funcionamento de jogos foram fechados: Civilization 1.2, StarCraft, Last Stand: Aftermath, Mega Man X DiVE, Wagotabi, Geneforge 1 — Mutagen.
O projeto Wine também lançou a versão do pacote vkd3d 1.18 com implementação do Direct3D 12, funcionando 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 o tradutor de shaders versão 4 e 5, e libvkd3d-utils com funções para facilitar a portabilidade de aplicativos Direct3D 12, além de um conjunto de exemplos demonstrativos, incluindo a porta do glxgears para Direct3D 12. O código do projeto é distribuído sob a licença LGPLv2.1.
A biblioteca libvkd3d suporta a maior parte das funcionalidades do Direct3D 12, incluindo ferramentas para gráficos e computação, filas e listas de comandos, descritores e descritores de heap, assinaturas raiz, acesso não ordenado, Samplers, assinaturas de comandos, constantes raiz, renderização indireta, métodos Clear*() e Copy*(). Na libvkd3d-shader é implementada a tradução de bytecode de modelos de shaders para uma representação intermediária SPIR-V. Suportam-se shaders de vértices, pixel, tesselação, computacionais e de geometria simples, serialização e desserialização de assinatura raiz. Entre as instruções de shader, são implementadas operações aritméticas, atômicas e de bit, operadores de comparação e controle de fluxo de dados, instruções sample, gather e load, operações de acesso não ordenado (UAV, Unordered Access View).
Na nova versão do vkd3d:
- Funções embutidas countbits(), firstbithigh(), firstbitlow(), frexp() e texCUBEbias() foram adicionadas à implementação da linguagem de shaders HLSL. Suporte a expressões condicionais com tipos inteiros foi implementado para os perfis Shader Model 1-3.
- No compilador de shaders HLSL, a compilação de código com operadores condicionais if/else foi otimizada. O cálculo de constantes na fase de compilação (constant folding) foi expandido. Agora, essa otimização pode ser aplicada a expressões do tipo "true ? x : y" e funções como asfloat(), asint(), asuint(), cos(), mad(), round() e sin().
- Foi adicionado à implementação da biblioteca libvkd3d do interface de programação ID3D12Device4 o método CreateCommandList1().
- Novas instruções de bytecode Direct3D foram adicionadas: bem, tex, texbem, texbeml e texcoord.
- O desenvolvimento da linguagem de shaders MSL (Metal Shading Language), utilizada pela Apple no API gráfico Metal, continuou. Foi adicionada a suporte a shaders computacionais, buffers de constantes que são inicializados instantaneamente, funções trigonométricas, operações de resto e varredura bit a bit.
- Na implementação da linguagem de shaders GLSL (OpenGL Shading Language), foram adicionadas operações de divisão e resto com números inteiros sem sinal, as funções sin() e cos(), e a capacidade de deslocar texels ao carregar texturas.
Além disso, a Valve lançou a versão VKD3D-Proton 3.0, uma ramificação da base de código vkd3d, criadas para melhorar o suporte ao Direct3D 12 no pacote de execução de jogos Proton. O VKD3D-Proton suporta alterações específicas para Proton, otimizações e melhorias para um melhor desempenho em jogos do Windows baseados em Direct3D 12, que ainda não foram incorporadas ao vkd3d principal. Entre as distinções, destaca-se a orientação para o uso de extensões modernas do Vulkan e as capacidades das versões mais recentes dos drivers gráficos para alcançar total compatibilidade com o Direct3D 12.
Entre as mudanças na nova versão do vkd3d-proton:
- O backend de shaders DXBC (DirectX ByteCode) foi reescrito, substituindo o backend vkd3d-shader. O novo backend resolveu problemas em muitos jogos que anteriormente surgiram devido à falta de funcionalidade necessária no vkd3d-shader, por exemplo, o jogo Red Dead Redemption 2 agora funciona em modo D3D12.
- Foi adicionada a suporte à tecnologia de super amostragem FSR4 (AMD FidelityFX Super Resolution).
- Foi acrescentada a suporte experimental a gráficos de tarefas D3D12 (Work Graphs).
- Foi introduzida a suporte experimental a micro mapas de opacidade (OMM — Opacity MicroMaps).
- Problemas em jogos como Star Citizen, Ninja Gaiden 4, Monster Hunter Wilds, Wreckfest 2, Satisfactory, Street Fighter 6, Death Stranding, Wuthering Waves, Dune, Spider-Man Remastered, Gray Zone Warfare, Rise of the Tomb Raider, Port Royal, Mafia: Definitive Edition, Final Fantasy Tactics foram solucionados.
Fonte: opennet.ru
