Noticias

D7VK versión 2.1 ha mejorado los tiempos de carga para juegos retro

D7VK continúa mejorando la traducción de Direct3D 7, 6, 5 y 3 a Vulkan para traer mejoras a los juegos retro de Windows con Wine/Proton en Linux.

La versión lanzada más recientemente, 2.1, puso especial énfasis en optimizar los tiempos de carga para varios juegos, y el desarrollador señaló: «Algunos juegos pueden tener un gran impacto con tiempos de carga reducidos a la mitad o más… sin embargo, para empezar, normalmente no eran un problema en la primera versión de D3D».

También notaron que estaban llegando a una etapa de rendimientos decrecientes, pero que el código ahora «resultó ser mucho más manejable y mantenible, aunque no hay picos de rendimiento particularmente dramáticos para demostrar esta vez».

Imperio de la Tierra: El arte de la conquista
En la foto – Empire Earth: El arte de la conquista.

  • Reducción de los costos de creación de objetos (al reducir el seguimiento del ciclo de vida), lo que en general mejoró los tiempos de carga/inicio, con un impacto notable en varios juegos y todas las API compatibles.
  • Se corrigió un error de uso después de liberar al liberar una superficie de plantilla de profundidad adjunta, que extrañamente solo ocurría cuando se usaban archivos binarios compilados por MSVC/clang (gracias a @NemesisElectron por informarme sobre esto). Esto solucionó un bloqueo al iniciar en Arx Fatalis.
  • Se agregó una ruta directa opcional para GetDC/ReleaseDC llamadas que pueden mejorar el rendimiento en juegos que utilizan frecuentemente este tipo de llamadas. Tenga en cuenta que esta ruta también puede ralentizar aún más las cosas dependiendo de lo que esté haciendo el juego, por lo que su kilometraje puede variar. Aunque el FPS aumenta en Arx Fatalis se observó durante el juego en aproximadamente un 5-10%, pero, desafortunadamente, estuvo acompañado de una caída notable en el rendimiento al renderizar el menú principal. Ejemplo clásico»no puedes tener tu pastel y comértelo también«.
  • Se agregó una ruta optimista para la inicialización temprana de los buffers de vértices D3D7/6 que elimina cualquier pico de tiempo de fotograma cuando se accede inicialmente a un objeto. Sin embargo, esto no siempre es posible, por lo que dicha optimización depende totalmente del comportamiento del juego.
  • Mayor optimización del uso de registros para reducir la carga de la CPU y el uso general de la memoria, esta vez prácticamente sin impacto en las pruebas (esto fuerza tienen un impacto positivo en el rendimiento en escenarios con CPU limitadas en CPU (muy) lentas).
  • Se mejoró ligeramente el rendimiento de carga/descarga de la superficie y se agregaron algunos trucos más para ayudar a ignorar transferencias innecesarias en ciertos casos. Esto proporciona un aumento de rendimiento pequeño pero notable. Hoja de oscuridad, Jinete caballero, Cazador Silencioso II y posiblemente otros títulos cuando se muestren «rayos divinos».
  • Se cambiaron los objetos de DDraw y las bibliotecas auxiliares para reducir la sobrecarga cuando D7VK actúa como un proxy directo simple para DDraw. Esto está destinado principalmente a juegos que solo admiten DDraw, que se redirigirá completamente al DDraw nativo de WineD3D/Windows, pero también resultará en una sobrecarga ligeramente menor para las operaciones de DDraw relacionadas con D3D.
  • Se agregó una opción de configuración alternativa del centro de píxeles, así como una implementación fija de una función que corrige los artefactos de la imagen de fondo en Residente malvado 2 (lanzamiento al por menor). A todos los efectos prácticos, esta opción actuará como la antigua opción del controlador ATI/Nvidia del mismo nombre de la era Windows 9x/XP, cambiando la alineación del centro de píxeles medio texel. Tenga en cuenta que no hay razón para utilizar una solución alternativa fuera de las aplicaciones que se comportan mal, ya que CAUSARÁ artefactos, especialmente en cualquier texto mostrado.
  • Rendimiento general mejorado en proyecto IGI Y Sonic World DX utilizando buffers de vértices administrados.
  • Trabajó en patrones de acceso al búfer subóptimos en Imperio de la Tierra (:El arte de la conquista)mejorando el rendimiento de la CPU cuando hay muchos dispositivos a la vista.
  • Se corrigió el fondo del menú principal que faltaba en MechWarrior 3.
  • Gracias a @CkNoSFeRaTU ahora tenemos asistentes ProcessVertices() alternativos además de SSE2 que se utilizan al compilar para arquitecturas ARM. Se sabe que son más lentos y solo se introdujeron con fines de evaluación comparativa u otros fines académicos (no hay juegos DDraw nativos para ARM, por supuesto).
  • Se solucionó un problema por el cual las correcciones de descripción de superficies de DDraw se aplicaban incorrectamente, lo que a su vez podía resultar en una asignación incorrecta de tipo/formato de superficie en el backend de DXVK.
  • Soporte agregado R3G3B2 Superficies de color de 8 bits gracias a @CkNoSFeRaTU. Sin embargo, esto está desactivado de forma predeterminada porque en la mayoría de los casos la falta de soporte obliga a los juegos a cambiar a formatos de color de 16 bits, lo que mejora la calidad de la imagen. La segunda razón para dejarlo deshabilitado es que en algunos casos dichas superficies pueden fallar por completo cuando se crean debido a una limitación de WineD3D.
  • Se amplió la opción de configuración de enmascaramiento del modo de 8 bits para filtrar cualquier modo de color de 8 bits informado por DDraw durante la enumeración del modo de visualización.
  • Copia y almacenamiento en caché optimizados de la estructura de restricciones del dispositivo, así como la enumeración de dispositivos, lo que mejora el rendimiento en los casos en que los juegos abusan de dichas llamadas. Esto permitió reducir el tiempo de lanzamiento inicial en imperio de la tierra (antes de que suene la introducción) a aproximadamente un segundo, en lugar de 3-4 segundos.

🌐 Fuentes externas: GitHub-d7vk-v2.1
Artículo tomado de MuyLinux.xyz.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba