Comenzó la prueba del primer candidato a lanzamientos de Wine 9.0, una implementación abierta de WinAPI. La base de código ha sido congelada antes del lanzamiento, que se espera para la segunda mitad de enero. En comparación con el lanzamiento de Wine 8.21, se han cerrado 52 informes de errores y se han realizado 391 cambios.
Cambios más importantes:
- El paquete integrado vkd3d con la implementación de Direct3D 12, que funciona mediante la traducción de llamadas a la API gráfica Vulkan, se ha actualizado a la versión 1.10.
- Se ha continuado el desarrollo de funcionalidades orientadas a permitir el uso de Wine en entornos basados en el protocolo Wayland sin utilizar XWayland y componentes X11. En el controlador winewayland.drv se ha añadido soporte para distribuciones de teclado. Se ha ampliado el soporte para la API gráfica Vulkan y se han añadido funciones vkQueuePresentKHR, vkGetDeviceGroupSurfacePresentModesKHR, vkGetPhysicalDevicePresentRectanglesKHR. Se ha agregado la función ClipCursor y se ha implementado la posibilidad de trabajar con coordenadas relativas al rastrear el movimiento del ratón.
- Con las últimas versiones de GnuTLS, se ha implementado el soporte para claves de cifrado DH (Diffie-Hellman).
- Se han cerrado informes de errores relacionados con las aplicaciones: Notepad, MS Word, Roon, eFilm Workstation 2.x/3.x, Athena’s Charm Table Search 0.35b, Process Explorer, Araxis Merge 2023.5877, Framemaker 8, Internet Download Manager, Air Jura, SpeedCommander, ModOrganizer, RestoreDC, Acid-V VST plugin, MIDITrail 1.4.0.
- Se han cerrado informes de errores relacionados con los juegos: For Honor, STEEP, Far Cry 5, NFS Most Wanted, Castlevania: Lords of Shadow 2, Eurobattle, Daily Chthonicle, Crimson Skies.
Además, cabe destacar la publicación por parte del proyecto Wine del paquete vkd3d 1.10 con la implementación de Direct3D 12, que funciona mediante la traducción de llamadas a la API gráfica Vulkan. El paquete incluye bibliotecas libvkd3d con la implementación de Direct3D 12, libvkd3d-shader con el traductor de shaders de modelos 4 y 5, y libvkd3d-utils con funciones para facilitar la portación de aplicaciones de Direct3D 12, así como un conjunto de ejemplos de demostración, incluyendo el puerto de glxgears a Direct3D 12. El código del proyecto se distribuye bajo la licencia LGPLv2.1.
La biblioteca libvkd3d soporta la mayor parte de las funcionalidades de Direct3D 12, incluyendo herramientas para gráficos y cálculos, colas y listas de comandos, descriptores y descriptores de montones, firmas raíz, acceso desordenado, Samplers, firmas de comandos, constantes raíz, renderizado indirecto, métodos Clear*() y Copy*(). En libvkd3d-shader se implementó la traducción de bytecode de versiones 4 y 5 de modelos de shaders a la representación intermedia SPIR-V. Se soportan shaders de vértices, píxeles, teselación, cómputo y de geometría simple, así como la serialización y deserialización de la firma raíz. Se han implementado instrucciones de shaders para operaciones aritméticas, atómicas y bitwise, operadores de comparación y control del flujo de datos, instrucciones sample, gather y load, y operaciones de acceso desordenado (UAV, Unordered Access View).
En la nueva versión, se continúa trabajando en la mejora del compilador de shaders en el lenguaje HLSL (High-Level Shader Language), disponible desde DirectX 9.0: se añadió soporte para la indexación dinámica de arreglos; se añadieron las expresiones 'break', 'continue' y 'switch'; se ampliaron las expresiones a las que se puede aplicar la fusión de constantes; se implementaron funciones incorporadas como ceil(), degrees(), radians(), fwidth(), tan(), tex2Dlod(), tex2Dproj(), texCUBEproj() y tex3Dproj().
Se han añadido nuevas interfaces de programación de aplicaciones Direct3D 12 (ID3D12Device5, ID3D12GraphicsCommandList5 e ID3D12Resource1) a la biblioteca libvkd3d y se ha implementado la capacidad de crear objetos de estado de tubería (pipeline state object). En libvkd3d-utils, se añadieron funciones auxiliares para manipular DXBC: D3DGetBlobPart(), D3DGetDebugInfo(), D3DGetInputAndOutputSignatureBlob(), D3DGetInputSignatureBlob(), D3DGetOutputSignatureBlob(), D3DStripShader(). Se añadieron opciones al compilador vkd3d-compiler: ‘—fragment-coordinate-origin’ y ‘—semantic-compat-map’.
Fuente: opennet.ru
