Valve dio a conocer hace poco el lanzamiento de la nueva versión de VKD3D-Proton 2.9, una bifurcación del código base vkd3d, diseñada para mejorar la compatibilidad con Direct3D 12 en el lanzador de juegos Proton.
Para quienes aún desconocen de VKD3D-Proton deben saber que este admite cambios, optimizaciones y mejoras específicas de Proton para un mejor rendimiento de los juegos de Windows basados en Direct3D 12, que aún no se aceptan en la parte principal de vkd3d. Entre las diferencias, también hay un enfoque en el uso de extensiones Vulkan modernas y las capacidades de las versiones recientes de controladores de gráficos para lograr una compatibilidad total con Direct3D 12.
Como tal Valve usa la bifurcación especificada en el paquete basado en Wine para ejecutar los juegos de Windows Proton. El soporte de DirectX 9/10/11 en Proton se basa en el paquete DXVK y la implementación de DirectX 12 se ha basado hasta ahora en la biblioteca vkd3d (después de la muerte del autor de vkd3d, CodeWeavers continuó el desarrollo de este componente y la comunidad de wine).
Principales novedades de VKD3D-Proton 2.9
Este nuevo lanzamiento de VKD3D-Proton 2.9 se menciona que algunos juegos comenzaron a asumir que las DLL se diseñaron de manera similar a AgilitySDK, con lo cual la biblioteca d3d12core.dll se divide en un cargador (d3d12.dll) y una implementación principal (d3d12core.dll). Con este cambio ahora se deberan actualizar varios scripts para acomodar ambas DLL. Una vez que se instala d3d12.dll en un prefijo, solo se debe actualizar d3d12core.dll.
Otro de los cambios que se destaca de esta nueva versión, son las optimizaciones de rendimiento implementadas y es que en esta versión los requisitos de memoria fueron significativamente reducidos en la primera vez que se inicia la aplicación.
Tambien se destaca que se ha mejorado el rendimiento en el código que usa la extensión VK_EXT_descriptor_buffer, asi como tambien que se agregaron optimizaciones para sistemas con GPU Intel, AMD y NVIDIA.
Ademas de ello, se agregó compatibilidad con las interfaces de portabilidad D3D11On12, se eliminó el código con la implementación anterior de framebuffers virtuales (SwapChain), se agregó soporte para interfaces estándar de Linux para SwapChain y se corrigieron algunos problemas que ocurrían al usar los controladores NVIDIA y RADV.
Por otra parte, Vulkan 1.3 ahora se declara como la versión mínima requerida, ademas de que se agregó soporte para operaciones de acceso desordenado en rodajas (3D UAV, Vista de acceso desordenado), implementadas usando la extensión VK_EXT_image_sliced_view_of_3d.
De los demás cambios que se destacan de esta nueva versión:
- Se mejoro el comportamiento de VRAM cuando VK_EXT_pageable_device_local_memory sea compatible, lo cual permite implementar las API Evicty y MakeResident de una manera útil.
VK_EXT_memory_priority también se utiliza para dar prioridades estáticas como respaldo. - Soporte mejorado para DXR 1.1 al habilitar la extensión VK_EXT_pipeline_library_group_handles.
- Se agregó soporte para la extensión VK_EXT_fragment_shader_interlock.
- Compatibilidad mejorada con juegos que usan funciones específicas de AgilitySDK.
- Problemas resueltos en muchos juegos.
- En Wine, se hace uso de winevulkan.dll en lugar de vulkan-1.dll si está disponible.
- Mejoras en la compatibilidad con juegos que dependen de ciertos detalles de AgilitySDK.
- Mejoras en la compatibilidad del sistema de compilación con diferentes versiones widl
- VKD3D_CONFIG=dxr ahora también habilita DXR 1.1 y dxr11 se guarda para compat.
- Corrección del valor de luminancia mínima de metadatos HDR.
- Se añadió VKD3D_LIMIT_TESS_FACTORSpara solucionar el teselado excesivo. Habilitado para Wo Long.
- Solución de error de RADV que provoca un exceso de memoria en las cachés de shaders. Puede ahorrar varios cientos de MB de memoria, lo cual es importante en ciertos títulos que requieren mucha memoria para evitar la inestabilidad.
- Solución de error de NVIDIA con envíos de cola simultáneos utilizando timeline semaphores
- Se corrigieron un montón de Xid 109 CTX_SWITCH_TIMEOUTerrores inexplicables en muchos juegos diferentes.
Finalmente si estás interesado en poder conocer más al respecto sobre este nuevo lanzamiento, puedes consultar los detalles en el siguiente enlace.Y si quieres probar ya Proton en Steam, ya sabes que puedes instalar el cliente de Steam desde la web oficial, aunque también lo encontrarás en los repos de la mayoría de las distros.