Foi lançado um lançamento experimental da implementação de código aberto da Win32 API — Wine 11.10. Desde o lançamento da versão 11.9, 17 relatórios de bugs foram fechados e 248 alterações foram feitas.
As alterações mais importantes:
- O pacote integrado Vkd3d com a implementação do Direct3D 12 foi atualizado para a versão 2.0.
- Foi proposta uma reformulação do suporte ao idioma XPath, implementada sem o uso da biblioteca libxml2.
- A compatibilidade com VBScript foi aprimorada.
- Stub APIs ALPC (Advanced Local Procedure Call) foram adicionados ao ntdll: NtAlpcCreatePort(), NtAlpcConnectPort(), NtAlpcAcceptConnectPort(), NtAlpcSendWaitReceivePort(), NtAlpcDisconnectPort() e NtAlpcImpersonateClientOfPort().
- O suporte ao Bluetooth foi aprimorado, com a adição dos métodos BluetoothLEDeviceStatics::FromBluetoothAddressAsync, IBluetoothLEDevice::get_DeviceId, IBluetoothLEDevice::get_GattServices, IGattDeviceService::get_Uuid e IGattDeviceService::get_AttributeHandle.
- Na implementação do d3dx10 e d3dx11, foi adicionada a capacidade de carregar arquivos DDS com arrays de texturas. A função D3DX10LoadTextureFromTexture() agora suporta texturas 3D, texturas com suporte a níveis de detalhe e a geração de níveis MIP (MipMap).
- As funções NtUserGetMessagePos() e NtUserSetMessageExtraInfo() foram implementadas na DLL win32u.
- Relatórios de erros relacionados a aplicativos foram fechados: IrfanView, Kodak EasyShare, Git for Windows, Family Tree Maker 2017, Foxit PhantomPDF Business 10.0, Vocaloid 6, Photolemur 3.
TrackChecker. - Relatórios de erros relacionados a jogos foram fechados: Star Wars Racer, Star Wars: Knights of the Old Republic, Age of Empires III: The Asian Dynasties.
O projeto Wine também publicou uma versão do pacote vkd3d 2.0 com uma implementação do Direct3D 12, funcionando através da tradução de chamadas para a API gráfica Vulkan. O pacote inclui bibliotecas libvkd3d com a implementação do Direct3D 12, libvkd3d-shader com um tradutor de modelos de sombreamento e libvkd3d-utils com funções para facilitar a portabilidade de aplicativos Direct3D 12, além de um conjunto de exemplos demonstrativos, incluindo a portabilidade 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:
- Na implementação da linguagem de shaders HLSL, foi adicionada suporte inicial para loops em 2-3 modelos de shaders, e agora é possível escrever em memória compartilhada estruturada de grupos de threads, implementadas funções embutidas tex3Dbias(), tex3Dlod() e texCUBElod(), além de suporte para as semânticas SV_ClipDistance, SV_CullDistance e SV_StencilRef para tratamento de entrada e saída de shaders.
- No compilador de shaders HLSL, foi implementada a remoção automática de cálculos duplicados, garantindo o cálculo em tempo de compilação de expressões como x % y com valores previamente conhecidos, além de um melhor gerenciamento de registradores temporários. Conforme as exigências da especificação HLSL, a visibilidade de variáveis em loops 'for' foi expandida (a variável permanece acessível após o término do loop). Ao analisar números decimais, a contagem de localidade foi interrompida (agora o ponto é sempre usado como separador).
- Foi melhorado o suporte ao antigo formato binário de shaders do Direct3D. Foram implementadas instruções m4x4, m3x4, m4x3, m3x3, m3x2, phase, texdepth,
texreg2ar, texreg2gb, texreg2rgb. Adicionou-se suporte a modificadores '_dz', '_db', '_dw' e '_da', que podem ser utilizados com as instruções texcrd e texld. Foi adicionado suporte aos registradores 'vFace' e 'vPos' para funcionamento com shaders de pixels. - No DXIL (Direct3D Intermediate Language), no código, nas operações de carregamento, armazenamento, alteração atômica e comparação, foi implementada a possibilidade de usar ponteiros para dados declarados posteriormente.
- O suporte a constantes internas de 16 bits e as flags '64UAVs' foram adicionados ao assembly de shaders Direct3D,
‘ROVs’,
‘UAVLoadAdditionalFormats’,
‘UAVsAtEveryStage’,
‘allResourcesBound’,
‘enable11_1ShaderExtensions’,
‘int64Ops’,
‘nativeLowPrecision’,
‘stencilRef’,
‘viewportAndRTArrayIndex’ e
‘waveOps’. - As opções de compilação de shaders foram implementadas: VKD3D_SHADER_COMPILE_OPTION_DENORMAL_MODE_F16, VKD3D_SHADER_COMPILE_OPTION_DENORMAL_MODE_F32, VKD3D_SHADER_COMPILE_OPTION_DENORMAL_MODE_F64 e VKD3D_SHADER_COMPILE_OPTION_CONST_GLOBAL_UNIFORM.
Fonte: opennet.ru
