Desgarro de pantalla - Screen tearing

Un artefacto típico de desgarro de video (imagen simulada)

El desgarro de la pantalla es un artefacto visual en la visualización de video en el que un dispositivo de visualización muestra información de varios fotogramas en un solo dibujo de pantalla.

El artefacto ocurre cuando la transmisión de video al dispositivo no está sincronizada con la frecuencia de actualización de la pantalla. Eso puede ser causado por frecuencias de actualización que no coinciden , y la línea de corte se mueve a medida que cambia la diferencia de fase (con una velocidad proporcional a la diferencia de velocidades de cuadro). También puede ocurrir simplemente por la falta de sincronización entre dos velocidades de cuadro iguales, y la línea de corte se encuentra en una ubicación fija que corresponde a la diferencia de fase. Durante el movimiento del video, el desgarro de la pantalla crea un aspecto desgarrado ya que los bordes de los objetos (como una pared o un árbol) no se alinean.

El desgarro puede ocurrir con las tecnologías de visualización y tarjetas de video más comunes, y es más notorio en imágenes que se mueven horizontalmente, como en las panorámicas de cámara lenta de una película o en los videojuegos clásicos de desplazamiento lateral.

El desgarro de la pantalla es menos notable cuando más de dos fotogramas terminan de renderizarse durante el mismo intervalo de actualización, ya que eso significa que la pantalla tiene varios desgarros más estrechos, en lugar de uno más ancho.

Prevención

Las formas de evitar la rotura de video dependen del dispositivo de visualización y la tecnología de la tarjeta de video, el software en uso y la naturaleza del material de video. La solución más común es utilizar varios búfer .

La mayoría de los sistemas utilizan almacenamiento en búfer múltiple y algunos medios de sincronización de los ciclos de actualización de la pantalla y la memoria de video.

Opción "TearFree" "boolean": deshabilita o habilita las actualizaciones TearFree. Esta opción obliga a X a realizar todo el renderizado en un backbuffer antes de actualizar la visualización real. Requiere una asignación de memoria adicional del mismo tamaño que un framebuffer, la copia adicional ocasional y requiere seguimiento de daños. Por lo tanto, habilitar TearFree requiere más memoria y es más lento (rendimiento reducido) e introduce una pequeña cantidad de latencia de salida, pero no debería afectar la latencia de entrada. Sin embargo, la actualización de la pantalla se realiza de forma sincrónica con la actualización vertical de la pantalla para que la actualización completa se complete antes de que la pantalla comience a actualizarse. Es decir, solo un marco es siempre visible, lo que evita un desgarro antiestético entre dos marcos visibles y diferentes. Tenga en cuenta que esto replica lo que debería estar haciendo el administrador de composición, sin embargo, TearFree redirigirá las actualizaciones del compositor (y las de los juegos de pantalla completa) directamente al escaneo, por lo que no incurrirá en gastos generales adicionales en el caso compuesto. También tenga en cuenta que no todos los administradores de composición evitan el desgarro, y si las salidas se rotan, seguirá habiendo desgarro sin TearFree habilitado.

-  Desde el controlador de GPU de código abierto de Intel, https://manpages.debian.org/buster/xserver-xorg-video-intel/intel.4.en.html

La sincronización vertical

La sincronización vertical es una opción en la mayoría de los sistemas en los que la tarjeta de video no puede hacer nada visible en la memoria de la pantalla hasta que el monitor finaliza su ciclo de actualización actual.

Durante el intervalo de supresión vertical , el conductor ordena a la tarjeta de video que copie rápidamente el área de gráficos fuera de la pantalla en el área de visualización activa ( almacenamiento en búfer doble ), o trate ambas áreas de memoria como visibles, y simplemente cambie entre ellas ( página voltear ).

Los adaptadores de video Nvidia y AMD brindan una opción 'Adaptive Vsync', que activará la sincronización vertical solo cuando la frecuencia de cuadros del software exceda la frecuencia de actualización de la pantalla, desactivándola en caso contrario. Eso elimina el tartamudeo que se produce cuando la velocidad de fotogramas del motor de renderizado cae por debajo de la frecuencia de actualización de la pantalla.

Alternativamente, tecnologías como FreeSync y G-Sync invierten el concepto y adaptan la frecuencia de actualización de la pantalla al contenido que proviene de la computadora. Dichas tecnologías requieren soporte específico tanto del adaptador de video como de la pantalla.

Complicaciones

Cuando se utiliza la sincronización vertical, la velocidad de fotogramas del motor de renderizado se limita a la velocidad de fotogramas de la señal de vídeo. Esa característica normalmente mejora la calidad del video, pero implica compensaciones en algunos casos.

Vibración

La sincronización vertical también puede causar artefactos en las presentaciones de video y películas, ya que generalmente se graban a velocidades de cuadro significativamente más bajas que las velocidades de cuadro típicas del monitor (24–30 cuadros / s). Cuando se reproduce una película de este tipo en un monitor configurado para una frecuencia de actualización típica de 60 Hz, el reproductor de video no cumple con la fecha límite del monitor con bastante frecuencia y los fotogramas intermedios se muestran un poco más rápido de lo previsto, lo que da como resultado un efecto similar a la vibración . (Consulte Telecine: diferencias de velocidad de fotogramas ).

Retraso de entrada

Los videojuegos, que utilizan una amplia variedad de motores de renderizado, tienden a beneficiarse visualmente de la sincronización vertical, ya que normalmente se espera que un motor de renderizado cree cada fotograma en tiempo real, en función de lo que especifiquen las variables del motor en el momento en que se solicita un fotograma. Sin embargo, debido a que la sincronización vertical provoca un retraso de entrada , interfiere con la naturaleza interactiva de los juegos y, en particular, interfiere con los juegos que requieren una sincronización precisa o tiempos de reacción rápidos.

Benchmarking

Por último, comparar una tarjeta de video o un motor de renderizado generalmente implica que el hardware y el software renderizan la pantalla lo más rápido posible, sin tener en cuenta las capacidades del monitor o el desgarro de video resultante. De lo contrario, el monitor y la tarjeta de video aceleran el programa de evaluación comparativa, provocando resultados no válidos.

Otras tecnicas

Algunos sistemas gráficos permiten que el software realice sus accesos a la memoria para que permanezcan en el mismo punto de tiempo en relación con el ciclo de actualización del hardware de pantalla, conocido como interrupción de trama o carrera del haz . En ese caso, el software escribe en las áreas de la pantalla que se acaban de actualizar, permaneciendo justo detrás del punto de actualización activo del monitor. Eso permite copiar rutinas o motores de renderizado con un rendimiento menos predecible siempre que el motor de renderizado pueda "ponerse al día" con el punto de actualización activo del monitor cuando se retrase.

Alternativamente, el software puede mantenerse un poco por delante del punto de actualización activo. Dependiendo de qué tan adelantado se decida permanecer, ese método puede exigir un código que copie o muestre la pantalla a una velocidad constante y fija. Demasiada latencia hace que el monitor supere al software en ocasiones, provocando artefactos de renderizado, roturas, etc.

El software de demostración en sistemas clásicos como Commodore 64 y ZX Spectrum frecuentemente explotaba esas técnicas debido a la naturaleza predecible de sus respectivos sistemas de video para lograr efectos que de otro modo serían imposibles.

Referencias