El equipo de Wine ha lanzado VKD3D 2.0 — una importante actualización de la biblioteca que implementa la funcionalidad de las aplicaciones con Direct3D 12 sobre Vulkan. VKD3D se utiliza en el upstream normal de Wine para dar soporte a aplicaciones D3D12; no debe confundirse con VKD3D-Proton, una rama de juegos independiente de Valve, utilizada en Proton/Steam Play.
El proyecto se distribuye bajo la licencia GNU Lesser General Public License 2.1 o posterior. El código fuente de la versión se ha publicado en el servidor de WineHQ, y también está disponible a través de los repositorios de Wine.
VKD3D 2.0 marcó la transición de la rama 1.19 directamente a una nueva versión mayor. El enfoque principal se ha centrado en el desarrollo del subsistema de shaders y la compatibilidad de bajo nivel con Direct3D 12.
Cambios clave:
Se ha mejorado el procesamiento de shaders HLSL. Se ha ampliado el soporte para el lenguaje HLSL: se han implementado más operaciones que ahora son procesadas correctamente por el compilador y el traductor VKD3D. Esto es importante para la ejecución de aplicaciones que utilizan sus propios shaders HLSL, y no solo el código bytecode precompilado.
Se ha mejorado el soporte para bytecode Direct3D legado. Se ha mejorado el manejo de antiguos tipos de bytecode Direct3D para compatibilidad con antiguos formatos de shaders y herramientas que todavía se encuentran en aplicaciones y motores.
Se ha mejorado la compatibilidad con DXIL. En VKD3D 2.0, se ha continuado el desarrollo del procesamiento de DXIL — la representación intermedia moderna de los shaders DirectX. Para D3D12, este es uno de los formatos clave, por lo que tales cambios afectan directamente la correcta ejecución de aplicaciones más nuevas.
Se han añadido mejoras para los efectos. La versión incluye cambios relacionados con efectos — mecanismos para describir y aplicar efectos gráficos en la pila Direct3D. Esto es más bien una parte de infraestructura, pero es importante para la compatibilidad con el código gráfico existente.
Se ha introducido soporte experimental para MSL. VKD3D 2.0 ha obtenido soporte experimental para la generación de MSL — Metal Shading Language. Esta dirección está relacionada con la portabilidad de la parte de shaders a plataformas donde Vulkan generalmente se utiliza a través de capas adicionales de compatibilidad.
Se han ampliado las interfaces y capacidades de depuración. Los desarrolladores han añadido nuevas interfaces y mejorado las herramientas de depuración de VKD3D, lo que debería facilitar el desarrollo, diagnóstico de errores y el futuro soporte de Direct3D 12 en Wine.
Cabe destacar que para la mayoría de los usuarios de Steam en Linux, el principal componente D3D12 sigue siendo VKD3D-Proton, y no un VKD3D común. Sin embargo, VKD3D sigue siendo una parte importante de Wine y sirve como la implementación básica de Direct3D 12 sobre Vulkan en el proyecto upstream.
Fuente: linux.org.ru
