Vsync

De Emulation Wiki
Ir a la navegación Ir a la búsqueda

Vsync (abreviatura de sincronización vertical) se utiliza para sincronizar la salida de video del juego con la frecuencia de actualización de su pantalla para evitar lo que llamamos Tearing (efecto en la pantalla como que se parte o desgarra en los desplazamientos horizontales).

En los emuladores, el vsync ha generado siempre ciertos problemas, como un aumento de latencia causado ​​por el búfer del controlador o el Stuttering de algunos juegos que se ejecutan a una frecuencia de actualización diferente a la del emulador. Los emuladores que se sincronizan con en el audio, también pueden experimentar el Stuttering de Vsync cuando los buffers de audio se superan o hay errores de tiempo. A continuación se analizan algunos métodos para mejorar el rendimiento de Vsync en emuladores con unos FPS fijos.

Control de Velocidad Estático

Este método de sincronización de audio ajusta al inicio la velocidad de entrada de audio para que coincida con la velocidad de salida de nuestro sistema, dentro de un cierto límite. Esto permite que Vsync funcione sin problemas incluso si la tasa de actualización de vídeo del juego no es la misma que la tasa de actualización de la pantalla actual. Los ajustes relativamente pequeños no deben dar lugar a diferencias notables de tono en el audio o problemas de velocidad, pero se notarán si son ajustes más grandes, por lo que generalmente se limita a solo un 5% de cambio en la tasa de audio (en una pantalla de 60Hz, esto permitirá que los juegos que oscilan entre 57Hz a 63Hz tengan un Vsync suave). Este ajuste no cambia después del inicio del emulador, por lo que las pequeñas variaciones en los tiempos de los frames causadas por su sistema aún pueden causar Stuttering de Vsync, a menos que pueda dar una medición exacta de los tiempos de su sistema, lo cual es muy difícil o imposible en muchos casos.

Se sabe que este método se implementa en Higan y RetroArch.

Control de Velocidad Dinámico

Este método reajusta la tasa de entrada de audio sobre la marcha para evitar que los buffers de audio se excedan o se agoten debido a imperfecciones de tiempo, lo que mantiene a Vsync funcionando sin problemas. La cantidad de ajuste está determinada por el delta de control de velocidad dinámico, que por lo general se establece por defecto en 0.5%, lo que se considera inaudible para el oído humano. Combinado con el control de velocidad estática al inicio, esto puede permitir que la emulación se sincronice casi perfectamente con su pantalla sin requerir una información del tiempo del sistema extremadamente exacta.

Se sabe que este método solo se implementa en RetroArch.

Sincronía Estricta de la GPU

Este método es para reducir la latencia asociada con el almacenamiento en búfer de Vsync en el controlador de video. Los fabricantes suelen implementar el almacenamiento en búfer en sus controladores de video para obtener mejores puntajes en los diversos test y un mejor rendimiento en los juegos de PC, pero esto es perjudicial para la latencia, lo cual es especialmente malo para la emulación de juegos antiguos que no se crearon teniendo en cuenta esta latencia. La sincronía estricta de la GPU fuerza al controlador de video a usar un único búfer para un número específico de cuadros por lo general usando en la extensión OpenGL ARB_sync, lo que podría mejorar la latencia. El almacenamiento en búfer para 0 cuadros es bastante exigente en cuanto al rendimiento y requiere que el emulador se ejecute muchas veces más rápido de lo necesario para funcionar a una velocidad máxima de 60 fps y evitar la caída de cuadros. El almacenamiento en búfer para 1 o más cuadros reduce los requisitos de rendimiento.

Se sabe que este método solo se implementa en RetroArch.

G-sync y FreeSync

Estos métodos son reemplazos para Vsync que están siendo desarrollados por Nvidia y AMD, respectivamente. Estos requieren una pantalla especial que los admita y permiten que la pantalla tenga una velocidad de cuadros variable para sincronizarse con el juego en lugar de que el juego se sincronice con la pantalla.

MAME puede hacer uso de esta funcionalidad para ejecutar juegos de arcade a su velocidad de actualización nativa sin Stuttering y sin diferencias de velocidad y tono de audio. RetroArch puede usarlo también si la sincronización estática y el control dinámico de velocidad están desactivados al configurar audio_max_timing_skew y audio_rate_control_delta a 0.0 en el archivos de configuración.


Enlaces Externos

Documento técnico que explica los detalles de cómo funciona el control de velocidad dinámico