D8VK, una implementación de Direct3D 8 para DXVK
Hace pocos días se dio a conocer el lanzamiento de la primera versión estable del proyecto «D8VK 1.0», que ofrece una implementación de la API de gráficos Direct3D 8 que funciona a través de la traducción de llamadas a la API de Vulkan y permite usar Wine o Proton para ejecutar aplicaciones y juegos 3D desarrollados para Windows en Linux que están vinculados a la API de Direct3D 8.
Como muchos de ustedes sabrán en Linux contamos con VKD3D-Proton para la traducción de Direct3D 12 en Vulkan, ademas de que tambien contamos con Steam Play que usa DXVK para implementar las API de Direct3D 9/10/11 sobre Vulkan, pero para la antigua implementación de Direct3D 8, no había algo en concreto.
Es por ello que nace D8VK, que es la implementación de la antigua API de Microsoft Direct3D 8 sobre Vulkan para mejorar la experiencia de los juegos más antiguos.
D8VK 1.0 está marcado como el primer lanzamiento del proyecto, adecuado para uso y probado en cientos de juegos. En comparación con los proyectos WineD3D y d3d8to9, que utilizan la traducción de Direct3D 8 a OpenGL y Direct3D 9, el proyecto D8VK demuestra un mejor rendimiento, estabilidad y compatibilidad con los juegos.
Por ejemplo, cuando se probó en el paquete 3DMark 2001 SE, el proyecto D8VK obtuvo 144660 puntos, la combinación d3d8to9 y dxvk – 118033 y WineD3D – 97134.
El lanzamiento de D8VK 1.0 presenta d3d8.dll(d3d9 está vinculado estáticamente), asi como tambien un nuevo procesador por lotes personalizado para ciertos juegos con comportamiento indefinido.
Ademas de ello, tambien se destaca que admite la anulación de la declaración del sombreador de vértices para juegos con un comportamiento indefinido y que los búferes de vértices ahora se pueden almacenar en el grupo administrado automáticamente para mejorar el rendimiento y evitar problemas de orden de escritura.
Tambien se destaca que se implementa la compatibilidad con la compilación en MSVC asi como tambien que admite consultas de GetInfo y que los tipos de bloque de estado ahora son compatibles.
De los demás cambios que se destacan:
- Tamaños de descripción de superficie correctos según el formato
- Permitir preservar la instalación actual de Proton
- Innumerables configuraciones específicas del juego y características y ajustes menores
- Se corrigió un error por el que CreateTexture intentaba envolver una textura nula
- Se corrigieron los backbuffers que no se almacenan en caché ni se hace referencia al dispositivo propietario
- Texturas, flujos e índices fijos que no se borran al reiniciar
- Ubicación fija de Direct3DCreate8 en d3d8.def
- Se corrigió el conteo de referencias para los objetivos de representación, las plantillas de profundidad y las texturas.
- Se corrigieron los sombreadores de píxeles nulos que no se recordaban
- Se corrigieron los objetivos de representación y las plantillas de profundidad que no se almacenan en caché
- Se corrigió el error si el cliente intenta habilitar SWVP en un dispositivo de hardware
- Dispositivos fijos que no se liberan
- Se corrigió la falla de segmento en el dispositivo de liberación con texturas enlazadas
Finalmente si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.
Debes saber que el código del proyecto está escrito en lenguaje C++ y se distribuye bajo la licencia Zlib. El código base del proyecto DXVK con la implementación de Direct3D 9, 10 y 11 sobre Vulkan se utilizó como base para el desarrollo.
¿Como instalar D8VK en Linux?
Para aquellos que estén interesados en poder instalar D8VK, deben saber que su implementación es bastante sencilla y no requiere de mucho. Basta con abrir una terminal para poder obtener la nueva versión. En ella vamos a teclear el siguiente comando:
git clone https://github.com/AlpyneDreams/d8vk.git
O si prefieres realizar la descarga desde tu navegador (solo debes descomprimir el archivo y posicionarte en una terminal dentro de la carpeta) lo puedes hacer dando clic en este enlace.
Hecho esto, ahora vamos a ingresar al directorio con:
cd d8vk
Y procedemos a realizar la implementación de d8vk según sea el caso. Para implementarlo con Wine, debemos teclear lo siguiente:
./setup_d3d8.sh install --no-proton
O en el caso de querer implementarlo con Proton, el comando que deben teclear es el siguiente:
./setup_d3d8.sh install
Si quieres conocer más al respecto sobre su uso o instalación para casos particulares, puedes consultar el siguiente enlace.