Ya fue liberada la nueva versión del proyecto D9VK 0.40 y estos son sus cambios mas importantes
Se acaba de anunciar el lanzamiento de la nueva versión del proyecto D9VK 0.40, que proporciona una implementación de Direct3D 9, la cual trabaja a través de la traducción de llamadas a la API gráfica de Vulkan. El proyecto se basa en la base de código del proyecto DXVK, que se amplió con soporte para Direct3D 9. En comparación con la implementación de Direct3D 9 basada en WineD3D, D9VK permite un mayor rendimiento, ya que la traducción de Direct3D 9 a través de OpenGL funciona más lentamente que la traducción a través de Vulkan.
D9VK se puede usar para ejecutar aplicaciones y juegos 3D en Linux usando Wine. Admite el lanzamiento de la mayoría de los juegos basados en Direct3D 9 utilizando la versión 2 o 3 del modelo Shader.
Principales novedades de D9VK 0.40
En esta nueva versión se implementó la capacidad de usar más de 4 GB de memoria de video en aplicaciones de 32 bits, lo que resolvió los problemas al iniciar los modos de juego Skyrim y Oblivion.
También se habilita el procesamiento asincrónico de la salida del resultado de representación a la pantalla (etapa de presentación). Para reducir los retrasos en la secuencia de representación principal, el procesamiento de salida se realiza en el hilo de envío de comandos.
Además de que el código para determinar el tiempo interno se transfirió al uso de un temporizador específico de la plataforma, que ayudó a resolver problemas con el comportamiento incorrecto de high_resolution_clock de MinGW.
Los búferes pendientes MANAGED y SYSTEMMEM se descargaron en el escenario antes de que se ejecuta PrepareDraw, lo que resolvió los problemas de rendimiento en Risen y Legend of the Heroes: Trails of the Sky.
Se eliminaron los puntos de sincronización excesiva del flujo de comandos al recuperar los datos solicitados.
Se agregó soporte para D3DTA_CONSTANT, que permitió implementar la representación correcta del efecto de brillo en los juegos SpinTyres y Mudrunner.
En el anuncio, tambien se destaca que se realizaron optimizaciones de rendimiento y se resolvieron los problemas que aparecen al lanzar diferentes juegos.
De los demás cambios que se destacan de esta nueva versión, podremos encontrar:
- Compatibilidad mejorada con DirectX 9Ex (D3D9Ex). Consideró los detalles del procesamiento de ResetEx y Reset.
- El código fue limpiado y refactorizado.
- Se proporciona un mapeo directo de los búferes WRITEONLY, que pueden afectar positivamente el rendimiento y evitar el error en el juego Counter-Strike: Global Offensive, lo que lleva a la grabación continua en el búfer después de que se desbloquea.
- Implementé el método SetDialogBoxMode, que permite usar cuadros de diálogo en aplicaciones de pantalla completa.
- Soporte implementado para la mezcla de vértices, incluida la mezcla de vértices indexados requerida para SWVP (SoftWare Vertex Processing).
- Se modificó el contador de muestra que se muestra en la parte superior de la imagen actual (pantalla de visualización, HUD).
- Se agregó la opción d3d9.dialogBoxMode, que se puede usar para deshabilitar el trabajo solo en modo de pantalla completa.
Además, se puede observar la intención del desarrollador del proyecto DXVK durante un tiempo para concentrar los esfuerzos solo en corregir errores, ralentizando la expansión de la funcionalidad. Este deseo fue causado por temores sobre una disminución en la calidad de la base del código y complicaciones de mantenimiento en el futuro.
Cada actualización de la rama 1.4.x genera quejas sobre cambios regresivos que no se pueden reproducir, localizar y eliminar.
Estos problemas requieren un análisis de las causas de su aparición, de lo contrario, dejarlos sin corregir mientras continúa desarrollando la funcionalidad solo puede agravar la situación y convertir el proceso de mantenimiento en una pesadilla.
De los planes que el desarrollador de DXVK tiene la intención de implementar antes de cambiar solo al modo de corrección de errores, dicen agregar soporte para algunas extensiones útiles de Vulkan y fusionarse con los desarrollos del proyecto D9VK.
Para quienes estén interesados en conocer más al respecto, podrán encontrar el código asi como los detalles de esta nueva versión los pueden conocer en el siguiente enlace.