Se ha publicado una versión experimental de la implementación abierta de la API Win32: Wine 11.10. Desde el lanzamiento de la 11.9 se han cerrado 17 informes de errores y se han realizado 248 cambios.
Cambios más importantes:
- El paquete integrado Vkd3d con la implementación de Direct3D 12 se ha actualizado a la versión 2.0.
- Se ha propuesto un soporte revisado para el lenguaje XPath, implementado sin el uso de la biblioteca libxml2.
- Se ha mejorado la compatibilidad con VBScript.
- Se han añadido stubs para el API ALPC (Advanced Local Procedure Call) en ntdll: NtAlpcCreatePort(), NtAlpcConnectPort(), NtAlpcAcceptConnectPort(), NtAlpcSendWaitReceivePort(), NtAlpcDisconnectPort() y NtAlpcImpersonateClientOfPort().
- Se ha mejorado el soporte para Bluetooth, añadiendo métodos BluetoothLEDeviceStatics::FromBluetoothAddressAsync, IBluetoothLEDevice::get_DeviceId, IBluetoothLEDevice::get_GattServices, IGattDeviceService::get_Uuid y IGattDeviceService::get_AttributeHandle.
- En la implementación de d3dx10 y d3dx11 se ha añadido la capacidad de cargar archivos DDS con arreglos de texturas. La función D3DX10LoadTextureFromTexture() ha añadido soporte para texturas 3D, texturas con niveles de detalle y generación de niveles MIP (MipMap).
- En la DLL win32u se han implementado las funciones NtUserGetMessagePos() y NtUserSetMessageExtraInfo().
- Se han cerrado informes de errores relacionados con el funcionamiento de aplicaciones: IrfanView, Kodak EasyShare, Git for Windows, Family Tree Maker 2017, Foxit PhantomPDF Business 10.0, Vocaloid 6, Photolemur 3,
TrackChecker. - Se han cerrado informes de errores relacionados con el funcionamiento de juegos: Star Wars Racer, Star Wars: Knights of the Old Republic, Age of Empires III: The Asian Dynasties.
El proyecto Wine también ha publicado una versión del paquete vkd3d 2.0 con la implementación de Direct3D 12, que funciona a través de 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 un traductor de modelos de sombreadores y libvkd3d-utils con funciones para simplificar la portabilidad de aplicaciones Direct3D 12, así como un conjunto de ejemplos de demostración, incluido el puerto 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 características de Direct3D 12, incluyendo herramientas para gráficos y cálculos, colas y listas de comandos, descriptores y descriptores de pilas, firmas raíz, acceso desordenado, samplers, firmas de comandos, constantes raíz, renderizado indirecto, métodos Clear*() y Copy*(). En libvkd3d-shader se ha implementado la traducción de bytecode de modelos de shaders a la representación intermedia SPIR-V. Se soportan shaders de vértices, píxeles, teselación, cómputo y shaders geométricos simples, así como la serialización y deserialización de la firma raíz. Se han implementado operaciones aritméticas, atómicas y bit a bit, operadores de comparación y control de flujo, instrucciones sample, gather y load, operaciones de acceso desordenado (UAV, Unordered Access View) a partir de instrucciones de shader.
En la nueva versión de vkd3d:
- La implementación del lenguaje de shaders HLSL ha añadido soporte inicial para bucles en 2-3 modelos de shaders, se ha habilitado la escritura en memoria compartida estructurada de grupos de hilos, se han implementado las funciones integradas tex3Dbias(), tex3Dlod() y texCUBElod(), y se ha garantizado el soporte para las semánticas SV_ClipDistance, SV_CullDistance y SV_StencilRef para el manejo de entrada y salida de los shaders.
- El compilador de shaders HLSL ha implementado la eliminación automática de cálculos duplicados, se ha asegurado el cálculo en la etapa de compilación de expresiones del tipo x % y con valores conocidos de antemano, y se ha mejorado la asignación de registros temporales. De acuerdo con los requisitos de la especificación HLSL, se ha ampliado el ámbito de visibilidad de las variables en los bucles 'for' (la variable permanece accesible después de finalizar el bucle). En el análisis de números decimales, se ha dejado de tener en cuenta la configuración regional (como separador, ahora siempre se utiliza el punto).
- Se ha mejorado el soporte para el antiguo formato binario de shaders Direct3D. Se han implementado instrucciones m4x4, m3x4, m4x3, m3x3, m3x2, phase, texdepth,
texreg2ar, texreg2gb, texreg2rgb. Se ha añadido soporte para los modificadores '_dz', '_db', '_dw' y '_da', que se pueden utilizar con las instrucciones texcrd y texld. Se ha añadido soporte para los registros 'vFace' y 'vPos' para trabajar con shaders de píxeles. - En DXIL (Direct3D Intermediate Language), en el código, en las operaciones de carga, almacenamiento, cambio atómico y comparación, se ha implementado la posibilidad de usar punteros a datos que se declaran más tarde.
- Se añadió soporte para constantes integradas de 16 bits en el ensamblador de sombreadores Direct3D, así como para los flags ‘64UAVs’,
‘ROVs’,
‘UAVLoadAdditionalFormats’,
‘UAVsAtEveryStage’,
‘allResourcesBound’,
‘enable11_1ShaderExtensions’,
‘int64Ops’,
‘nativeLowPrecision’,
‘stencilRef’,
‘viewportAndRTArrayIndex’ y
‘waveOps’. - Se implementaron opciones de compilación de sombreadores: VKD3D_SHADER_COMPILE_OPTION_DENORMAL_MODE_F16, VKD3D_SHADER_COMPILE_OPTION_DENORMAL_MODE_F32, VKD3D_SHADER_COMPILE_OPTION_DENORMAL_MODE_F64 y VKD3D_SHADER_COMPILE_OPTION_CONST_GLOBAL_UNIFORM.
Fuente: opennet.ru
